实现音视频通话
CallLib 是在 RTCLib 基础上,额外封装了一套音视频呼叫功能 SDK,包含了单人音视频呼叫的各种场景和功能,通过集成它,您可以自由的实现音视频呼叫场景的各种玩法。
前置条件
-
注册开发者账号。注册成功后,控制台会默认自动创建您的首个应用,默认生成开发环境下的 App Key,使用国内数据中心。
-
获取开发环境的应用 App Key。如不使用默认应用,请参考 如何创建应用,并获取对应环境 App Key 和 App Secret。
注意
每个应用具有两个不同的 App Key,分别对应开发环境与生产环境,两个环境之间数据隔离。在您的应用正式上线前,可切换到使用生产环境的 App Key,以便上线前进行测试和最终发布。
-
完成开通音视频服务。请开通音视频通话服务。
步骤 1:权限配置
Android
-
在
AndroidManifest.xml
中声明 SDK 需要的所有权限。<!-- 音视频需要网络权限 和 监听网络状态权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 摄像头采集需要 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 音频采集需要 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> -
如果您的应用需要支持 Android 6.0(API 级别 23)或更高版本的设备,您还需要在 App 用户使用对应功能时请求摄像头(
CAMERA
)、麦克风(RECORD_AUDIO
)权限。详见 Android 开发者官方文档运行时权限与请求权限的工作流。
iOS
请在 Info.plist
文件中添加摄像头和麦克风的申请权限:
<key>NSCameraUsageDescription</key>
<string>摄像头权限使用描述</string>
<key>NSMicrophoneUsageDescription</key>
<string>麦克风权限使用描述</string>
步骤 2:使用 App Key 初始化
音视频用户之间的信令传输依赖于融云的即时通信(IM)服务,所以要先初始化 IM SDK(rongcloud_im_wrapper_plugin)。IM SDK 的初始化方法接受一个 App Key 参数,和一个可选的 IM 引擎配置(RCIMIWEngineOptions
。如果不换 AppKey,在整个应用生命周期中,初始化一次即可。
RCIMIWEngineOptions options = RCIMIWEngineOptions.create();
RCIMIWEngine imEngine = await RCIMIWEngine.create(appKey, options);
注意
如需详细了解 IM SDK 初始化方法和具体配置,请转至 IM SDK 开发者文档初始化。
步骤 3:通话事件处理
-
开发者可通过设置
RCCallEngine
中的onReceiveCall
方法来监听通话呼入。engine?.onReceiveCall = (RCCallSession session) {
/// session 通话实体
}; -
开发者可通过设置
RCCallEngine
中的onCallDidMake
、onConnect
以及onDisconnect
方法来监听通话状态的变化。/// 通话拨出监听
engine?.onCallDidMake = () {
};
/// 通话建立监听
engine?.onConnect = () {
};
/// 通话断开监听
engine?.onDisconnect = (RCCallDisconnectReason reason) {
/// reason 断开原因
};