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

监听会议状态与处理错误

BIMMeetingListener 同时提供 Session 状态、会议邀请消息、会议状态消息和错误回调。监听器使用弱引用保存,应用需要强持有监听对象。

注册会议监听

objc
[[BIMManager sharedInstance] addMeetingListener:self];

- (void)onMeetingSession:(BIMMeetingSession *)session
          snapshotChanged:(BIMMeetingSnapshot *)snapshot {
    self.muteButton.selected = snapshot.localMediaState.isMicrophoneMuted;
    self.cameraButton.selected = snapshot.localMediaState.isCameraEnabled;

    if (snapshot.state == BIMMeetingSessionStateEnded) {
        [session detachRenderView];
        self.meetingSession = nil;
    }
}

- (void)onMeetingSession:(BIMMeetingSession *)session
         didFailWithCode:(BIMCallErrorCode)code
                    desc:(NSString *)desc {
    NSLog(@"meeting error: %ld %@", (long)code, desc);
}

页面或应用级监听器销毁时移除监听:

objc
[[BIMManager sharedInstance] removeMeetingListener:self];

处理会议消息

objc
- (void)onMeetingInviteMessage:(BIMMeetingInviteMessage *)message {
    NSLog(@"invite: %@ %@", message.meetingNumber, message.meetingName);
    // 查询最新 BIMMeeting 后再决定是否展示加入入口。
}

- (void)onMeetingStatusMessage:(BIMMeetingStatusMessage *)message {
    NSLog(@"status: %ld", (long)message.eventType);
}
消息类型来源可用字段
BIMMeetingInviteMessageTemplateBody / WORKPLUS_MEET名称、会议号、预约时间、入会链接
BIMMeetingStatusMessage音视频 Membership 消息WAITING、STARTED、CANCELED、ENDED、操作者和成员

两类消息仍会进入普通 BIMMsgListener 和消息存储。会议列表、通知和聊天 Cell 可以消费这些消息,但 Session UI 必须以 Snapshot 为准。

使用 Session 状态

Session 状态UI 建议
Connecting保持加载,等待媒体连接
Connected开放媒体控制和会议计时
Reconnecting保留页面和 Session,显示重连
Ending禁用控制按钮
Ended卸载画面并释放业务引用

媒体参数获取或入会失败会以 1、2、4 秒退避自动重试最多 3 次。每次重试前 SDK 会重新查询会议详情并获取新的媒体参数;接入方不要缓存 token 或创建新的 Session。

处理常见错误

错误场景处理
BIMCallErrorInvalidArgument会议号、主题或预约时间无效修正输入后重试
BIMCallErrorAlreadyActive已有 Call 或 Meeting Session返回现有音视频页面
BIMCallErrorInvalidStateSession 已结束仍控制媒体禁用按钮并退出页面
BIMCallErrorMediaUnavailable只集成 Core 或运行时未加载检查 BIMSdk/Call 集成
BIMCallErrorJoinRoomFailed媒体房间连接失败展示 Reconnecting,等待自动重试
BIMCallErrorSignalingFailed创建、查询或操作请求失败记录 desc,允许用户重试

完整错误码见音视频接入总览

公共头文件不暴露 Jitsi 类型。宿主负责业务 UI、铃声,以及需要时的 PushKit/CallKit 集成。