iOS 必知必会 - PushKit 篇

作者: Strong_Liu | 来源:发表于2017-08-15 22:55 被阅读54次

    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 的新协议,则这两种不同类型的推送也只需要配置一种证书。

    参考:

    (完)

    相关文章

      网友评论

      • 狗头蘑菇:voip推送证书只有生产类型的,是不是我只有产品上线后才能给手机发推送?还有推送直接用APNS的推送怎么不行啊?我换了证书和p12,token也是voip专门的token,但就是无法推送成功,大神帮个忙吧!
        Strong_Liu:voip推送证书只有生产类型的,这是为了简化使用,完全可以生产、沙盒环境同一个应用只用这一个的。APNS和PushKit是两套不同的推送,所用token也不同,需要注意区分。
        无法推送成功的问题,可以参看下之前写的这篇:https://www.jianshu.com/p/13185cba2abf,里面有收不到推送的问题排查办法。
      • SoulmateA:大神,Java后台如何搭建呢?
        SoulmateA:@Strong_Liu 谢谢啦
        Strong_Liu:Java 后台一般基于二进制的推送用 notnoop 库 ,基于 HTTP/2 的推送用 Pushy 库。

      本文标题:iOS 必知必会 - PushKit 篇

      本文链接:https://www.haomeiwen.com/subject/eorkrxtx.html