PushKit和CallKit
说明
专有云支持iOS PushKit和CallKit。
点击"IM管理-IM基础功能配置-推送证书",添加证书。如需添加IOS PushKit推送证书需先开通专有云。详细功能说明请查看相关配置页。
PushKit介绍
PushKit从iOS 8版本开始支持,具体实现如下:
1)app需要开启推送,且后台模式勾选Voice over IP;
2)创建PushKit推送证书,证书创建类型选择VoIP Services Certificate,具体生成过程不再赘述与普通推送证书过程一样;
3)引用PushKit.framework库;
4)注册PushKit推送通知,代码如下:
5)代理函数的实现:
PushKit与原来远程推送的区别:
原来远程推送是由服务器发出消息之后,iPhone设备收到消息,由iOS 系统弹出通知窗口。
PushKit是由服务器发出消息之后,iPhone设备收到消息后,会在后台启动app(在设备上看不到,即使双击Home也看不到),消息会送达到回调函数里,由应用决定怎么处理该消息,如弹出本地通知或做一些其他操作;后台时间有限,不能做过于耗时操作。
PushKit和原来远程推送是共存的,所以在系统里需要两个证书,也会有对应的push token生成;呼叫模块会根据PushKit证书和对应的push token同时存在推送PushKit推送,否则还走原来的远程推送逻辑。
CallKit介绍
CallKit是从iOS 10开始支持,需要引用CallKit.framework库.
优点:
1) 提高网络通话的音频权限:避免在通话过程中被传统电话无脑打断,更顺畅!
2)可以使用系统电话的UI界面:实时语音通话真正地变成了“电话”!
简单介绍:
首先得介绍一下CallKit的框架。他分为三大模块:通话管理,CallCenter和来电屏蔽,要实现上述功能我们只需要关注通话管理模块。通话管理模块里主要有两个类:CXProvider和CXCallController。
CXProvider可以理解为处理系统电话界面有关的逻辑,比如来电呼起系统电话界面或者将用户在系统电话界面上的操作通知给App。 CXCallController则是将用户在App界面上的操作通知给系统。
CallKit来电场景的介绍:
网络通话适配CallKit主要包含三个流程:收到来电主动通知CallKit、用户在CallKit界面点击接听、用户在App界面点击挂断。下面将通过三个流程来介绍CXProvider、CXCallController的使用。
App收到来电
收到SDK的onIncomingCallReceived回调消息时,其他逻辑不变只需要调用CXProvider的reportNewIncomingCall就可以展示系统电话界面。
用户在CallKit界面点击接听,该流程可用于用户对Callkit的所有操作回调:
用户点击接听后,我们会受到CXAnswerCallAction的回调,在这里面添加acceptCall接听来电,再调用fulfill,整个流程就完成了。在前面判断如果callid不存在字典中显示失败。
用户在App中挂断电话
这时候我们需要添加一个CXEndCallAction到CXTransaction并调用requestTransaction请求执行:
之后的流程与CallKit界面点击接听类似,收到CXEndCallAction回调,执行挂机逻辑,调用fulfill完成流程。所有用户在app内的操作都以这种方式通知CallKit: