Cannot even run the project

hi ,
i am a junior iOS developer looking forward to implement video call between 2 users with share screen to be later connected to a current flutter project

i am using the last version of the SDK “ios-mobilertc-all-5.2.41739.1022-clientlog”

To Reproduce(If applicable)
Steps to reproduce the behavior:
1.i i extracted the .zip file
2. added my tokens :zoom sdk key and secret keys in the appdelegate.h file
3.followed step by step with the documentation till : build and run part

  1. i see errors in xcode regarding
    a- MobileRTCSample has conflicting provisioning settings. MobileRTCSample is automatically signed, but code signing identity iPhone Distribution: Mohamed Dwidar (HA945TD4V3) has been manually specified. Set the code signing identity value to “Apple Development” in the build settings editor, or switch to manual signing in the Signing & Capabilities editor

b- Provisioning profile “iOS Team Provisioning Profile: *” doesn’t support the App Groups capability.Provisioning profile “iOS Team Provisioning Profile: *” doesn’t support the group.zoom.us.MobileRTCSampleExtensionReplayKit App Group.Provisioning profile “iOS Team Provisioning Profile: *” doesn’t include the com.apple.security.application-groups entitlement.
c- Signing for “MobileRTCSampleScreenShare” requires a development team.

5- i can only run the app on simulator if i dont touch any things in sign in and capabilities section( i will provide screenshots for this problem)

Screenshots

Smartphone (please complete the following information):

  • Device: Simulator 13.1 or iphone X running ios 14
  • OS: iOS 14
  • Version :5.2.41739.1022

Additional context
i have some other question regarding the scale of the project
1- is it possible to have the ids of the meeting generated from the backend so that in our app users can click to open the video call
2- any recommendation for implementing share screen (next step)
3- any recommendation or advice regarding flutter (i know right now it’s not supported by zoom team but i would like to implement it natively )

thanks for helping beginners

Hello @mohammed.adel.sorour

Thank you for using the dev forum! I would be happy to help you get going :slight_smile:

Firstly, if you are having trouble getting started we also provide a repo specifically for getting going with the SDK that may be easier: https://github.com/zoom/client-sdk-iOS-getting-started.

Regarding the error you are getting in the sample app: A provisioning profile must be provided to be able to run the app on a device, if you are unfamiliar with provisioning profiles here is a useful article about them: https://blog.theodo.com/2017/02/a-beginners-guide-to-ios-provisioning-profiles/
To resolve the error you must replace the provisioning profile, that is set by default in that app, with your own provisioning profile. There are a couple ways to do this but I think this is the easiest way:

  1. In Xcode log into your Apple Developer account (or if you do not have an Apple Developer account you can use a standard Apple account). This is under Xcode -> Preferences -> Accounts.
  2. Navigate to the project file -> Click the MobileRTCSample target -> Signing and Capabilities
  3. Under “Signing” check the box that says “Automatically Manage Signing”, and also select your Apple account from the “Team” dropdown.
  4. You should now receive a different error. Now change the “Bundle Identifier” to a unique ID for your app. This must be in reverse domain order, so an example of a bundle ID would be “com.michael.michaelsApp”.
  5. Repeat this process for the MobileRTCScreenShare target. However, when you get to the Bundle Identifier step, take the bundle ID from the previous target and append “.screenshare”. So the Bundle Identifier for this target would be “com.michael.michaelsApp.screenshare”.
  6. While we are in the MobileRTCSampleScreenShare target, navigate to “Build Settings” and search for “Provisioning Profile”, then click on the line shown in this screen shot and delete it.
  7. Now we need to take care of the App Group ID. In both the MobileRTCSample target and the MobileSampleScreenShare target
    You should see this:
    Screen Shot 2020-11-06 at 11.11.42 AM
    Uncheck that box in both targets.
  8. Again in both targets, click the plus button shown in the screenshot above.
  9. You will be prompted to provide an app group ID. This is going to be similar to the bundle identifiers but will start with “group.”. I like to append my main target’s bundle Identifier to this, meaning it would be something like “group.com.michael.michaelsApp”. One important thing to note here is that this app group ID must be the same in both targets.
  10. The errors should now be resolved.

Regarding your questions:

  1. You may set your own meeting ID’s upon starting or scheduling a meeting.
  2. Yes, screensharing is a bit complicated on iOS so we have made a tutorial here: https://marketplace.zoom.us/docs/sdk/native-sdks/iOS/mastering-zoom-sdk/in-meeting-function/screen-share
  3. As for flutter, I am not sure unfortunately. The SDK will work within flutter, but Zoom’s developer support for flutter is currently limited.

Please let me know if you run into any other issues or have any questions, we are here to help :slight_smile:
Thanks!
Michael

michael i cannot thank you enough , i have wasted hours and hours digging here and their for a solution . you in few informative steps solved most of my problems in mins .these step SHOULD by documented in the offical zoom documentation please
thanks a lot i will try them and ask you again for any new erros thanks

1 Like

i have successfully run the simple ios client sdk
app but
when i run the sdk with share screen following ur steps i coudlnt join any meeting the meeting alert pop up => i enter the correct meeting id and password but nothing happen
" 2020-11-07 22:23:59.539272+0200 MobileRTCSample[596:23557] [Common] _BSMachError: port 13203; (os/kern) invalid capability (0x14) "Unable to insert COPY_SEND"

2020-11-07 22:24:08.146081+0200 MobileRTCSample[596:23557] alertView.tag == 0
"

thanks again for your help

Hey @mohammed.adel.sorour,

I am happy to hear you got the app running!

For the meeting issue you are facing, are you using the latest version of the sample app/SDK?

Thanks!
Michael

@Michael_Condon you are very responsive an focused about my question . i cannot thank you enough
right now i did finished playing with simple client sdk

my problem is the share screen sdk is not responsive
the “Meet now” option is not working , the gear icon is now responsive has no action

the join meeting button open an popup with meeting id and password but join now does nothing also
only dismiss the popup

Hey @mohammed.adel.sorour

Have you provided a domain and sdk key/secret or JWT?

Thanks!
Michael

Hi,
Sorry but I have the same problem. I mean

the “Meet now” option is not working , the gear icon is now responsive has no action the join meeting button open an popup with meeting id and password but join now does nothing also
only dismiss the popup

My JWT token was generated by https://jwt.io/ (according to appKey).
In my case [[MobileRTC sharedRTC] getMeetingService] = nil.

Best regards, Vasilij.

Hey @vasiliorlov1984

Thanks for using the dev forum!

If [[MobileRTC sharedRTC] getMeetingService] returns nil, the SDK has not been initialized properly yet. This usually happens because the jwt provided was not valid, or a domain was not specified.

Could you provide the payload of your JWT to troubleshoot? Please replace your sdk key and secret with an empty string before posting.

Thanks!
Michael

Hi, Michael.

Thank you for your advise. I’ve checked my payload and found a mistake. But now I’ve got the another an error “SDK authentication failed, error code:8”. The [[MobileRTC sharedRTC] getMeetingService] returns nil , yet.

My payload is:

{
 "appKey": "CuT99***OgNd",
 "iat": 1605239022,
 "exp": 1617249022,
 "tokenExp": 1616249022

}

“appKey” was taken from my app credentials (App Marketplace) field “SDK Key”.
I don’t use a “secret” info, because I saw the next comment in AppDelegate.h

  • You can generate a jwttoken on the https://jwt.io/
  • with this payload:
  • {
  • "appKey": "string", // app key
    
  • "iat": long, // access token issue timestamp
    
  • "exp": long, // access token expire time
    
  • "tokenExp": long // token expire time
    
  • }

Best regards, Vasilij.

I think It’s not important, because it’s a test application.

My jwt token and domain are:

#define KjwtToken @“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJDdVQ5OWh4amJLRWdaaDZ1U081U1N5cXhTZXU4TmRTSE9nTmQiLCJpYXQiOjE2MDUyMzkwMjIsImV4cCI6MTYxNzI0OTAyMiwidG9rZW5FeHAiOjE2MTYyNDkwMjJ9.FTUPn3Kml_Jqk022UpG5IN4lVKrks-9k5OybBYUPyRA”
#define kSDKDomain @“stylesoft.arphys.by”

Best regards, Vasilij

Hey @vasiliorlov1984

Awesome! Glad to hear :slight_smile:

Can you try changing the domain to “zoom.us”?

Thanks!
Michael

Hi, Michael

I’ve got an Auth error 5 in this case.

Best regards, Vasilij Orlov

Hey @vasiliorlov1984,

This error means that the key and secret used for your JWT are not tied to a valid Zoom SDK app account. Make sure you are using the SDK key and secret from the SDK tile of Zoom Marketplace and not from the JWT tile in the Zoom marketplace.

Also make sure you have provided the secret to the secret field within jwt.io. Also make sure that “secret base64 encoded” is left unchecked.

Thanks!
Michael

1 Like

Hi Michael,
Thank you for you advice.
I see you point, but I suggest that this is another problem here.
I’ve integrade Zoom SDK to my application.
The Auth function (see code below) return success:

    //MARK: - Provide SDK Key and Secret for Authorization of SDK Initialization.
private func setupSDK(sdkKey: String, sdkSecret: String) {
    let context: MobileRTCSDKInitContext = MobileRTCSDKInitContext()
    context.domain = "zoom.us"
    context.enableLog = true
    // Initialize the SDK
    let sdkInitSuc = MobileRTC.shared().initialize(context)
    
    if sdkInitSuc {
        // Get Auth Service
        if let authService: MobileRTCAuthService = MobileRTC.shared().getAuthService() {
            authService.clientKey = sdkKey
            authService.clientKey = sdkSecret
            authService.delegate = self
            // Call Authentication function to authenticate the SDK
            authService.sdkAuth()
        }
    }
}
//MARK: - MobileRTCAuthDelegate
extension AppDelegate: MobileRTCAuthDelegate {
    func onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError) {
       //return success 
    }
}

Than I’ve tried to call a meeting service, but It alwas returns nil.(the same as sample application)
if let meetService: MobileRTCMeetingService = MobileRTC.shared().getMeetingService() { }

Best regards, Vasilij Orlov.

Hey @vasiliorlov1984,

When are you calling getMeetingService? Sometimes a race condition can exist between the SDK authorizing and the services being available. Can you try calling getMeetingService within
func onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError)?

Thanks!
Michael

1 Like

Hi, Michael.
Thank you for you help. :handshake:
I’ve found out my mistake.
I should change
from:
authService.clientKey = sdkSecret
to:
authService.clientSecret = sdkSecret

p.s.
But I do not catch why a function onMobileRTCAuthReturn returned a success result before.

Best regards, Vasilij Orlov

i am still facing the same issue ,Meeting now is not clickable and i know nothing about generation JWt

i think such huge and well established platform like zoom should have well documented updated documentation that carry any developer regarding his past experience to the level of implementing his SDK in ihis app and it will decrease the number of posts in the community here

Hey @vasiliorlov1984,

Awesome I am glad to hear it is working now! :slight_smile:

Please let us know if you have any other issues or questions.

Thanks!
Michael

Hey @mohammed.adel.sorour,

I am sorry that this is a confusing process. Zoom values security very much, and JWT’s are the best option for verifying developer authenticity for the SDK’s. I know this must be frustrating as JWT’s are very complicated the first time.

You can also use your SDK Key and SDK Secret, instead of a JWT within the sample application:
Inside SDKAuthPresenter.m, there is a line of code: authService.jwtToken = jwtToken;
Remove that line of code, and add:
authService.clientKey = @“add your SDK key here”;
authService.clientSecret = @“add your SDK secret here”;

Then in AppDelegate.h, put “zoom.us” inside of kSDKDomain:
#define kSDKDomain @“zoom.us”.

Please let me know if you are able to join a meeting from there. I would recommend starting a meeting through the Zoom app on your desktop machine, then joining it through the sample iOS app to verify that is working. If that works, then I would try using a JWT again.

If you need further assistance please tag this post in an email to developersupport@zoom.us, and I would be more than happy to assist you further.

Thanks!
Michael