Overview
Important
See UI legal notices for Zoom legal notices and how to display them in your app.
Enable the custom meeting UI
To use your custom meeting UI, enable it before you start or join a meeting.
[[MobileRTC sharedRTC] getMeetingSettings].enableCustomMeeting = YES

Once the custom meeting UI feature is enabled, then starting or joining a meeting is the same:
Start a meeting
{
#if 0
//customize meeting title
[ms customizeMeetingTitle:@"Sample Meeting Title"];
#endif
}
//Start a meeting
MobileRTCMeetingStartParam * param = nil;
// Check whether the user is logged in
if ([[[MobileRTC sharedRTC] getAuthService] isLoggedIn]) {
MobileRTCMeetingStartParam4LoginlUser * user = [[[MobileRTCMeetingStartParam4LoginlUser alloc]init]autorelease];
param = user;
param.meetingNumber = kSDKMeetNumber; // if kSDKMeetNumber is empty, it's a instant meeting.
param.isAppShare = appShare;
}
else
{
//Sample: How to Get Token or ZAK via RestAPI
NSString * token = [self requestTokenOrZAKWithType:MobileRTCSampleTokenType_Token];
NSString * ZAK = [self requestTokenOrZAKWithType:MobileRTCSampleTokenType_ZAK];
MobileRTCMeetingStartParam4WithoutLoginUser * user = [[[MobileRTCMeetingStartParam4WithoutLoginUser alloc]init] autorelease];
user.userType = MobileRTCUserType_APIUser;
user.meetingNumber = kSDKMeetNumber;
user.userName = kSDKUserName;
user.userToken = token;
user.userID = kSDKUserID;
user.isAppShare = appShare;
user.zak = ZAK;
param = user;
}
MobileRTCMeetError ret = [ms startMeetingWithStartParam:param];
return;
Join a meeting
MobileRTCMeetingService *ms = [[MobileRTC sharedRTC] getMeetingService];
if (ms)
{
#if 0
//customize meeting title
[ms customizeMeetingTitle:@"Sample Meeting Title"];
#endif
ms.delegate = self;
//For Join a meeting with password
NSDictionary *paramDict = @{
kMeetingParam_Username:kSDKUserName,
kMeetingParam_MeetingNumber:meetingNo,
kMeetingParam_MeetingPassword:pwd,
//kMeetingParam_ParticipantID:kParticipantID,
//kMeetingParam_WebinarToken:kWebinarToken,
//kMeetingParam_NoAudio:@(YES),
//kMeetingParam_NoVideo:@(YES),
};
// //For Join a meeting
// NSDictionary *paramDict = @{
// kMeetingParam_Username:kSDKUserName,
// kMeetingParam_MeetingNumber:meetingNo,
// kMeetingParam_MeetingPassword:pwd,
// };
MobileRTCMeetError ret = [ms joinMeetingWithDictionary:paramDict];
NSLog(@"onJoinaMeeting ret:%d", ret);
}
Create a custom meeting UI

Assign customized UI meeting delegate
To implement a custom meeting UI, firstly assign
MobileRTCCustomizedUIMeetingDelegate to your
StartJoinMeetingPresenter (Meeting View).
#import "SDKStartJoinMeetingPresenter.h"
@interface SDKStartJoinMeetingPresenter (CustomizedUIMeetingDelegate)<MobileRTCCustomizedUIMeetingDelegate>
@end

Then, in your StartJoinMeetingPresenter.m file, implement these two functions.
@implementation SDKStartJoinMeetingPresenter (CustomizedUIMeetingDelegate)
- (void)onInitMeetingView
{
// Create & Present View Controller
NSLog(@"onInitMeetingView....");
CustomMeetingViewController *vc = [[CustomMeetingViewController alloc] init];
self.customMeetingVC = vc;
[vc release];
[self.rootVC addChildViewController:self.customMeetingVC];
[self.rootVC.view addSubview:self.customMeetingVC.view];
[self.customMeetingVC didMoveToParentViewController:self.rootVC];
self.customMeetingVC.view.frame = self.rootVC.view.bounds;
...
}
- (void)onDestroyMeetingView
{
// Remove & Dismiss View Controller
NSLog(@"onDestroyMeetingView....");
NSLog(@"onDestroyMeetingView....");
[self.customMeetingVC willMoveToParentViewController:nil];
[self.customMeetingVC.view removeFromSuperview];
[self.customMeetingVC removeFromParentViewController];
self.customMeetingVC = nil;
...
}