有不少同窗抱怨MPNS的各類問題,其中包括服務超時、返回各類錯誤代碼不知如何處理等等。。今天我用一點時間來爲你們介紹下如何處理和操做我們的MPNS。windows
首先爲你們明確一個問題,Microsoft Push Notification Service (MPNS) 是執行的異步推送。今天將介紹如何使用高效的服務將咱們的推送信息發送至雲端最終發送到 Windows Phone 手機。安全
第一 如何設置發送超時服務器
對於超時時間我建議你們設置爲 15秒。例如:你使用的 ASP.NET 進行數據推送時,創建 WebRequest 對象設置超時時間網絡
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
request.Timeout = 15000;異步
第二 處理推送通道的更新async
當你的客戶端程序發現推送通道更新後,應用必定要將最新的推送通道 URL 更新到你的服務器端。要保證您的服務器端的推送通道是最新的。建議你可使用 device ID 與推送通道進行匹配,若是發現推送通道的URL更新就馬上進行推送通道更新,服務器經過device ID進行判斷是,新用戶註冊仍是已有用戶的推送通道更新。spa
Windows Phone 的官方資料中提供瞭如何創建一個接受推送消息的應用代碼示例,其中包括瞭如何處理,推送通道更新事件。您能夠參考 如何發送和接收 Windows Phone 的磁貼通知 瞭解如何使用PushChannel_ChannelUriUpdated方法。(另:推送通道長度也許會超過 1024 characters)code
第三 使用已驗證的 Web 服務以發送 Windows Phone 的推送通知對象
使用MPNS認證端,若是你的推送服務針對一臺WindowsPhone設備24小時內推送消息數量超過500條,或者您想更安全的推送消息。另使用沒有MPNS驗證的終端進行推送,每日的推送限額是500條/每一個device。blog
如何設置 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分鐘。 |
更多資源請參考: