淺談iOS Push 在iOS6/7/8/9中的進化

來源:互聯網
上載者:User
簡介

        在iOS裝置安裝APP後,通常都會詢問是否允許發送通知(下圖),同意後,一般情況下使用者都會收到某APP的push。比如,使用者收到一條微博,他們喜歡的球隊贏了比賽,或者他們的晚飯準備好了,既然APP不在運行,所以APP不能檢查這些事件。    幸運的是Apple針對這些問題提供瞭解決方案。開發人員可以寫一個服務端的組建,替代用戶端不停的檢測或者在後台工作。


Push的原理        

push 訊息走的APNs伺服器,裝置和APNs(Apple Push Notification Service)伺服器之間建立了一個安全通道。關於push的原理,如下圖,詳細看這裡


把圖片翻譯一下就是:

1. 用戶端向 APNs註冊一下,並擷取token

2. APN是將token傳給用戶端

3. 用戶端將token發給自己的Server

4. 在合適的時候,自己的Server給APNs發送push訊息。

5. 最終APNs發送給用戶端 iOS Push 在iOS6/7/8/9中的進化

那麼隨著iOS版本的進化,Push互動和功能也在變化

iOS6 (待補充)

iOS7 支援後台push,靜默push。裝置不顯示,也不響鈴,點擊瞭解更多

★ iOS7 app內擷取系統->通知 具體函數是 [[UIApplication sharedApplication] enabledRemoteNotificationTypes]

iOS8 支援push的更多互動(比如快速回複、刪除單個push等)

★ iOS8 發布的時候(從那個時間點起),push的body體可以支援到2k了,以前是256B

★ iOS8 app內擷取系統->通知。具體函數是 [[UIApplication sharedApplication] currentUserNotificationSettings];

開發人員的介面的變化

/* 下面幾個是iOS6/7/8上的介面,統一在- (void)application:didReceiveRemoteNotification:中處理*/ 方法1:- (void)application:didReceiveRemoteNotification://iOS6 方法2: - (void)application:didReceiveRemoteNotification:fetchCompletionHandler://iOS7,iOS8 方法3: - (void)application:handleActionWithIdentifier:forRemoteNotification:completionHandler://iOS8,9

一般應用有三種狀態:
a)應用未啟動;
b)應用已啟動,但處於後台;
c)應用處於前台。
對於以上三種狀態,iOS7,8,9 在收到訊息通知後都會調用方法 2,這也符合官方文檔的描述。
bug 然而對於 iOS 10.0.2,當應用處於 a 或 b 狀態時,調用方法 1,當應用處於 c 狀態時,調用方法 2。
另外:如果不做處理,iOS7上可以會遇到push重複的問題,解決辦法點這裡 開發過程中,程式員如何測試push 這裡有php開發的一短代碼(拷貝到檔案以php尾碼名)。需要你產生認證和provisionfile。這樣可以用本機給iOS APP發送push了。裡面用的的ck.pem需要自己產生。 點擊這裡下載

 
Push需要注意的地方 ● 自己Server發的每一條Push,用戶端都會收到麼。答案是否定的, 
Push是不可靠的,push通知是fire-and-forget,比如手機關機,那麼自然就收不到,雖然Apple會嘗試幾次。 ● iOS8發的時間點起,無論那個iOS系統,push訊息的body大小調整為2k,注意這裡是iOS8的時間點,也就是2014年秋, 
就目前來說push的限制應該是2k不再是256了 ● 測試Push的時候,區分好Appstore認證和開發認證。兩者不能相互發Push
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.