开始、加入和控制会议
组织者调用 startMeetingWithNumber:,其他成员调用 joinMeetingWithNumber:。两者成功后都会返回 BIMMeetingSession 并占用全局音视频资源。
开始会议
objc
BIMMeetingEnterOptions *options = [BIMMeetingEnterOptions new];
options.initialMicrophoneMuted = NO;
options.initialCameraEnabled = YES;
options.preferredAudioOutput = BIMAudioVideoAudioOutputSpeaker;
[[BIMManager sharedInstance] startMeetingWithNumber:@"123456789"
options:options
succ:^(BIMMeetingSession *session) {
self.meetingSession = session;
[session attachRenderViewToContainer:self.meetingContainer
succ:nil
fail:nil];
} fail:^(int code, NSString *desc) {
NSLog(@"start failed: %d %@", code, desc);
}];加入会议
objc
BIMMeetingEnterOptions *options = [BIMMeetingEnterOptions new];
options.initialMicrophoneMuted = YES;
options.initialCameraEnabled = NO;
options.preferredAudioOutput = BIMAudioVideoAudioOutputSystem;
[[BIMManager sharedInstance] joinMeetingWithNumber:@"123456789"
options:options
succ:^(BIMMeetingSession *session) {
self.meetingSession = session;
[session attachRenderViewToContainer:self.meetingContainer
succ:nil
fail:nil];
} fail:^(int code, NSString *desc) {
NSLog(@"join failed: %d %@", code, desc);
}];options 可以传 nil,此时使用 SDK 默认媒体状态。成功回调只表示本地 Session 已建立,媒体连接状态由 BIMMeetingSnapshot 更新。
控制媒体和画面
objc
[session setMicrophoneMuted:YES succ:nil fail:nil];
[session setCameraEnabled:NO succ:nil fail:nil];
[session switchCameraWithSucc:nil fail:nil];
[session setAudioOutput:BIMAudioVideoAudioOutputSpeaker succ:nil fail:nil];
[session setScreenSharing:YES succ:nil fail:nil];控件最终状态以 snapshot.localMediaState 为准。建议等到 Connected 后开放切换摄像头和屏幕共享;连接中只展示初始麦克风、摄像头和音频输出状态。
页面临时消失时只卸载画面:
objc
[self.meetingSession detachRenderView];画面容器重新出现后,可以再次调用 attachRenderViewToContainer:,不需要重新加入会议。
本地离会
objc
[self.meetingSession leaveWithSucc:^{
[self.meetingSession detachRenderView];
self.meetingSession = nil;
} fail:^(int code, NSString *desc) {
NSLog(@"leave failed: %d %@", code, desc);
}];后台没有普通会议 leave 接口,因此 leaveWithSucc: 只退出本地媒体房间,不代表会议已经结束,也不应把后台会议状态改成 Ended。
Call 与 Meeting 共用全局媒体占用。同一时刻只能有一个活跃音视频 Session;已有 Session 时主动进入另一场音视频会返回 BIMCallErrorAlreadyActive。
