通话监听
融云 RN CallLib SDK 提供了如下监听函数,用于处理通话的相关业务逻辑。
添加监听
onCallReceived
通过 CallLib.onCallReceived 监听通话呼入,会从回调方法的参数得到一个 callSession 对象。详细参见通话信息中对 callSession 对象各属性的详细说明。
方法
CallLib.onCallReceived(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
callSession | Object | 通话会话对象,包含通话相关信息 |
示例代码
CallLib.onCallReceived((callSession) => {
console.log('收到来电:', callSession);
});
onCallConnected
通过 CallLib.onCallConnected 监听通话已接通
方法
CallLib.onCallConnected(callback);
示例代码
CallLib.onCallConnected(() => {
console.log('通话已接通');
});
onCallDisconnected
通过 CallLib.onCallDisconnected 监听通话已结束,会从回调方法的参数得到 reason。详见挂断通话的原因。
方法
CallLib.onCallDisconnected(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
reason | Number | 挂断原因,详见挂断通话的原因 |
示例代码
CallLib.onCallDisconnected((reason) => {
console.log('通话已结束,原因:', reason);
});
onRemoteUserJoined
通过 CallLib.onRemoteUserJoined 监听远端用户加入了通话。
方法
CallLib.onRemoteUserJoined(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 远端用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
示例代码
CallLib.onRemoteUserJoined((user) => {
console.log('远端用户加入:', user);
});
OnRemoteUserLeft
通过 CallLib.OnRemoteUserLeft 监听远端用户挂断。
方法
CallLib.OnRemoteUserLeft(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 远端用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
reason | Number | 挂断原因,详细参见通话挂断的原因 |
示例代码
CallLib.OnRemoteUserLeft((user, reason) => {
console.log('远端用户离开:', user, '原因:', reason);
});
onEnableCamera
通过 CallLib.onEnableCamera 监听己端开启或关闭摄像头。
方法
CallLib.onEnableCamera(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
camera | Number | 摄像头类型 |
enable | Boolean | 是否开启 |
示例代码
CallLib.onEnableCamera((camera, enable) => {
console.log('摄像头状态改变:', camera, enable);
});
onSwitchCamera
通过 CallLib.onSwitchCamera 监听己端切换摄像头。
方法
CallLib.onSwitchCamera(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
camera | Number | 摄像头类型 |
enable | Boolean | 是否开启 |
示例代码
CallLib.onSwitchCamera((camera, enable) => {
console.log('摄像头切换:', camera, enable);
});
onError
通过 CallLib.onError 监听通话出现错误,会从回调方法的参数得到 code。详见通话错误的原因。
方法
CallLib.onError(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | Number | 错误码,详见通话错误的原因 |
示例代码
CallLib.onError((code) => {
console.log('通话出现错误:', code);
});
onCallOutgoing
通过 CallLib.onCallOutgoing 监听开始呼叫。
方法
CallLib.onCallOutgoing(callback);
示例代码
CallLib.onCallOutgoing(() => {
console.log('开始呼叫');
});
onRemoteUserRinging
通过 CallLib.onRemoteUserRinging 监听远端用户正在振铃,会从回调方法的参数得到远端用户的 userId。
方法
CallLib.onRemoteUserRinging(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
userId | String | 远端用户 ID |
示例代码
CallLib.onRemoteUserRinging((userId) => {
console.log('远端用户正在振铃:', userId);
});
OnRemoteUserInvited
通过 CallLib.OnRemoteUserInvited 监听有用户被邀请加入通话(仅限群聊)。
方法
CallLib.OnRemoteUserInvited(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
userId | String | 用户id |
mediaType | Number | 通话媒体类型,0是音频,1是音视频 |
示例代码
CallLib.OnRemoteUserInvited((userId, mediaType) => {
console.log('用户被邀请加入通话:', userId, mediaType);
});
onRemoteUserMediaTypeChanged
通过 CallLib.onRemoteUserMediaTypeChanged 监听远端用户切换了媒体类型。
方法
CallLib.onRemoteUserMediaTypeChanged(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 远端用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
mediaType | Number | 表示通话媒体类型。0 是音频,1 是音视频 |
示例代码
CallLib.onRemoteUserMediaTypeChanged((user, mediaType) => {
console.log('远端用户媒体类型改变:', user, mediaType);
});
onRemoteUserMicrophoneStateChanged
通过 CallLib.onRemoteUserMicrophoneStateChanged 监听远端用户开启或关闭了麦克风的状态。
方法
CallLib.onRemoteUserMicrophoneStateChanged(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 远端用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
enable | Boolean | 表示是否已开启。true 表示已开启,false 表示未开启 |
示例代码
CallLib.onRemoteUserMicrophoneStateChanged((user, enable) => {
console.log('远端用户麦克风状态改变:', user, enable);
});
onRemoteUserCameraStateChanged
通过 CallLib.onRemoteUserCameraStateChanged 监听 远端用户开启或关闭了摄像头的状态。
方法
CallLib.onRemoteUserCameraStateChanged(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 远端用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
enable | Boolean | 表示是否已开启。true 表示已开启,false 表示未开启 |
示例代码
CallLib.onRemoteUserCameraStateChanged((user, enable) => {
console.log('远端用户摄像头状态改变:', user, enable);
});
onNetworkQuality
通过 CallLib.onNetworkQuality 监听当前通话网络状态,该回调方法每秒触发一次。
方法
CallLib.onNetworkQuality(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 用户信息,详细参见通话信息中对 user 对象各属性的详细说明 |
quality | Number | 表示网络质量。如果 user 是本端用户, quality 代表上行网络质量 如果 user 是远端用户, quality 代表下行网络质量 0 表示未知 1 表示极好 2 表示好 3 表示一般 4 表示差 5 表示极差 |
示例代码
CallLib.onNetworkQuality((user, quality) => {
console.log('网络质量:', user, quality);
});
onAudioVolume
通过 CallLib.onAudioVolume 监听当前通话某用户音量。
方法
CallLib.onAudioVolume(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
user | Object | 用户信息 ,详细参见通话信息中对 user 对象各属性的详细说明 |
volume | Number | 以 0~9 代表声音音量。0 为无声,依次变大。如果 user 是本端用户,volume 代表发送音量。如果 user 是远端用户,volume 代表接收音量 |
示例代码
CallLib.onAudioVolume((user, volume) => {
console.log('音频音量:', user, volume);
});
移除监听
removeCallReceivedListener
移除对"通话呼入"的监听 。
方法
CallLib.removeCallReceivedListener();
示例代码
CallLib.removeCallReceivedListener();
console.log('通话呼入监听已移除');
removeCallConnectedListener
移除对"通话已接通"的监听。
方法
CallLib.removeCallConnectedListener();
示例代码
CallLib.removeCallConnectedListener();
console.log('通话已接通监听已移除');
removeCallDisconnectedListener
移除对"通话已结束"的监听。
方法
CallLib.removeCallDisconnectedListener();
示例代码
CallLib.removeCallDisconnectedListener();
console.log('通话已结束监听已移除');
removeRemoteUserJoinedListener
移除对"远端用户加入了通话"的监听。
方法
CallLib.removeRemoteUserJoinedListener();
示例代码
CallLib.removeRemoteUserJoinedListener();
console.log('远端用户加入监听已移除');
removeEnableCameraListener
移除对"己端开启或关闭摄像头"的监听。
方法
CallLib.removeEnableCameraListener();
示例代码
CallLib.removeEnableCameraListener();
console.log('摄像头状态监听已移除');
removeSwitchCameraListener
移除对"己端切换摄像头"的监听。
方法
CallLib.removeSwitchCameraListener();
示例代码
CallLib.removeSwitchCameraListener();
console.log('摄像头切换监听已移除');
removeRemoteUserLeftListener
移除对"远端用户离开"的监听。
方法
CallLib.removeRemoteUserLeftListener();
示例代码
CallLib.removeRemoteUserLeftListener();
console.log('远端用户离开监听已移除');
removeErrorListener
移除对"通话出现错误"的监听。
方法
CallLib.removeErrorListener();
示例代码
CallLib.removeErrorListener();
console.log('错误监听已移除');
removeCallOutgoingListener
移除对"开始呼叫"的监听。
方法
CallLib.removeCallOutgoingListener();
示例代码
CallLib.removeCallOutgoingListener();
console.log('开始呼叫监听已移除');
removeRemoteUserRingingListener
移除对"远端用户正在振铃"的监听。
方法
CallLib.removeRemoteUserRingingListener();
示例代码
CallLib.removeRemoteUserRingingListener();
console.log('远端用户振铃监听已移除');
removeRemoteUserInvited
移除对"有用户被邀请加入通话"的监听。
方法
CallLib.removeRemoteUserInvited();
示例代码
CallLib.removeRemoteUserInvited();
console.log('用户邀请监听已移除');
removeRemoteUserMediaTypeChangedListener
移除对"远端用户切换了媒体类型"的监听。
方法
CallLib.removeRemoteUserMediaTypeChangedListener();
示例代码
CallLib.removeRemoteUserMediaTypeChangedListener();
console.log('远端用户媒体类型改变监听已移除');
removeRemoteUserDidChangeMicrophoneStateListener
移除对"远端用户开启或关闭了麦克风的状态"的监听。
方法
CallLib.removeRemoteUserDidChangeMicrophoneStateListener();
示例代码
CallLib.removeRemoteUserDidChangeMicrophoneStateListener();
console.log('远端用户麦克风状态监听已移除');
removeRemoteUserCameraStateChangedListener
移除对"远端用户开启或关闭了摄像头的状态"的监听。
方法
CallLib.removeRemoteUserCameraStateChangedListener();
示例代码
CallLib.removeRemoteUserCameraStateChangedListener();
console.log('远端用户摄像头状态监听已移除');
removeNetworkQualityListener
移除对"当前通话网络状态"的监听。
方法
CallLib.removeNetworkQualityListener();
示例代码
CallLib.removeNetworkQualityListener();
console.log('网络质量监听已移除');
removeAudioVolumeListener
移除对"当前通话某用户音量"的监听。
方法
CallLib.removeAudioVolumeListener();
示例代码
CallLib.removeAudioVolumeListener();
console.log('音频音量监听已移除');