天天看點

Windows phone 8 推送

前言:Windows phone 8 的 Push Notification 與 IOS的Push Notification類似,都有自己的Push notification service伺服器叢集,IOS(APNS), Windows Phone(MPNS),這樣做的好處是蘋果和微軟自己承擔技術和裝置風險。有效地控制使用者電量,使體驗更簡單統一。

Windows phone 8 也是在系統級别(全局)開辟一個常駐記憶體的程序,即系統層有一個常駐的 TCP 長連接配接,一直保持的長連接配接,即使手機休眠的時候也在保持的長連接配接,保證與MPNS的連接配接,當從我們的伺服器推送消息到MPNS使,MPNS通過這條鍊路将消息推送到裝置終端,最終由裝置選擇應該将消息路由至哪個App。該過程完全與IOS的推送機制相同。

原理圖:

Windows phone 8 推送

原理介紹:

APP與MPNS之間由HttpNotificationChannel進行連接配接

1. App通過HttpNotificationChannel向 Push client Service(PCS) 請求Push URI(PURI)

2. Push client Service(PCS)與MPNS協商并且MPNS向 PCS傳回一個PURI

3. PCS向APP傳回PURI

4. APP向自己的伺服器(Your Cloud Service)發送PURI(每個APP的PURI是不同的)

5. 自己的伺服器(YCS)要推送消息時,YCS使用PURI向MPNS發送推送通知

6. MPNS接到YCS的請求之後,會發送一個Response Code到YCS,表示通知已被收到,下次有機會會發送到APP

7. MPNS将推送下發到APP

其中需注意問題:APP 與 PCS建立的連接配接是否是長連接配接,同一個使用者的APP在不同時段獲得的URI是否會改變?不同使用者的APP獲得的URI是否不同?應用退回到背景之後,網絡連接配接斷開後,如何推送?

相關類:

HttpNotificationChannel

示例代碼:

待添加

注意事項:

1. 每個APP,同時隻能打開一個Channel, PUR會發生改變,是以要注冊ChannelUriUpdated事件

2. 打開一個推送通道(如果它尚不存在),或者連接配接到一個現有的推送通道。如果您的應用在之前的應用執行個體中建立了推送通道,則可能會存在一個推送通道。如果推送通道綁定到圖塊或 Toast 通知,則應用退出之後推送通道仍然存在,這樣,即使該應用未運作,也仍然可以接收這些通知。

 我了解這句話的意思是:推送通道是整個系統級别的,如果已經存在了這個推送通道,并且是綁定到Tile或者Toast,即使退出應用,同樣也可以接受通知。也就是說,APP與PCS、MPNS是長連接配接

3.休眠時候都保持在那裡的 TCP 長連接配接,不會耗電很厲害麼?

答案是:不會。這是手機的設計來做到的。TCP長連接配接有個心跳的時間,在國外可以很長比如30分鐘,在國内則因為網絡環境複雜一般10分鐘。用戶端發起的心跳,會短暫地消耗手機電能,但在這個心跳間隔期間,則消耗電能是很少的。當在心跳期間伺服器端有推送資訊過來時,用戶端可以收到并做處理。

總體來說,Windows Phone 8 的Push Notification 與IOS類似,IOS貌似最大隻能傳送256byte的資料,windows Phone 8暫時不詳,

繼續閱讀