Join Meeting not working

Description
My approach was to design a User interface that collects Username and Meeting No. I have written some lines to Initialize SDK, Authenticate and parse params to join meeting but nothing seems to work when I tap join meeting. Please help.

Which version?
5.0.24433.0616

Smartphone (please complete the following information):
Xcode Simulator

Additional context
This is what my code looks like:

MyAppController.h

//

// MyAppController.h

#import <UIKit/UIKit.h>

#define kSDKDomain @ “zoom.us

NS_ASSUME_NONNULL_BEGIN

@interface MyAppController : UIViewController

//- (void)joinMeeting:ViewControllerNo withUsername:(NSString*)meetingUser;

@property ( weak , nonatomic ) IBOutlet UITextField *MeetingNumber;

//@property (weak, nonatomic) IBOutlet UITextField *MeetingName;

@property ( weak , nonatomic ) IBOutlet UITextField *Username;

//@property (weak, nonatomic) IBOutlet UIButton *BackToFrontNavigation;

@end

NS_ASSUME_NONNULL_END

MyAppController.m

//
// MyAppController.m
//

#import “MyAppController.h”
#import “MobileRTC/MobileRTC.h”
#import “Universal-Swift.h”

#define kSDKDomain @ “zoom.us
#define KjwtToken @ “”
#define zoomclientKey @ “Gkz*********************************************”
#define zoomclientSecret @ “gxZ*********************************************”

@interface MyAppController ()
@end

@implementation MyAppController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.MeetingNumber.borderStyle = UITextBorderStyleRoundedRect;
    self.Username.borderStyle = UITextBorderStyleRoundedRect;

    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIDeviceOrientationPortrait] forKey:@“orientation”];

    //1. initSDK
    // [MobileRTC initializeWithDomain:kSDKDomain enableLog:YES];
    // [[MobileRTC sharedRTC] setMobileRTCDomain:kSDKDomain];

      MobileRTCSDKInitContext *context = [[MobileRTCSDKInitContext alloc] init];
      context.domain = kSDKDomain;
      context.enableLog = YES;
      context.locale = MobileRTC_ZoomLocale_Default;
    

}

  • (void)SDKAuth
    {
    MobileRTCAuthService *authService = [[MobileRTC sharedRTC] getAuthService];
    if (authService)
    {
    authService.delegate = self;
    authService.clientKey = zoomclientKey;
    authService.clientSecret = zoomclientSecret;
    // Here need add your jwtToken, if jwtToken is nil or empty,We will user your clientKey and clientSecret to Auth, We recommend using JWTToken.
    authService.jwtToken = KjwtToken;
    [authService sdkAuth];
    }
    }

//- (IBAction)backToFrontNavigationBtnTouched:(id)sender {
//FrontNavigationController *obj =[[FrontNavigationController alloc] init];
//use this to go back home
//[self.navigationController popToRootViewControllerAnimated:YES];

//MyAppController *myzoomstart = [MyAppController alloc];
//UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myzoomstart];
//nav.modalPresentationStyle = UIModalPresentationFormSheet;
//[self presentViewController:nav animated:YES completion:NULL];

//[self.MyAppController pushViewController:obj animated:YES];
//back button code in here

//UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
//MyAppController *secondViewController = [story instantiateViewControllerWithIdentifier:@"SWRevealViewController"];

//secondViewController.modalPresentationStyle = UIModalPresentationOverFullScreen;
//secondViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
//[self presentViewController:secondViewController animated:YES completion:nil];

//}

  • (IBAction)onJoinMeetingBtnTouched:(id)sender {
    // Step 1: get meeting number and Username
    NSString *meetingUser = self.Username.text;
    NSString *meetingNo = self.MeetingNumber.text;
    NSLog(@“Meeting Number is: %@”, meetingNo);
    //NSLog(@“Meeting Password is:%@”,pwd);
    // Step 2: Hide key board on clicking the button.
    [self.MeetingNumber endEditing:YES];
    //[self.MeetingPassword endEditing:YES];
    // Step 3: Call joinMeeting method.
    if ([meetingNo length]) {
    [self joinMeeting:meetingNo withUsername:(NSString *)meetingUser];
    }
    }

  • (void)joinMeeting:(NSString*)meetingNo withUsername:(NSString*)meetingUser{
    NSLog(@“meetingNO: %@”, meetingNo);
    if(![meetingNo length]) {
    // If the meeting number is empty, return error.
    NSLog(@“Please enter a meeting number”);
    return;
    } else {
    // If the meeting number is not empty.
    MobileRTCMeetingService *service = [[MobileRTC sharedRTC] getMeetingService];
    if (service) {
    service.delegate = self;
    // initialize a parameter dictionary to store parameters.
    NSDictionary *paramDict = @{
    kMeetingParam_Username: meetingUser,
    kMeetingParam_MeetingNumber: meetingNo,
    //kMeetingParam_MeetingPassword: pwd,
    };
    MobileRTCMeetError response = [service joinMeetingWithDictionary:paramDict];
    NSLog(@“onJoinMeeting, response: %d”, response);
    }
    }
    }

-(BOOL) shouldAutorotate{
return NO;
}

  • (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
    }
    /*
    #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }
    */
    @end

Hello Team, any help with this?

Hi @Tobiak,

Thanks for the post. Could you provide an SDK log for us to further investigate this issue? When the issue happens, terminate the app and wait for a few seconds and then fetch the log.

Thanks!

I have successfully initialized SDK in my Project’s AppDelegate.swift this way;

import MobileRTC


let context : MobileRTCSDKInitContext = MobileRTCSDKInitContext.init()
context.domain = “zoom.us
context.enableLog = true
MobileRTC.shared().initialize(context)

And created ViewController.m (OBJ-C) and collected join meeting param (with storyboard User Interface).

At the moment, app is able to join meeting using the frameworks found in this download " ios-mobilertc-all-5.0.24433.0616-clientlog" (Emulator and Real Device).

But when I replace those frameworks with the ones from this download link below:

https://github.com/zoom/zoom-sdk-ios/archive/master.zip”,

my app freezes at launch screen. See screenshot added:

App target is iOS 11
Xcode Version 11.5

Frameworks added to project:
MobileRTC.framework
MobileRTCScreenShare.framework
MobileRTCResources.bundle

Kindly help please.

I solved this already.
So I did the following under Target > General > Frameworks,Libraries and embedded Contents:

Changed MobileRTC.framework and MobileRTCScreenShare.framework to “Embed and Sign”

Also at Target > Build Phases > Link Binary with Libraries
Changed the above frameworks to “Required”.

There is still a problem however. This is the list of errors show when trying to distribute to Appstore:

App Store Connect Operation Error
Invalid Mach-O Format. The Mach-O in bundle “Myapp.app/Frameworks/MobileRTCScreenShare.framework” isn’t consistent with the Mach-O in the main bundle. The main bundle Mach-O contains arm64(machine code), while the nested bundle Mach-O contains armv7(machine code) and arm64(machine code). Verify that all of the targets for a platform have a consistent value for the ENABLE_BITCODE build setting.

App Store Connect Operation Error
Invalid Bundle Structure - The binary file ‘Myapp.app/Frameworks/MobileRTCScreenShare.framework/MobileRTCScreenShare’ is not permitted. Your app can’t contain standalone executables or libraries, other than a valid CFBundleExecutable of supported bundles. Refer to the Bundle Programming Guide at https://developer.apple.com/go/?id=bundle-structure for information on the iOS app bundle structure.

App Store Connect Operation Error
Invalid Info.plist value. The value for the key ‘MinimumOSVersion’ in bundle Myapp.app/Frameworks/MobileRTCScreenShare.framework is invalid. The minimum value is 8.0

App Store Connect Operation Error
The binary is invalid. The executable ‘Myapp.app/Frameworks/MobileRTCScreenShare.framework/MobileRTCScreenShare’ has type ‘OBJECT’ that is not valid. Only ‘EXECUTE’ is permitted.

App Store Connect Operation Error
The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been built with Apple’s linker.

App Store Connect Operation Error
Missing load commands. The executable at ‘Myapp.app/Frameworks/MobileRTCScreenShare.framework’ does not have the necessary load commands. Try rebuilding the app with the latest Xcode version. If you are using third party development tools, contact the provider.

Hi @Tobiak,

Thanks for the post. Regarding the issue you are facing, please try the following:

  1. In the build setting of your broadcast extension, please set Bitcode to NO. Or you could use lipo to decouple the MobileRTCScreenShare.framework into an arm64 only framework. The framework includes both arm64 and armv7.
  2. Set the minimumOSVersion in the MobileRTCScreenShare.framework/Info.plist to be 8.0. We will enhance this part in the next release.

Hope this helps. Thanks!