实现首次通话
适用于 iOS 的 CallPlus 可在您的应用程序中为用户之间的一对一和多人通信提供语音和视频通话能力。
CallPlus 支持 一对一通话 和 多人通话。按照下面的指南使用 Objective-C 从头开始实现一对一通话和多人通话。
环境要求
适用于 iOS 的 CallPlus SDK 的最低要求如下。
- iOS 10.0 及更高版本
- Xcode 9.0 或以上版本
前置条件
-
注册开发者账 号。注册成功后,控制台会默认自动创建您的首个应用,默认生成开发环境下的 App Key,使用国内数据中心。
-
获取开发环境的应用 App Key。如不使用默认应用,请参考 如何创建应用,并获取对应环境 App Key 和 App Secret。
注意
每个应用具有两个不同的 App Key,分别对应开发环境与生产环境,两个环境之间数据隔离。在您的应用正式上线前,可切换到使用生产环境的 App Key,以便上线前进行测试和最终发布。
-
完成开通音视频服务。您需要开通音视频通话服务。
快速上手
您可以通过集成 CallPlus for iOS 进行一对一通话,或多人通话。
步骤 1 创建项目
打开 Xcode 并创建一个新项目。
步骤 2 集成 SDK
您可以使用 CocoaPods 安装 RongCallPlusLib,也可以通过下载对应的 Framework 文件手动导入到工程中。
CocoaPods
-
在您的项目目录中创建一个名为
Podfile
的文件,如下所示。touch Podfile
-
在 Xcode 中将
RongCallPlusLib
框架添加到你的Podfile
中,如下所示。# Podfile
pod 'RongCallPlusLib' -
运行以下命令,通过 CocoaPods 安装
RongCallPlusLib
框架。$ pod install
- 如果出现找不到相关版本的问题,可先执行 pod repo update ,再执行 pod install。
-
上一步完成后,会自动导入指定版本的融云 SDK,CocoaPods 会在您的工程根目录下生成一个 xcworkspace 文件,只需通过 XCode 打开该文件即可加载工程。
Framework
在导入 SDK 前,您需要前往 融云官网 SDK 下载页面,将 CallPlus for iOS SDK 下载到本地。
- 导入 RongIMLibCore.xcframework,并将 Embed 设置为 Embed & Sign 。
- 导入 RongRTCLib.xcframework,并将 Embed 设置为 Embed & Sign 。
- 导入 RongCallPlusLib.xcframework,并将 Embed 设置为 Embed & Sign 。
步骤 3 工程配置
- 您的用户需要授予您的应用访问设备上的摄像头和麦克风的权限,请在工程的 info.plist 中添加如下键值:
- Privacy - Microphone Usage Description
- Privacy - Camera Usage Description
- 如果需要支持后台保持通话,请将工程中 Target -> Signing & Capabilities -> Background Modes 如下内容勾选:
- Audio, AirPlay, and Picture in Picture
- 如果需要支持远程推送服务,请将工程中 Target -> Signing & Capabilities -> Background Modes 如下内容勾选:
- Remote notifications
步骤 4 设置推送
您可以通过远程通知接收有关一对一来电的推送通知。要使用远程通知接收通知,请转到 Xcode 项目的 Signing & Capabilities 并启用 Remote notifications。应用程序需要支持 APNs 推送,详见 APNs 推送集成。
步骤 5 使用 App Key 初始化
RongCallPlusLib
是基于 RongIMLibCore
作为信令通道的,要在您的应用程序中集成和运行 ,您需要先对 IMLibCore
进行初始化。请使用您在融云申请的 App Key 初始化 RCCoreClient
实例。如果不换 App Key,在整个应用生命周期中,初始化一次即可。建议调用位置放在应用启动位置处,或在音视频功能模块的加载位置处。
NSString *appKey = @"Your_AppKey"; // example: bos9p5rlcm2ba
RCInitOption *initOption = nil;
[[RCCoreClient sharedCoreClient] initWithAppKey:appKey option:initOption];
初始化配置(RCInitOption
)中封装了区域码(RCAreaCode),导航服务地址(naviServer
)、文件服务地址(fileServer
)、数据统计服务地址(statisticServer
)配置。不作设置表示全部使用默认配置。SDK 默认连接北京数据中心。
如果 App Key 不属于中国(北京)数据中心,则必须传入有效的初始化配置。
注意
每个融云应用提供开发环境与生产环境,分别使用不同的 App Key,两个环境之间数据隔离。只要客户端应用使用同一个环境的 App Key,用户可以跨所有平台相互通信。
步骤 6 添加通话所需代理
CallPlus for iOS 提供了 RCCallPlusEventDelegate
与 RCCallPlusResultDelegate
两个代理来处理通话相关事件。
RCCallPlusEventDelegate
用于处理来电事件、通话状态、通话记录等事件相关回调。RCCallPlusResultDelegate
用于处理 API 异步结果回调监听。该监听可以接收 startCallWithUserIds:callType:mediaType:、acceptWithCallId:、hangup 等方法的结果回调。
注意
如果未设置
RCCallPlusEventDelegate
代理,则用户无法接收didReceivedCall
回调事件。请务必在下文连接(connectWithToken
)步骤之前使用setCallEventDelegate
注册监听,否则用户在未连接的情况下,通过离线推送打开应用连接 IM 后无法收到通话。
-
设置
RCCallPlusEventDelegate
和RCCallPlusResultDelegate
。// 初始化相关配置
- (void)initConfig {
/// 设置事件代理
[[RCCallPlusClient sharedInstance] setCallEventDelegate:self];
/// 响应api代理
[[RCCallPlusClient sharedInstance] setCallResultDelegate:self];
}