房间事件回调
应用程序可以通过 RCRTCRoom 对象的 delegate 属性设置注册 RCRTCRoomEventDelegate 代理委托。
设置代理后,App 可以监听房间状态及资源变化。在会议模式下,参会的远端用户状态变化都会触发通知。直播模式下,仅主播角色的远端用户会触发通知。
提示
RCRTCRoomEventDelegate 代理不会返回直播模式下观众相关的事件。原因如下:
- 观众只可订阅主播资源,不能发布资源,其操作对直播并无任何影响。
- 观众数量通常较多,如果应用针对观众进出直播间及订阅事件都进行处理,对应用程序的性能造成严重负面影响。
状态相关
远端用户加入通知
当有远端参会用户(或远端主播用户)加入时触发。因主播加入房间后才能发布资源,该回调代表远端参会用户(或远端主播用户)刚刚加入,此时并无任何资源发布,所以当前也订阅不到该用户的任何媒体流。
接口原型
Objective C
- (void)didJoinUser:(RCRTCRemoteUser *)user;
参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user | RCRTCRemoteUser | 是 | 远端用户对象 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
// 设置代理
RCRTCRoom *room = [[RCRTCEngine sharedInstance] getRoom:@"roomId"];
room.delegate = self;
// 实现代理方法
- (void)didJoinUser:(RCRTCRemoteUser *)user {
NSLog(@"远端用户加入:%@", user.userId);
}
远端用户离开通知
当有远端参会用户(或远端主播用户)离开房间时触发,此时 SDK 会自动取消订阅该用户已发布的流,无需手动调用 unsubscribeStream 方法。
接口原型
Objective C
- (void)didLeaveUser:(RCRTCRemoteUser *)user;
参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user | RCRTCRemoteUser | 是 | 远端用户对象 |
代码示例
Objective C
- (void)didLeaveUser:(RCRTCRemoteUser *)user {
NSLog(@"远端用户离开:%@", user.userId);
}
远端用户掉线通知
当有远端参会用户(或远端主播用户)掉线时触发,代表该用户意外与融云服务断连超过 1 分钟。网络不好、App 意外崩溃或用户主动杀进程等情况,都会造成客户端与融 云服务断连。如 1 分钟内没有恢复,则会被服务判定掉线,此时 SDK 会自动取消订阅该用户的所有资源,无需手动调用 unsubscribeStream 方法。
接口原型
Objective C
- (void)didOfflineUser:(RCRTCRemoteUser *)user;
参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user | RCRTCRemoteUser | 是 | 远端用户对象 |
代码示例
Objective C
- (void)didOfflineUser:(RCRTCRemoteUser *)user {
NSLog(@"远端用户掉线:%@", user.userId);
}
远端用户音频静默状态变更通知
当远端参会用户(或远端主播用户)调用了音频流的 isMute 方法时触发。通过 stream 对象能拿到该用户 userId,参数 mute 为远端参会用户(或远端主播用户)更新后的值,YES 代表音频静默,NO 代表恢复正常。
接口原型
Objective C
- (void)stream:(RCRTCInputStream *)stream didAudioMute:(BOOL)mute;
参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| stream | RCRTCInputStream | 是 | 音频输入流对象 |
| mute | BOOL | 是 | 音频静默状态,YES 代表音频静默,NO 代表恢复正常 |
代码示例
Objective C
- (void)stream:(RCRTCInputStream *)stream didAudioMute:(BOOL)mute {
NSLog(@"用户 %@ 音频状态变更:%@", stream.userId, mute ? @"静默" : @"正常");
}