iOS 必知必会 - PushKit 篇

PushKit 是什么?

「iOS 必知必会 - APNs 篇」有提到不同类型的推送,可能有人会问除了 APNs 推送还有其他的吗?事实上,苹果在 iOS 8 新引入了一种全新的推送通知类型,被称作 voip 推送,及一个全新的名为 PushKit 的框架。voip 推送区别于传统的 APNs 推送,它可以让 APP 即使进程被杀死,也能在收到推送时执行指定的代码。

PushKit 有什么用?

简单的说,PushKit 中的 voip 推送能帮助我们改善 voip 应用的体验。这是因为 voip 推送能在 app 进程被杀死时也执行指定的代码,而且实测延时在 1 秒左右,可以说是准实时了。这样 APP 通常就不需要再维持和 voip 服务器的长连接了。看来苹果的目的就是为了减少后台的长连接方案,因为后台长连接方案卡顿、耗电、影响用户体验呀!

那为什么 APNs 就不行呢?

这是因为 APNs 的两个限制:APNs 的通知是系统弹出的,APP 其实是无法直接获取通知内容的;APNs 的通知到来时,APP 也无法提前执行指定代码,如弹出接听界面。
假设我们用 APNs 来做 voip 推送,用户收到来电提醒的通知后点开 APP,然后由于 APP 无法拿到通知内容,因此需要和服务器交互后才知道哪个用户呼叫自己,接着还要准备好接听界面并弹出,一来二去实时性差了很多。
而采用 voip 推送,APP 在收到来电提醒的通知后,根据通知内容就可以知道哪个用户呼叫该设备,进而准备好接听界面并弹出本地通知告诉用户有新的来电,用户点开 APP 就能直接看到弹出的接听界面了。

PushKit 与 APNs 的对比

PushKit 的 voip 推送 传统的 APNs 推送
收到推送时的行为 可以执行代码 只能弹出系统通知
是否需要用户授权
推送长度 iOS 8 及以上 2Kb,以下 256 字节 4096 字节(4Kb)
证书类型 iOS Push Services VoIP Services

相比 APNs 推送,PushKit 的 voip 推送主要优点在:

  1. 即使用户在通知里关掉「允许通知」,或者 APP 进程被杀掉,也可以通过 PushKit 推送唤醒 APP 进而执行代码。明显 PushKit 功能更强大。
  2. PushKit 的 deviceToken 获取无需用户授权,且在 APP 卸载重装后也不会发生变化。

PushKit 的几点说明

  1. 虽然 PushKit 功能更强大,但它只在 iOS 8 以上才支持,并且只能 voip 应用才能使用(苹果会审核应用是否是 voip 应用)。
  2. APNs 推送 和 PushKit 推送 这里比较的都是基于二进制的旧协议,如果采用基于 HTTP/2 的新协议,则这两种不同类型的推送也只需要配置一种证书。

参考:

  • PushKit
  • Voice Over IP (VoIP) Best Practices

(完)

你可能感兴趣的:(iOS 必知必会 - PushKit 篇)