iOS 必知必會(huì) - PushKit 篇

PushKit 是什么?

iOS 必知必會(huì) - APNs 篇」有提到不同類型的推送,可能有人會(huì)問(wèn)除了 APNs 推送還有其他的嗎?事實(shí)上,蘋果在 iOS 8 新引入了一種全新的推送通知類型,被稱作 voip 推送,及一個(gè)全新的名為 PushKit 的框架。voip 推送區(qū)別于傳統(tǒng)的 APNs 推送,它可以讓 APP 即使進(jìn)程被殺死,也能在收到推送時(shí)執(zhí)行指定的代碼。

PushKit 有什么用?

簡(jiǎn)單的說(shuō),PushKit 中的 voip 推送能幫助我們改善 voip 應(yīng)用的體驗(yàn)。這是因?yàn)?voip 推送能在 app 進(jìn)程被殺死時(shí)也執(zhí)行指定的代碼,而且實(shí)測(cè)延時(shí)在 1 秒左右,可以說(shuō)是準(zhǔn)實(shí)時(shí)了。這樣 APP 通常就不需要再維持和 voip 服務(wù)器的長(zhǎng)連接了。看來(lái)蘋果的目的就是為了減少后臺(tái)的長(zhǎng)連接方案,因?yàn)楹笈_(tái)長(zhǎng)連接方案卡頓、耗電、影響用戶體驗(yàn)呀!

那為什么 APNs 就不行呢?

這是因?yàn)?APNs 的兩個(gè)限制:APNs 的通知是系統(tǒng)彈出的,APP 其實(shí)是無(wú)法直接獲取通知內(nèi)容的;APNs 的通知到來(lái)時(shí),APP 也無(wú)法提前執(zhí)行指定代碼,如彈出接聽界面。
假設(shè)我們用 APNs 來(lái)做 voip 推送,用戶收到來(lái)電提醒的通知后點(diǎn)開 APP,然后由于 APP 無(wú)法拿到通知內(nèi)容,因此需要和服務(wù)器交互后才知道哪個(gè)用戶呼叫自己,接著還要準(zhǔn)備好接聽界面并彈出,一來(lái)二去實(shí)時(shí)性差了很多。
而采用 voip 推送,APP 在收到來(lái)電提醒的通知后,根據(jù)通知內(nèi)容就可以知道哪個(gè)用戶呼叫該設(shè)備,進(jìn)而準(zhǔn)備好接聽界面并彈出本地通知告訴用戶有新的來(lái)電,用戶點(diǎn)開 APP 就能直接看到彈出的接聽界面了。

PushKit 與 APNs 的對(duì)比

PushKit 的 voip 推送 傳統(tǒng)的 APNs 推送
收到推送時(shí)的行為 可以執(zhí)行代碼 只能彈出系統(tǒng)通知
是否需要用戶授權(quán)
推送長(zhǎng)度 iOS 8 及以上 2Kb,以下 256 字節(jié) 4096 字節(jié)(4Kb)
證書類型 iOS Push Services VoIP Services

相比 APNs 推送,PushKit 的 voip 推送主要優(yōu)點(diǎn)在:

  1. 即使用戶在通知里關(guān)掉「允許通知」,或者 APP 進(jìn)程被殺掉,也可以通過(guò) PushKit 推送喚醒 APP 進(jìn)而執(zhí)行代碼。明顯 PushKit 功能更強(qiáng)大。
  2. PushKit 的 deviceToken 獲取無(wú)需用戶授權(quán),且在 APP 卸載重裝后也不會(huì)發(fā)生變化。

PushKit 的幾點(diǎn)說(shuō)明

  1. 雖然 PushKit 功能更強(qiáng)大,但它只在 iOS 8 以上才支持,并且只能 voip 應(yīng)用才能使用(蘋果會(huì)審核應(yīng)用是否是 voip 應(yīng)用)。
  2. APNs 推送 和 PushKit 推送 這里比較的都是基于二進(jìn)制的舊協(xié)議,如果采用基于 HTTP/2 的新協(xié)議,則這兩種不同類型的推送也只需要配置一種證書。

參考:

(完)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)上介紹iOS Push的文章有很多,但是大部分都總結(jié)得非常零散,加上之前也一直沒(méi)好好總結(jié)過(guò),對(duì)某些地方也不求甚解...
    紙簡(jiǎn)書生閱讀 2,893評(píng)論 1 29
  • 一個(gè)人的品德真的是很重要,無(wú)論是什么時(shí)候都能夠體現(xiàn)出一個(gè)人的品德。是個(gè)體依據(jù)一定的道德行為準(zhǔn)則行動(dòng)時(shí)所表現(xiàn)出來(lái)...
    稻城牛嗨嗨閱讀 137評(píng)論 0 1
  • 按理來(lái)說(shuō),職場(chǎng)新人是最好混的,因?yàn)闀呵覙?gòu)不成威脅。但是職場(chǎng)的“理”不是由你來(lái)說(shuō),度不過(guò)“萬(wàn)事開頭難”,第一印象與先...
    忍者神貓閱讀 776評(píng)論 0 11
  • 作者:菊長(zhǎng) 這個(gè)標(biāo)題有點(diǎn)基—— 卻是菊長(zhǎng)看完這部片的真實(shí)感受。 嗯,我說(shuō)的“燒”是燒腦的燒,真沒(méi)別的意思。 從沒(méi)看...
    Sir電影閱讀 1,699評(píng)論 1 21
  • 今天喝了一點(diǎn)點(diǎn)酒 真的就一點(diǎn)點(diǎn) 最近是一個(gè)在我看來(lái)很特別的時(shí)間點(diǎn) 6.22畢業(yè)一年 7.1 2018年過(guò)去一半 7...
    ashy21閱讀 255評(píng)論 0 0