有很多同學抱怨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 Conn ect 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分鐘。