实现音视频通话
CallLib 是在 RTCLib 基础上,额外封装了一套音视频呼叫功能 SDK,包含了单人、多人音视频呼叫的各种场景和功能,通过集成它,您可以自由的实现音视频呼叫场景的各种玩法。
注意
房间人数上限
考虑移动设备的带宽(主要是在多路视频情况下),建议单次通话或房间内,视频不超过 16 人,纯音频不超过 32 人。超过此上限可能影响通话效果。
步骤 1:服务开通
您在融云创建的应用默认不会启用音视频服务。在使用融云提供的任何音视频服务前,您需要前往控制台,为应用开通音视频服务。
注意
服务开通、关闭等设置完成后 15 分钟后生效。
步骤 2:SDK 导入
您需要导入融云音视频通话能力库 CallLib,和 RTC 业务所依赖的即时通讯能力库 IMLib。根据您的业务需求,可选择导入美颜扩展库。
具体步骤请参阅 导入 CallLib SDK。
步骤 3:初 始化
重要提示
从 1.9.0 版本开始,必须先调用 CallClientInstance.install() 方法加载 CallLib 模块,且该方法必须在 IM 初始化之前调用。
CallLib 是基于 IM 作为信令通道的,所以要先初始化 IM。如果不换 App Key,在整个应用生命周期中,初始化一次即可。建议调用位置放在应用启动位置处,或在音视频功能模块的加载位置处。
在 UIAbility 的 onCreate() 方法中,调用初始化方法,传入生产或开发环境的 App Key。
TypeScript
//1.9.0 版本新增方法:加载 CallLib 模块,必需在 IM 初始化之前调用。
CallClientInstance.install();
// 在 UIAbility 中获取 context
let context = this.context
let initOption = new InitOption();
let appKey = "从融云后台获取的 appKey";
IMEngine.getInstance().init(context, appKey, initOption);
步骤 4:监听通话事件
SDK 提供针对来电、通话状态、通话记录的事件处理机制。
设置监听
以下示例代码,新建一个 CallListenerImpl 类实现 RCCallClientListener 接口。并将实例设置给 SDK 。
TypeScript
// 在所需要的类声明 _callClient 私有成员变量,后续示例中使用
private _callClient: RCCallClient | null = null
...
/**
* RCCallClient 单例
* export const CallClientInstance: RCCallClient = CallClientImpl.getInstance()
*/
// 创建 _callClient 成员变量,供后续示例代码使用
this._callClient = CallClientInstance
// 设置监听
this._callClient.callClientListener = new CallListenerImpl()
通话呼入
通过实现 RCCallClientListener 中的 didReceiveCall 来监听通话呼入。
TypeScript
export class CallListenerImpl implements RCCallClientListener {
/**
* 收到通话呼入的回调
* @param callSession 通话实例
* @remarks 代理
*/
didReceiveCall(callSession: RCCallSession): void {
console.log('didReceiveCall', callSession)
}
}