使用iOS Pushkit的VoIP推送通知

在此博客中,我将介绍有关pushkit框架及其在VoIP应用程序中的用法。 让我们从一个场景开始。

场景:我正在编写VoIP应用程序,我想在后台状态下更新我的应用程序,或者想在收到任何VoIP呼叫时唤醒我的应用程序。

解决方案 :PushKit旨在通过提供具有大负载高优先级推送通知来解决这些问题。 VoIP应用程序在后台接收通知,建立连接。

当我们有了用户通知框架时,我们为什么需要pushkit的原因已经明确了,现在让我们检查一下它们之间的区别。

UserNotifications框架支持的用户通知不同,PushKit通知从不向用户显示-它们不显示徽章,警报或声音。 那么,为什么我们需要推包,这对于开发人员来说是一个非常明显的问题。

在iOS 8之前,开发人员需要满足以下情况:

  • 前景中的ActiveConnection
  • 通过VoIP授权的活动后台连接(VoIP套接字)
  • 定期推送通知

该技术导致频繁的设备唤醒,浪费了能量。 这也意味着,如果用户退出VoIP应用程序,则将无法再接收来自服务器的呼叫。

开发人员应该使用PushKit框架-允许应用程序从远程服务器接收推送(数据可用时的通知)的API,而不是持久连接。 每当收到推送时,就会调用该应用程序。 例如,VoIP应用程序可以在收到呼叫时显示警报,并提供接受或拒绝呼叫的选项。 如果用户决定接受,它甚至可以开始采取前期步骤来发起呼叫。

使用PushKit接收VoIP推送有很多优点:

  • 仅在VoIP推送发生时才唤醒设备,以节省能源。
  • 与标准推送通知不同,用户必须先响应标准推送通知,您的应用才能执行操作,而VoIP推送将直接进入您的应用进行处理。
  • VoIP推送被认为是高优先级的通知,并且不会延迟地发送。
  • VoIP推送可以包含比标准推送通知所提供的更多的数据。
  • 收到VoIP推送后,如果您的应用未运行,则会自动重新启动。
  • 即使您的应用程序在后台运行,也会为您的应用程序提供运行时以处理推送。

在iOS 8中,Apple引入了一种新的推送方式:VoIP推送。 此推送消息有两个好处:

  • 您无需允许推送; 它在用户不知道的情况下起作用。
  • 苹果承诺将高度优先地提供这些推送通知。

最好的东西? 它允许您在推送到达时执行代码。 我在沙盒环境中进行的初步测试表明,它非常快,而且由于您可以用相同的方式处理所有调用,因此可以减少实现我们的Voice API的时间。
PushKit框架将特定类型的通知(例如VoIP邀请,watchOS并发症更新和文件提供商更改通知)直接发送到您的应用程序进行处理。

让我们看一下PushKit框架提供的类,协议。

像所有支持后台操作的应用程序一样,您的VoIP应用程序必须在“ Xcode项目”>“功能”窗格中启用后台模式。 选中IP语音复选框。

您还必须为VoIP应用程序创建证书。 每个VoIP应用程序都需要自己的个人VoIP服务证书,该证书映射到唯一的应用程序ID。 该证书允许您的通知服务器连接到VoIP服务。 访问Apple Developer Member Center并创建新的VoIP服务证书。 参见下图。 下载证书并将其导入“钥匙串访问”应用程序。

要配置您的应用程序以接收VoIP推送通知,请链接到应用程序委托中的PushKit框架(或应用程序中的其他位置)。 然后,创建一个PKPushRegistry对象,将其委托设置为self ,并注册以接收VoIP推送。

接下来,实现一个委托方法来处理更新的推送凭证。 如果您的应用同时收到标准推送通知和VoIP推送,则您的应用将收到两个单独的推送令牌。 必须将两个令牌都传递给服务器才能接收通知。

最后,设置一个委托方法来处理推送。 如果收到推送后您的应用未运行,则您的应用将自动启动。

希望您喜欢它,请在评论部分中让我发表您的意见。

参考文献

  1. https://developer.apple.com/documentation/pushkit