实现音视频通话
平台兼容性
平台 | 说明 |
---|---|
Android | 系统版本 5.0 及以上 |
iOS | 系统版本 9.0 及以上 |
步骤 1:服务开通
您在融云创建的应用默认不会 启用音视频服务。在使用融云提供的任何音视频服务前,您需要前往控制台,为应用开通音视频服务。
具体步骤请参阅 开通音视频服务。
注意
服务开通、关闭等设置完成后 15 分钟后生效。
步骤 2:SDK 导入
CallLib 相关业务依赖 IMLib 作为信令通道。因此,开发音视频通话必须安装融云即时通讯能力库 IMLib。
安装 IMLib 和 CallLib
方法
shell
npm install @rongcloud/react-native-im-wrapper --save
npm install @rongcloud/react-native-calllib --save
步骤 3:初始化
IM 初始化
方法
JavaScript
import { RCIMIWEngine } from '@rongcloud/react-native-im-wrapper';
let engine = RCIMIWEngine.create(appKey, options);
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
appKey | String | 是 | 您的应用 AppKey |
options | RCIMIWEngineOptions | 否 | 引擎配置选项 |
示例代码
JavaScript
import { RCIMIWEngine } from '@rongcloud/react-native-im-wrapper';
let appKey = "您的 appKey";
let options = {};
let engine = RCIMIWEngine.create(appKey, options);
console.log('IM 引擎初始化成功');
CallLib 初始化
方法
JavaScript
import * as CallLib from '@rongcloud/react-native-calllib';
CallLib.init();
示例代码
JavaScript
import * as CallLib from '@rongcloud/react-native-calllib';
CallLib.init();
console.log('CallLib 初始化成功');
步骤 4:添加监听
监听通话呼入
方法
JavaScript
CallLib.onCallReceived(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
session | Object | 通话会话对象,包含通话相关信息 |
示例代码
JavaScript
CallLib.onCallReceived((session) => {
// 在此可设置来电时的视图
console.log('收到来电:', session);
});
监听通话已接通
方法
JavaScript
CallLib.onCallConnected(callback);
示例代码
JavaScript
CallLib.onCallConnected(() => {
console.log('通话已接通');
});
监听远端用户加入
方法
JavaScript
CallLib.onRemoteUserJoined(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
user | Object | 远端用户信息 |
示例代码
JavaScript
CallLib.onRemoteUserJoined((user) => {
console.log('远端用户加入:', user);
});
如果在此处设置通话中的视图,需要在已接通的情况下。
监听远端用户离开
方法
JavaScript
CallLib.onRemoteUserLeft(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
user | Object | 远端用户信息 |
示例代码
JavaScript
CallLib.onRemoteUserLeft((user) => {
console.log('远端用户离开:', user);
});
如果在此处设置通话中的视图,需要在已接通的情况下。
监听通话结束
方法
JavaScript
CallLib.onCallDisconnected(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
reason | Number | 挂断原因,具体请参见挂断通话原因 |
示例代码
JavaScript
CallLib.onCallDisconnected((reason) => {
console.log('通话结束,原因:', reason);
});
步骤 5:连接 IM
方法
JavaScript
engine.connect(token, timeout, callback);
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
token | String | 是 | 用户身份令牌 |
timeout | Number | 否 | 连接超时时间,默认 0 |
callback | Object | 是 | 连接回调对象 |
回调参数
参数 | 类型 | 说明 |
---|---|---|
code | Number | 错误码,0 表示成功 |
userId | String | 用户 ID |
示例代码
JavaScript
let token = '您的 token';
const callback = {
onConnected: (code, userId) => {
if (code == 0) {
console.log('IM连接成功 userId ->' + userId);
} else {
console.log('IM连接失败 code -> ' + code);
}
},
};
let code = await engine?.connect(token, 0, callback);
步骤 6:发起呼叫
主动呼叫分为发起单人通话和发起多人通话,可根据实际需求调用。多人通话的场景必须在一个群组内。