【音视频】iOS CallKit 开发指南

简介

CallKit 是融云音视频通话功能的 UI 界面 SDK。包含了单人、多人音视频通话的界面的各种场景和功能。您可以快速的集成 CallKit 来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit,您可以根据您的需要去使用。

GitHub 项目:CallKit 开源代码

开通方式

音视频服务开通,请参考音视频开通方式说明。

使用说明

由于底层引擎技术不同,2.6.0 之后的音视频 SDK 与 2.6.0 之前的 SDK 中的实时音视频不能互通。

音视频 SDK 为商用收费功能,之前的 SDK 中的实时音视频为免费测试功能,如果您还想使用之前的实时音视频,可以使用 2.5.2 版本。

集成说明

1.导入 SDK

有两种方式可以将 SDK 导入您的项目中:

通过 CocoaPods 管理依赖

手动导入 SDK 并管理依赖

2.使用 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,请参考知识库文档

3.手动导入 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 集成文档。

1. 发起通话

使用 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;

2. 通话接听

当收到一个通话呼叫的时候,

当 App 处于前台状态的时候,SDK 会自动弹出通话界面。

当 App 处于后台活动状态的时候,SDK 会弹出本地通知并播放铃声。

当 App 处于后台暂停状态的时候,如果您的 App 开启了实时音视频后台运行模式并在开发者后台上传了 VoIP 推送证书,这时候 App 会在后台启动并弹出本地通知;否则,App 会收到远程推送提醒,VoIP Push 设置请参考 VoIP 推送设置文档

关于 App 运行状态的更多信息,您可以参考 SDK 的运行状态文档。

3. 会话是否支持发起通话

目前,SDK 支持在单聊发起单人通话,在讨论组、群聊中发起多人通话。

您可以通过 RCCall 类的以下接口查询当前会话的通话能力。

// RCCall Class/*!

当前会话类型是否支持音频通话

@param conversationType 会话类型

@return 是否支持音频通话

*/- (BOOL)isAudioCallEnabled:(RCConversationType)conversationType;/*!

当前会话类型是否支持视频通话

@param conversationType 会话类型

@return 是否支持视频通话

*/- (BOOL)isVideoCallEnabled:(RCConversationType)conversationType;

4. 设置多人最大通话人数限制

CallKit 默认音频通话最大人数为 20 人,视频通话最大人数为 9 人。

如果不符合您的需求,您可以通过 RCCall 以下接口设置最大人数。

// RCCall Class/*!

音频通话支持的最大通话人数

*/@property(nonatomic,assign)intmaxMultiAudioCallUserNumber;/*!

视频通话支持的最大通话人数

*/@property(nonatomic,assign)intmaxMultiVideoCallUserNumber;

建议您在设置最大人数的时候,考虑移动设备的带宽(主要是多路视频通话)和UI交互友好。

CallLib 的话音频和视频人数默认均没有限制。

5. UI 界面说明

CallKit 中默认实现了一套较为通用的通话 UI,包含单人音视频通话界面 RCCallSingleCallViewController 、多人音频通话界面RCCallAudioMultiCallViewController 、多人视频通话界面 RCCallVideoMultiCallViewController、最小化的通话界面 RCCallFloatingBoard、聊天界面的通话提示 RCCallDetailMessageCell、RCCallTipMessageCell等。

如果能满足您的需求,您可以基于 CallKit 直接开发,如果您的需求较为特殊,可以直接使用 CallLib 并实现相关的界面UI,您也可以向我们商务索取CallKit 源码以供参考。

实时音视频推送设置

详细请参考 VoIP 推送设置文档

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容