有不少同窗抱怨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分钟。 |
更多资源请参考: