有很多同學抱怨MPNS的各種問題,其中包括服務超時、返回各種錯誤代碼不知如何處理等等。。今天我用一點時間來為大家介紹下如何處理和操作咱們的MPNS。
首先為大家明確一個問題,Microsoft Push Notification Service (MPNS) 是執行的異步推送。今天將介紹如何使用高效的服務將我們的推送信息發送至雲端最終發送到 Windows Phone 手機。
第一 如何設置發送超時
對於超時時間我建議大家設置為 15秒。例如:你使用的 ASP.NET 進行數據推送時,建立 WebRequest 對象設置超時時間
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
request.Timeout = 15000;
第二 處理推送通道的更新
當你的客戶端程序發現推送通道更新后,應用一定要將最新的推送通道 URL 更新到你的服務器端。要保證您的服務器端的推送通道是最新的。建議你可以使用 device ID 與推送通道進行匹配,如果發現推送通道的URL更新就立刻進行推送通道更新,服務器通過device ID進行判斷是,新用戶注冊還是已有用戶的推送通道更新。
Windows Phone 的官方資料中提供了如何建立一個接受推送消息的應用代碼示例,其中包括了如何處理,推送通道更新事件。您可以參考 如何發送和接收 Windows Phone 的磁貼通知 了解如何使用PushChannel_ChannelUriUpdated方法。(另:推送通道長度也許會超過 1024 characters)
第三 使用已驗證的 Web 服務以發送 Windows Phone 的推送通知
使用MPNS認證端,如果你的推送服務針對一台WindowsPhone設備24小時內推送消息數量超過500條,或者您想更安全的推送消息。另使用沒有MPNS驗證的終端進行推送,每日的推送限額是500條/每個device。
如何設置 MPNS驗證的終端。
設置已驗證的 Web 服務以發送 Windows Phone 的推送通知
No-quota push notifications using a root Certificate Authority
另外,如果你的推送服務超過每天500條的推送對每台設備,有一點您就需要額外的考慮用戶的手機電量是使用情況了。
第四 根據MPNS返回的代碼進行處理
通常移動設備的網絡都會變化的,了解 Windows Phone 網絡連接的變換狀態判斷規則:設備狀態的過度流程
你將推送服務發送至MPNS,隨后MPNS會將設備的信息返回,你需要觀察設備狀態(Windows Phone 的推送通知服務響應代碼),在進行處理我推薦一些做法如下:
Response code | Notification status | Device connection status | Subscription status | Recommendations |
200 OK | QueueFull | Connect | Active | 建議從新發送通知,但是可以設置一個重發時間間隔,如果還收到同樣錯誤代碼嘗試延長重試時間:4 – 8 – 16 分鍾以此類推到32分鍾。 |
200 OK | QueueFull | Temp Disconnected | Active | 建議從新發送通知,但是可以設置一個重發時間間隔,如果還收到同樣錯誤代碼嘗試延長重試時間:2 – 4 – 8 分鍾以此類推到 24 小時。 |
404 Not Found | Dropped | * Any Connection Status | Expired | 不需要再嘗試發送消息了,因為這個推送通道已經不存在了。 |
412 Precondition Failed |
Dropped | Disconnected | N/A | 建議每小時嘗試一次從新發送,但是如果超過24小時還是返回相同錯誤,就停止推送。 |
503 | N/A | N/A | N/A | 建議從新發送通知,但是可以設置一個重發時間間隔,如果還收到同樣錯誤代碼嘗試延長重試時間:5 – 10 – 20 – 40 秒以此類推到30分鍾。 |
更多資源請參考: