天天看點

APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程

什麼是推送通知

消息通知分本地通知和遠端推送通知,是沒有運作在前台的應用程式可以讓它們的使用者獲得相關消息通知的方式。消息通知可能是一條消息,即将發生的月曆事件,或遠端伺服器的新資料。當被作業系統顯示時,本地通知和推送通知看起來一樣。它們可以顯示一個警告資訊或在應用程式的圖示上面顯示一個徽标。它們也可以在警告窗或徽标顯示時播放一段聲音。推送通知是在 iOS 3.0 和 Mac OS X v7.0 之後引入的。本地通知是在 iOS 4.0 之後引入的。它們都不支援 Mac OS X,當使用者被通知相應的應用程式有消息,事件,或其他資料時,他們可以啟動該應用程式并檢視詳情。他們也可以選擇忽略通知,此時應用程式沒有被激活。

本地通知和推送通知為不同的需求而設計的。本地通知是本地 iPhone、iPad、或iPod touch 上面的應用發起的。相反推送通知(又稱遠端通知)是從其他裝置上面到達的。它來自一個遠端裝置——應用程式的提供者——并在有新的消息需要檢視或新的資料需要下載下傳的時候被推送到本地裝置上面的應用,常見的本地通知像iphone的月曆,微信或者qq這些都是本地推送,比如還安裝了優酷,qq視訊這些軟體,允許推送後,每天會給你發些新的視訊消息,這些就是遠端推送。

什麼是APNS?

蘋果推送通知服務(APNs)是推送通知的網關,iPhone ipad 對于應用程式在背景運作有諸多限制,考慮到手機電池電量,應用不允許在背景進行過多的操作。是以,當使用者切換到其他程式後,原先的程式無法保持運作狀态。對于那些需要保持持續連接配接狀态的應用程式(比如社群網絡應用),将不能收到實時的資訊。推送是解決輪詢所造成的流量消耗和電量消耗的一個比較好的解決方案

為解決這一限制,蘋果推出了APNs(蘋果推送通知服務 Apple Push Notification services)。APNs 允許裝置與蘋果的推送通知伺服器保持常連接配接狀态。當你想發送一個推送通知給某個使用者的iPhone上的應用程式時,你可以使用 APNs 發送一個推送消息給目标裝置上已安裝的某個應用程式。

蘋果的推送服務APNs基本原理簡單來說就是蘋果利用自己專門的推送伺服器(APNs)接收來自我們自己應用伺服器的需要被推送的資訊,然後推送到指定的iOS裝置上,然後由裝置通知到我們的應用程式,裝置以通知或者聲音的形式通知使用者有新的消息。推送的前提是裝有我們應用的裝置需要向APNs伺服器注冊,注冊成功後APNs伺服器會返給我們一個device_token,拿到這個token後我們将這個token發給我們自己的應用伺服器,當有需要被推送的消息時,我們的應用伺服器會将消息按指定的格式打包,然後結合裝置的device_token一并發給APNs伺服器,由于我們的應用和APNs維持一個基于TCP的長連接配接,APNs将新消息推送到我們裝置上,然後在螢幕上顯示出新消息來。

順便說下安卓的推送,Android消息推送采用MQTT協定,伺服器端采用mosquito+PhpMQTTClient,有興趣的同學可以看看。

推送流程

擷取裝置device_token階段

整個過程基本就這樣,下面我們看一下裝置注冊APNs的流程圖:

APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程

上圖完成了如下步驟:

1.Device連接配接APNs伺服器并攜帶裝置序列号

2.連接配接成功,APNs經過打包和處理産生device_token并傳回給注冊的Device

3.Device攜帶擷取的device_token向我們自己的應用伺服器注冊

4.完成需要被推送的Device在APNs伺服器和我們自己的應用伺服器注冊

執行順序如下所示:

APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程

這裡要提到的一點是,我們的裝置和APNS伺服器之間的通訊是基于SSL協定的TCP流通訊,二者之間維持一個長連接配接,當從APNS伺服器注冊成功後,一定要将device_token發送給我們的應用伺服器,因為在推送過程中,首相是由我們的應用伺服器(上圖中Provider)将需要推送的消息結合device_token按指定格式(後面會提到)打包然後發送給APNS伺服器,然後由APNS伺服器推送給我們的裝置。

消息推送過程

好了,注冊裝置的過程完成了,接下來就是如何推送了:

APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程

推送的過程經過如下步驟:

1.首先,安裝了具有推送功能的應用,我們的裝置在有網絡的情況下會連接配接蘋果推送伺服器,連接配接過程中,APNS會驗證device_token,連接配接成功後維持一個長連接配接;

2.Provider(我們自己的伺服器)收到需要被推送的消息并結合被推送裝置的device_token一起打包發送給APNS伺服器;

3.APNS伺服器将推送資訊推送給指定device_token的裝置;

4.裝置收到推送消息後通知我們的應用程式并顯示和提示使用者(聲音、彈出框)

完整流程介紹

比較直覺的流程參照下圖:

APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程
APNS推送服務介紹什麼是推送通知什麼是APNS?推送流程

應用啟用推送通知功能,需要使用者确認;

應用收到裝置識别ID(device token),相當于接收推送通知的位址;

應用将裝置識别ID發送到你開發的伺服器;

當有推送通知的需要時,你就可以通過你開發的服務元件發送資訊到蘋果的伺服器上;

蘋果推送通知服務将資訊推送到使用者的裝置上。

上圖顯示了我們的應用伺服器将消息推送到我們的App的完整路徑,其實真正完成推送的是APNS伺服器,我們自己的應用伺服器隻是将需要推送的消息告訴蘋果伺服器,至于如何維護消息隊列或如何保證消息能被推送到指定的裝置上,這些都由蘋果APNS給我們做完了