TUICallObserver API 简介
TUICallObserver 是 TUICallEngine 对应的回调事件类,您可以通过此回调,来监听自己感兴趣的回调事件。
回调事件概览
API  | 描述  | 
通话过程中错误回调  | |
通话请求的回调  | |
通话接通的回调  | |
通话结束的回调  | |
通话未接通的回调  | |
xxxx 用户拒绝通话的回调  | |
xxxx 用户不响应的回调  | |
xxxx 用户忙线的回调  | |
xxxx 用户被追加邀请加入通话时的回调  | |
xxxx 用户加入通话的回调  | |
xxxx 用户离开通话的回调  | |
xxxx 用户是否有视频流的回调  | |
xxxx 用户是否有音频流的回调  | |
所有用户音量大小的反馈回调  | |
所有用户网络质量的反馈回调  | |
当前用户被踢下线  | |
在线时票据过期  | 
回调事件详情
onError
错误回调。
说明:
SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示。
- (void)onError:(int)code message:(NSString * _Nullable)message;
参数如下表所示:
参数  | 类型  | 含义  | 
code  | int  | 错误码  | 
message  | NSString  | 错误信息  | 
onCallReceived
收到一个新的来电请求回调,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
- (void)onCallReceived:(NSString *)callId callerId:(NSString *)callerId calleeIdList:(NSArray<NSString *> *)calleeIdList mediaType:(TUICallMediaType)mediaType info:(TUICallObserverExtraInfo *)info;
参数如下表所示:
参数  | 类型  | 含义  | 
callId  | NSString  | 此次通话的唯一 ID  | 
callerId  | NSString  | 主叫 ID(邀请方)  | 
calleeIdList  | NSArray  | 被叫 ID 列表(被邀请方)  | 
mediaType  | 通话的媒体类型,比如视频通话、语音通话  | |
info  | 其他信息  | 
onCallBegin
表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来开启云端录制、内容审核等流程。
- (void)onCallBegin:(NSString *)callId mediaType:(TUICallMediaType)mediaType info:(TUICallObserverExtraInfo *)info;
参数如下表所示:
参数  | 类型  | 含义  | 
callId  | NSString  | 此次通话的唯一 ID  | 
mediaType  | 通话的媒体类型,视频通话、语音通话  | |
info  | 其他信息  | 
onCallEnd
表示通话挂断,主叫和被叫都可以收到,您可以通过监听这个事件来显示通话时长、通话类型等信息,或者来停止云端的录制流程。
- (void)onCallEnd:(NSString *)callId mediaType:(TUICallMediaType)mediaType reason:(TUICallEndReason)reason userId:(NSString *)userId totalTime:(float)totalTime info:(TUICallObserverExtraInfo *)info;
参数如下表所示:
参数  | 类型  | 含义  | 
callId  | NSString  | 此次通话的音视频房间 ID  | 
mediaType  | 通话的媒体类型,视频通话、语音通话  | |
reason  | 通话结束原因  | |
userId  | NSString  | 结束通话的用户 ID  | 
totalTime  | float  | 此次通话的时长,单位:秒  | 
info  | 其他信息  | 
注意:
客户端的事件一般都会随着杀进程等异常事件丢失掉,如果您需要通过监听通话时长来完成计费等逻辑,建议可以使用 REST API 来完成这类流程。
onCallNotConnected
表示此次通话主叫取消、被叫超时、拒接等,涉及多个场景,您可以通过监听这个事件来实现类似未接来电、重置 UI 状态等显示逻辑。
主叫取消:主叫收到该回调(userId 为自己);被叫收到该回调(userId 为主叫的 ID)。
被叫超时:主叫会同时收到 onUserNoResponse 和 onCallNotConnected 回调(userId 是自己的 ID);被叫收到 onCallNotConnected 回调(userId 是自己的 ID)。
被叫拒接:主叫会同时收到 onUserReject 和 onCallNotConnected 回调(userId 是自己的 ID);被叫收到 onCallNotConnected 回调(userId 是自己的 ID)。
被叫忙线:主叫会同时收到 onUserLineBusy 和 onCallNotConnected 回调(userId 是自己的 ID)。
异常中断:被叫接收通话失败,收到该回调(userId 是自己的 ID)。
- (void)onCallNotConnected:(NSString *)callId mediaType:(TUICallMediaType)mediaType reason:(TUICallEndReason)reaso userId:(NSString *)userId info:(TUICallObserverExtraInfo *)info
参数如下表所示:
参数  | 类型  | 含义  | 
callId  | NSString  | 此次通话的音视频房间 ID  | 
mediaType  | 通话的媒体类型,视频通话、语音通话  | |
reason  | 通话未连接原因  | |
userId  | NSString  | 导致通话未连接的用户 ID  | 
info  | 其他信息  | 
onUserReject
通话被拒绝的回调,在1v1 通话中,只有主叫方会收到拒绝回调,在群组通话中,所有被邀请者都可以收到该回调。
- (void)onUserReject:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 拒绝用户的 ID  | 
onUserNoResponse
对方无回应的回调。
- (void)onUserNoResponse:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 无响应用户的 ID  | 
onUserLineBusy
通话忙线回调。
- (void)onUserLineBusy:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 忙线用户的 ID  | 
onUserInviting
用户被追加邀请加入通话时的回调。
- (void)onUserInviting:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 被追加邀请用户的 ID  | 
onUserJoin
有用户进入此次通话的回调。
- (void)onUserJoin:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 加入当前通话的用户 ID  | 
onUserLeave
有用户离开此次通话的回调。
- (void)onUserLeave:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 离开当前通话的用户 ID  | 
onUserVideoAvailable
用户是否开启视频上行回调。
- (void)onUserVideoAvailable:(NSString *)userId isVideoAvailable:(BOOL)isVideoAvailable;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 通话用户 ID  | 
isVideoAvailable  | BOOL  | 用户视频是否可用  | 
onUserAudioAvailable
用户是否开启音频上行回调。
- (void)onUserAudioAvailable:(NSString *)userId isAudioAvailable:(BOOL)isAudioAvailable;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 通话用户 ID  | 
isAudioAvailable  | BOOL  | 用户音频是否可用  | 
onUserVoiceVolumeChanged
用户通话音量的回调。
- (void)onUserVoiceVolumeChanged:(NSDictionary <NSString *, NSNumber *> *)volumeMap;
参数如下表所示:
参数  | 类型  | 含义  | 
volumeMap  | NSDictionary  | 音量表,根据每个 userId 可以获取对应的音量大小,音量最小值为0,音量最大值为100  | 
onUserNetworkQualityChanged
用户网络质量的回调。
- (void)onUserNetworkQualityChanged:(NSArray<TUINetworkQualityInfo *> *)networkQualityList;
参数如下表所示:
参数  | 类型  | 含义  | 
networkQualityList  | NSArray  | 网络状态,根据每个 userId 可以获取对应用户当前的网络质量  | 
onKickedOffline
当前用户被踢下线:此时可以 UI 提示用户,并重新调用初始化。
- (void)onKickedOffline;
onUserSigExpired
在线时票据过期:此时您需要生成新的 userSig,并重新调用初始化。
- (void)onUserSigExpired;
废弃回调
onCallCancelled
表示此次通话主叫取消、被叫超时、拒接等,涉及多个场景,您可以通过监听这个事件来实现类似未接来电、重置 UI 状态等显示逻辑。
主叫取消:主叫收到该回调(userId 为自己);被叫收到该回调(userId 为主叫的 ID)。
被叫超时:主叫会同时收到 onUserNoResponse 和 onCallCancelled 回调(userId 是自己的 ID);被叫收到 onCallCancelled 回调(userId 是自己的 ID)。
被叫拒接:主叫会同时收到 onUserReject 和 onCallCancelled 回调(userId 是自己的 ID);被叫收到 onCallCancelled 回调(userId 是自己的 ID)。
被叫忙线:主叫会同时收到 onUserLineBusy 和 onCallCancelled 回调(userId 是自己的 ID)。
异常中断:被叫接收通话失败,收到该回调(userId 是自己的 ID)。
- (void)onCallCancelled:(NSString *)userId;
参数如下表所示:
参数  | 类型  | 含义  | 
userId  | NSString  | 用户的 ID  | 
onCallMediaTypeChanged
表示通话的媒体类型发生变化。
- (void)onCallMediaTypeChanged:(TUICallMediaType)oldCallMediaType newCallMediaType:(TUICallMediaType)newCallMediaType;
参数如下表所示:
参数  | 类型  | 含义  | 
oldCallMediaType  | 旧的通话类型  | |
newCallMediaType  | 新的通话类型  |