PushKit介绍
PushKit从iOS 8版本开始支持,具体实现如下:
1)app需要开启推送,且后台模式勾选Voice over IP;
2)创建PushKit推送证书,证书创建类型选择VoIP Services Certificate,具体生成过程不再赘述与普通推送证书过程一样;
3)引用PushKit.framework库;
4)注册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: