iOS push

https://www.jianshu.com/p/213641cf524ahtml

https://www.jianshu.com/p/f9bef7e7a4ab服務器

 

http://www.javashuo.com/article/p-bpkjuvar-km.html網絡

 

PushKit是一種新的消息通知方式,旨在幫助voip應用(iOS 8)和watch OSComplication(iOS 9)減小電池的使用,提供更好的用戶體驗,app能夠經過PushKit進行喚醒,進行一些操做,而不被用戶感知。併發

PushKit和APNS的區別

  • APNS 遠程推送 ,在每次啓動時只能獲取到一條推送內容,而且相應的處理必須在用戶進行必定的操做後才能執行。而PushKit能夠在無操做的狀況就能進行消息的處理。
  • APNS須要獲取用戶的權限,若是用戶不一樣意接收推送,那麼app就獲取不到deviceToken,相應咱們也就沒辦法推送給客戶端消息,而PushKit則能夠,固然若是用戶拒絕接收通知欄等推送,你想在PushKit的代理方法中,進行本地推送,也是不能夠的。
  • PushKit相似於APNS的靜默推送,可是在送達率上比靜默推送可靠的多,用戶是能夠沒有任何感知的。


實驗結果:
1)APP在前臺,收到PushKit推送後,發送本地推送,APP不提示;(與其餘remote notification一致);
2)APP在後臺,或者被closed的狀態下,都能收到PushKit推送,併發出本地推送。我在另一個稍微複雜點的測試中,在收到PushKit推送和發送本地推送之間,加入了根據message id在服務器獲取消息具體內容的操做,也是正常的,可見在APP closed時,由PushKit推送調起的網絡訪問也是正常的。
3)APNs silent push優先級最低,而後是APNs普通推送,優先級最高的是PushKit推送。
4)APNs silent push和PushKit推送都能在APP處於後臺的時候,喚醒APP,運行30s,不一樣的是silent push在APP closed(用戶手動killed,手機重啓或者APP被系統回收)時不能喚醒APP,現象就是APP沒有反應,而PushKit在APP closed的時候,仍然可以喚醒APP,執行一段代碼。app

猜想,在APP closed狀態下,系統收到silent push後其實有能力執行APP的一段代碼,只不過silent push優先級低,因此被忽略了~測試

相關文章
相關標籤/搜索