如何獲得 Microsoft Push Notification Service(MPNS)的最佳體驗

有很多同学抱怨MPNS的各种问题,其中包括服务超时、返回各种错误代码不知如何处理等等。。今天我用一点时间来为大家介绍下如何处理和操作咱们的MPNS。

首先为大家明确一个问题,Microsoft Push Notification Service (MPNS) 是执行的异步推送。今天将介绍如何使用高效的服务将我们的推送信息发送至云端最终发送到 Windows Phone 手机。

 

第一 如何设置发送超时

对于超时时间我建议大家设置为 15秒。例如:你使用的 ASP.NET 进行数据推送时,建立 WebRequest 对象设置超时时间

HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
request.Timeout = 15;

 

第二 处理推送通道的更新

当你的客户端程序发现推送通道更新后,应用一定要将最新的推送通道 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 网络连接的变换状态判断规则:设备状态的过度流程

如何獲得 Microsoft Push Notification Service(MPNS)的最佳體驗

你将推送服务发送至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分钟。

更多资源请参考:

发送 Windows Phone 的推送通知

Windows Phone 的推送通知服务响应代码

更多相关文章
一周排行
  • ESD(Electro-Static discharge)的意思是"静电释放".ESD试验的目的的模拟带有较高电压静电的人体触摸受试设备时发生时发生的现象,以及模拟人体接触受度设备附近的其它金属物 ...
  • 


    		    Windows server 2003RRAS實現單網卡VPN代理上網
    Windows server 2003RRAS实现单网卡VPN代理上网 Windows s
  • 题目:uva757 - Gone Fishing(贪心) 题目大意:有N个湖泊仅仅有一条通路将这些湖泊相连.每一个湖泊都会给最開始5分钟间隔内能够调到的鱼(f).然后给每过5分钟降低的鱼的数量(d),假设当前的鱼少于
  • dup和dup2函数:int dup(int filedes); int dup2(int filedes,int filedes2); 返回:若成功为新的文件描述符,若出错为-1 作用:用来一个文件描述符,经常用来
  • 在App.xaml中添加以下代码: <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...
  • PS: 出门晚了一点,公交太慢,,迟到了,在二楼最里面找个位置坐下了,点完菜,我去洗手间洗脸. LR现在老犀利了.我说我上学时候怎么没感觉呢.她说上学时候就很厉害了,大姐大的派头,现在更犀利了. 吃完晚饭,下雨了,晚
  • Reference:  https://support.microsoft.com/en-us/kb/828736     Calling C# .NET methods from unmanaged C/C++ c
  •  Help cupid Problem's Link:  http://acm.hnu.cn/online/?action=problem&type=show&id=13308&coursei ...
  • 经历了两周的团队项目,我们进行了一个简单的总结: 对TFS不够重视,第一周几乎没有使用TFS,第二周大部分是将完成了的工作添加到TFS当中. 这也反映了一个问题,就是对项目细节的安排不到位,最开始的时候我们有一些简单
  • Java核心知識點學習多線程並發之線程間的通信,notify,wait
    1.需求: 子线程循环10次,主线程循环100次,这样间隔循环50次. 2.实现: pac ...