腾讯云即时通信IMTUICallObserver_AI解决方案_同尘科技
TUICallObserver API 简介
TUICallObserver 是 TUICallKit 对应的回调事件类,您可以通过此回调,来监听自己感兴趣的回调事件。
回调事件概览
API | 描述 |
onError | 通话过程中错误回调 |
onCallReceived | 通话请求的回调 |
onCallCancelled | 通话取消的回调 |
onCallBegin | 通话接通的回调 |
onCallEnd | 通话结束的回调 |
onCallMediaTypeChanged | 通话媒体类型发生改变的回调 |
onUserReject | xxxx 用户拒绝通话的回调 |
onUserNoResponse | xxxx 用户不响应的回调 |
onUserLineBusy | xxxx 用户忙线的回调 |
onUserJoin | xxxx 用户加入通话的回调 |
onUserLeave | xxxx 用户离开通话的回调 |
onUserVideoAvailable | xxx 用户是否有视频流的回调 |
onUserAudioAvailable | xxx 用户是否有音频流的回调 |
onUserVoiceVolumeChanged | 所有用户音量大小的反馈回调 |
onUserNetworkQualityChanged | 所有用户网络质量的反馈回调 |
onKickedOffline | 当前用户被踢下线 |
onUserSigExpired | 在线时票据过期 |
回调事件详情
通过 addObserver 监听Flutter插件抛出的事件。
TUICallEngine.instance.addObserver(TUICallObserver( onError: (int code, String message) { //您的回调处理逻辑 },onCallCancelled: (String callerId) { //您的回调处理逻辑 }, onCallBegin: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole) { //您的回调处理逻辑 }, onCallEnd: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole, double totalTime) { //您的回调处理逻辑 }, onCallMediaTypeChanged: (TUICallMediaType oldCallMediaType, TUICallMediaType newCallMediaType) { //您的回调处理逻辑 }, onUserReject: (String userId) { //您的回调处理逻辑 }, onUserNoResponse: (String userId) { //您的回调处理逻辑 }, onUserLineBusy: (String onUserLineBusy) { //您的回调处理逻辑 }, onUserJoin: (String userId) { //您的回调处理逻辑 }, onUserLeave: (String userId) { //您的回调处理逻辑 }, onUserVideoAvailable: (String userId, bool isVideoAvailable) { //您的回调处理逻辑 }, onUserAudioAvailable: (String userId, bool isAudioAvailable) { //您的回调处理逻辑 }, onUserNetworkQualityChanged: (List networkQualityList) { //您的回调处理逻辑 }, onCallReceived: (String callerId, List calleeIdList, String groupId, TUICallMediaType callMediaType) { //您的回调处理逻辑 }, onUserVoiceVolumeChanged: (Map volumeMap) { //您的回调处理逻辑 }, onKickedOffline: () { //您的回调处理逻辑 }, onUserSigExpired: () { //您的回调处理逻辑 } ));
onError
错误事件回调。说明SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示。
TUICallEngine.instance.addObserver(TUICallObserver( onError: (int code, String message) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
code | int | 错误码 |
message | String | 错误信息 |
onCallReceived
收到一个新的来电请求回调,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
TUICallEngine.instance.addObserver(TUICallObserver( onCallReceived: (String callerId, List calleeIdList, String groupId, TUICallMediaType callMediaType) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
callerId | String | 主叫 ID(邀请方) |
calleeIdList | List | 被叫 ID 列表(被邀请方) |
groupId | String | 群组ID |
callMediaType | TUICallMediaType | 通话的媒体类型,示例:TUICallMediaType.video 或 TUICallMediaType.audio |
onCallCancelled
表示此次通话主叫取消、被叫超时、拒接等等,涉及多个场景,您可以通过监听这个事件来实现类似未接来电、重置UI状态等显示逻辑。主叫取消:主叫收到该回调(userId 为自己);被叫收到该回调(userId 为主叫的 ID)。被叫超时:主叫会同时收到 onUserNoResponse 和 onCallCancelled 回调(userId 是自己的 ID);被叫收到 onCallCancelled 回调(userId 是自己的 ID)。被叫拒接:主叫会同时收到 onUserReject 和 onCallCancelled 回调(userId 是自己的 ID);被叫收到 onCallCancelled 回调(userId 是自己的 ID)。被叫忙线:主叫会同时收到 onUserLineBusy 和 onCallCancelled 回调(userId 是自己的 ID);被叫收到 onCallCancelled 回调(userId 是自己的 ID)。异常中断:被叫接收通话失败,收到该回调(userId 是自己的 ID)。
TUICallEngine.instance.addObserver(TUICallObserver( onCallCancelled: (String userId) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 用户的 ID |
onCallBegin
表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来开启云端录制、内容审核等流程。
TUICallEngine.instance.addObserver(TUICallObserver( onCallBegin: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole) { //您的回调处理逻辑 }));
// TUIRoomId的定义如下class TUIRoomId { int intRoomId; TUIRoomId({required this.intRoomId}); Map toJson() { final Map data = {}; data['intRoomId'] = intRoomId; return data; }}
// TUICallRole定义如下enum TUICallRole { none, caller, called}
参数如下表所示:
参数 | 类型 | 含义 |
roomId | TUIRoomId | 此次通话的音视频房间 Id,目前仅支持数字房间号,通过TUIRoomId(intRoomId: int) 获得对象 |
callMediaType | TUICallMediaType | 通话的媒体类型,示例:TUICallMediaType.video 或 TUICallMediaType.audio |
callRole | TUICallRole | 角色,枚举类型:主叫(TUICallRole.caller )、被叫(TUICallRole.called ) |
onCallEnd
表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来显示通话时长、通话类型等信息,或者来停止云端的录制流程。
TUICallEngine.instance.addObserver(TUICallObserver( onCallEnd: (TUIRoomId roomId, TUICallMediaType callMediaType, TUICallRole callRole, double totalTime) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
roomId | TUIRoomId | 此次通话的音视频房间 Id,目前仅支持数字房间号,通过TUIRoomId(intRoomId: int)获得对象 |
callMediaType | TUICallMediaType | 通话的媒体类型,示例:TUICallMediaType.video 或 TUICallMediaType.audio |
callRole | Number | 角色,枚举类型:主叫(callRole = 1)、被叫(callRole = 2) |
totalTime | Double | 此次通话的时长,单位 ms |
注意 客户端的事件一般都会随着杀进程等异常事件丢失掉,如果您需要通过监听通话时长来完成计费等逻辑,建议可以使用 REST API 来完成这类流程。
onCallMediaTypeChanged
表示通话的媒体类型发生变化。
TUICallEngine.instance.addObserver(TUICallObserver( onCallMediaTypeChanged: (TUICallMediaType oldCallMediaType, TUICallMediaType newCallMediaType) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
oldCallMediaType | TUICallMediaType | 通话的媒体类型,示例:TUICallMediaType.video 或 TUICallMediaType.audio |
newCallMediaType | TUICallMediaType | 通话的媒体类型,示例:TUICallMediaType.video 或 TUICallMediaType.audio |
onUserReject
通话被拒绝的回调,在1v1 通话中,只有主叫方会收到拒绝回调,在群组通话中,所有被邀请者都可以收到该回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserReject: (String userId) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
res.userId | String | 拒绝用户的 ID |
onUserNoResponse
对方无回应的回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserNoResponse: (String userId) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 无响应用户的 ID |
onUserLineBusy
通话忙线回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserLineBusy: (String onUserLineBusy) { //您的回调处理逻辑 },));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 忙线用户的 ID |
onUserJoin
有用户进入此次通话的回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserJoin: (String userId) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 加入当前通话的用户 ID |
onUserLeave
有用户离开此次通话的回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserLeave: (String userId) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 离开当前通话的用户 ID |
onUserVideoAvailable
用户是否开启视频上行回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserVideoAvailable: (String userId, bool isVideoAvailable) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 通话用户 ID |
isVideoAvailable | Bool | 用户视频是否可用 |
onUserAudioAvailable
用户是否开启音频上行回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserAudioAvailable: (String userId, bool isAudioAvailable) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
userId | String | 用户 ID |
isAudioAvailable | Bool | 用户音频是否可用 |
onUserVoiceVolumeChanged
用户通话音量的回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserVoiceVolumeChanged: (Map volumeMap) { //您的回调处理逻辑 }));
参数如下表所示:
参数 | 类型 | 含义 |
volumeMap | Map | 音量表,根据每个 userId 可以获取对应用户的音量大小,音量最小值为0,音量最大值为100 |
onUserNetworkQualityChanged
用户网络质量的回调。
TUICallEngine.instance.addObserver(TUICallObserver( onUserNetworkQualityChanged: (List networkQualityList) { //您的回调处理逻辑 }));
//TUINetworkQualityInfo的定义如下:class TUINetworkQualityInfo { String userId; TUINetworkQuality quality; TUINetworkQualityInfo({required this.userId, required this.quality});}// TUINetworkQuality的定义如下:enum TUINetworkQuality { unknown, excellent, good, poor, bad, vBad, down}
参数如下表所示:
参数 | 类型 | 含义 |
networkQualityList | List | 网络状态,根据每个 userId 可以获取对应用户当前的网络质量 |
onKickedOffline
当前用户被踢下线:此时可以 UI 提示用户,并再次重新调用初始化。
TUICallEngine.instance.addObserver(TUICallObserver( onKickedOffline: () { //您的回调处理逻辑 }));
onUserSigExpired
在线时票据过期:此时您需要生成新的 userSig,并再次重新调用初始化。
TUICallEngine.instance.addObserver(TUICallObserver( onUserSigExpired: () { //您的回调处理逻辑 } ));
对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?