Skip to content
v1
文档/iOS SDK/开发指南

开始、加入和控制会议

组织者调用 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