iOS遠程推送原理

來源:互聯網
上載者:User

標籤:溝通   串連   擷取資料   token   服務   另一個   通知   結束   推送   

遠程推送

就是從遠程server推送訊息給client的通知。當然須要連網。

遠程推送服務APNs (Apple Push NotificationServices)

 

為什麼須要遠程推播通知?

傳統擷取資料的局限性是僅僅要使用者關閉了app。就無法跟app的server溝通。無法從server上獲得最新的資料內容

而遠程推播通知能夠解決問題,無論使用者開啟還是關閉app,僅僅要連網了,都能接收到server推送的遠程通知。

我們先從網路連接開始瞭解下。

http協議:是個短串連,一個請求一個響應就結束了。

典型的網路請求。

tcp/ip協議:三向交握串連,僅僅要server或者client不主動斷開。保持串連著。大概QQ聊天就是這樣的協議了。


推送,我們從QQ聊天著手吧。

A使用者和B使用者聊天:

1.A和B使用者同一時候線上,跟server保持串連狀態下:“A發送訊息給B:在嗎?,B回複:在的。”我們分析下這個過程。

->A將訊息“在嗎?”發送給QQserver,此時由於B與server也保持串連,因此server將訊息發送給B,相同B的回複也反向傳輸成立。

2.A發送訊息給B。但B不線上。

->這樣的情況下,server無法將A的訊息發送給B了。那我們手機不線上的情況下是怎麼收到A的訊息的?


那我們就不得不拿出來神器遠程推送了。遠程推送是通過蘋果的APNsserver來實現的。僅僅要你的蘋果裝置連網狀態,你的裝置就與蘋果的APNsserver保持一個長串連狀態。

那我們就能夠想到。A將訊息發送給server時,server將訊息發送給APNsserver的方式能夠實現將訊息發送給B了,那詳細是怎麼實現的呢?我們往下看:

1. A與B安裝QQclient。登入自己的QQ號碼時。A和B將自己的QQ號碼+蘋果裝置的DeviceToken發送給QQserver,QQserver將這一組資料儲存在自己的資料庫中。

擷取DeviceToken方法。在AppDelegate.m中:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {}
2.A將訊息“在嗎?”發送給B時,server發現B不線上,這時,server從資料庫中尋找B相應的DeviceToken,將B的DeviceToken+訊息“在嗎?”發送給APNsserver。

3.APNsserver收到訊息後,找到B相應的DeviceToken,將訊息“在嗎?”發送給B的裝置。


那麼另一個疑問。APNsserver將訊息發送給B的裝置。那怎麼知道是QQclient呢?

事實上說白了。這個事情就被DeviceToken包括了,當你擷取DeviceToken時,蘋果偷偷的將裝置的UDID和APP和bundle identifier發送給蘋果server。蘋果server返回給你了DeviceToken。因此QQserver將訊息+B的DeviceToken發送給蘋果的APNsserver時,蘋果已經知道了是哪個client了。


----end








iOS遠程推送原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.