技术福利干货音视频 iOS CallKit 开发指南
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术福利干货音视频 iOS CallKit 开发指南相关的知识,希望对你有一定的参考价值。
ios CallKit 开发指南
简介
CallKit
是融云音视频通话功能的 UI 界面 SDK。包含了单人、多人音视频通话的界面的各种场景和功能。您可以快速的集成 CallKit
来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit
,您可以根据您的需要去使用。
GitHub 项目:CallKit 开源代码
使用说明
由于底层引擎技术不同,2.6.0 之后的音视频 SDK 与 2.6.0 之前的 SDK 中的 VoIP 不能互通。
音视频 SDK 为商用收费功能,之前的 SDK 中的 VoIP 为免费测试功能,如果您还想使用之前的 VoIP,可以使用 2.5.2 版本。
集成说明
导入 SDK
有两种方式可以将 SDK 导入您的项目中:
通过
CocoaPods
管理依赖手动导入 SDK 并管理依赖
使用 CocoaPods 导入 SDK
1、 Cocoapods 的安装、使用,可以参考IM SDK - 下载与导入SDK文档。
2、 使用 CocoaPods 导入融云 SDK
在您的工程根目录下新建一个 Podfile 文件,在文件中输入以下内容。(在此以 2.8.0 版本为例,其中 “MyApp” 为自己工程名)
target ‘MyApp‘ do pod ‘RongCloudIM/IMLib‘, ‘2.8.0‘ pod ‘RongCloudIM/IMKit‘, ‘2.8.0‘ pod ‘RongCloudIM/CallLib‘, ‘2.8.0‘ pod ‘RongCloudIM/CallKit‘, ‘2.8.0‘ end
然后在终端中运行以下命令:
pod install
完成后,CocoaPods 会在您的工程根目录下生成一个 .xcworkspace
文件。您需要通过此文件打开您的工程,而不是之前的 .xcodeproj
。
请务必保证使用的 RongCloudIM 所有模块版本号一致。
关于融云 IM CocoaPods 功能模块的介绍和使用说明,可以参考说明文档。
如果您使用的是2.8.0之前的SDK,请参考知识库文档。
手动导入 SDK
1、 下载 SDK
您可以到融云官方网站下载 SDK。
2、 融云 IM SDK
是 Call SDK
的基础。使用 CallKit
或 CallLib
,必须同时集成使用融云 IM SDK
。 手动导入 IM SDK,可以参考 IM SDK - 下载与导入文档。
SDK 文件说明:
文件 | 说明 | 注意事项 |
---|---|---|
RongCallKit.framework | CallKit的framework 库 | 使用 CallKit 必须导入 |
RongCallLib.framework | CallLib的framework 库 | 使用 CallLib 与使用 CallKit 都必须导入 |
AgoraRtcEngineKit.framework | 通话引擎 | 必须导入,否则通话功能将无法使用 |
3、 手动集成了融云 SDK 之后,您需要在您的工程中导入 RongCallLib.framewrok、 RongCallKit.framewrok、AgoraRtcEngineKit.framework 以及系统库 CoreMotion.framework、VideoToolbox.framework、libresolv.tbd。
4、 在 Xcode 项目 “Build Settings -> Other Linker Flags” 中,增加"-ObjC"。
快速集成
使用融云通话之前,必须先初始化 SDK 和连接服务器,详细内容可以参考 IMKit SDK 集成文档。
发起通话
使用 CallKit 可以通过两种方式发起通话:
在聊天界面输入扩展的加号内,点击语音通话/视频通话按钮直接发送通话。
这个功能在 SDK 中已经默认实现了,您不需要做什么额外的操作。
调用 RCCall 类中的以下方法发起通话。
发起单人通话
// RCCall Class/*! 发起单人通话 @param targetId 对方的用户ID @param mediaType 使用的媒体类型 */- (void)startSingleCall:(NSString *)targetId mediaType:(RCCallMediaType)mediaType;
选择成员并发起多人通话
// RCCall Class/*! 选择成员并发起多人通话 @param conversationType 会话类型 @param targetId 会话目标ID @param mediaType 使用的媒体类型 @discussion 此方法会先弹出选择成员界面,选择完成后再会发起通话。目前支持的会话类型有讨论组和群组。 @warning 如果您需要在群组中调用此接口发起多人会话,需要设置并实现groupMemberDataSource。 */- (void)startMultiCall:(RCConversationType)conversationType targetId:(NSString *)targetId mediaType:(RCCallMediaType)mediaType;
需要注意的是,如果您需要在群组中调用此接口发起多人会话,需要设置并实现 groupMemberDataSource
。
SDK 在选择群组成员的时候,会调用 getAllMembersOfGroup:result:
接口获取群成员列表并显示。
直接发起多人通话
// RCCall Class/*! 直接发起多人通话 @param conversationType 会话类型 @param targetId 会话目标ID @param mediaType 使用的媒体类型 @param userIdList 邀请的用户ID列表 @discussion 此方法会直接发起通话。目前支持的会话类型有讨论组和群组。 @warning 您需要设置并实现groupMemberDataSource才能加人。 */- (void)startMultiCallViewController:(RCConversationType)conversationType targetId:(NSString *)targetId mediaType:(RCCallMediaType)mediaType userIdList:(NSArray *)userIdList;
通话接听
当收到一个通话呼叫的时候,
当 App 处于前台状态的时候,SDK 会自动弹出通话界面。
当 App 处于后台活动状态的时候,SDK 会弹出本地通知并播放铃声。
当 App 处于后台暂停状态的时候,如果您的 App 开启了 VoIP 后台运行模式并在开发者后台上传了 VoIP 推送证书,这时候 App 会在后台启动并弹出本地通知;否则,App 会收到远程推送提醒,VoIP Push 设置请参考 VoIP 推送设置文档。
关于 App 运行状态的更多信息,您可以参考 SDK 的运行状态文档。
会话是否支持发起通话
目前,SDK 支持在单聊发起单人通话,在讨论组、群聊中发起多人通话。
您可以通过 RCCall 类的以下接口查询当前会话的通话能力。
// RCCall Class/*! 当前会话类型是否支持音频通话 @param conversationType 会话类型 @return 是否支持音频通话 */- (BOOL)isAudioCallEnabled:(RCConversationType)conversationType;/*! 当前会话类型是否支持视频通话 @param conversationType 会话类型 @return 是否支持视频通话 */- (BOOL)isVideoCallEnabled:(RCConversationType)conversationType;
设置多人最大通话人数限制
CallKit
默认音频通话最大人数为 20 人,视频通话最大人数为 9 人。
如果不符合您的需求,您可以通过 RCCall
以下接口设置最大人数。
// RCCall Class/*! 音频通话支持的最大通话人数 */@property (nonatomic, assign) int maxMultiAudioCallUserNumber;/*! 视频通话支持的最大通话人数 */@property (nonatomic, assign) int maxMultiVideoCallUserNumber;
建议您在设置最大人数的时候,考虑移动设备的带宽(主要是多路视频通话)和UI交互友好。CallLib
的话音频和视频人数默认均没有限制。
UI 界面说明
CallKit
中默认实现了一套较为通用的通话 UI,包含单人音视频通话界面 RCCallSingleCallViewController
、多人音频通话界面RCCallAudioMultiCallViewController
、多人视频通话界面 RCCallVideoMultiCallViewController
、最小化的通话界面 RCCallFloatingBoard
、聊天界面的通话提示 RCCallDetailMessageCell
、RCCallTipMessageCell
等。
如果能满足您的需求,您可以基于 CallKit
直接开发,如果您的需求较为特殊,可以直接使用 CallLib
并实现相关的界面UI,您也可以向我们商务索取CallKit
源码以供参考。
以上是关于技术福利干货音视频 iOS CallKit 开发指南的主要内容,如果未能解决你的问题,请参考以下文章