Windows phone 8 推送

来源:互联网 发布:暗影精灵2优化教程 编辑:程序博客网 时间:2024/04/29 17:59

前言:Windows phone 8 的 Push Notification 与 IOS的Push Notification类似,都有自己的Push notification service服务器集群,IOS(APNS), Windows Phone(MPNS),这样做的好处是苹果和微软自己承担技术和设备风险。有效地控制用户电量,使体验更简单统一。

Windows phone 8 也是在系统级别(全局)开辟一个常驻内存的进程,即系统层有一个常驻的 TCP 长连接,一直保持的长连接,即使手机休眠的时候也在保持的长连接,保证与MPNS的连接,当从我们的服务器推送消息到MPNS使,MPNS通过这条链路将消息推送到设备终端,最终由设备选择应该将消息路由至哪个App。该过程完全与IOS的推送机制相同。


原理图:

原理介绍:

APP与MPNS之间由HttpNotificationChannel进行连接

1. App通过HttpNotificationChannel向 Push client Service(PCS) 请求Push URI(PURI)

2. Push client Service(PCS)与MPNS协商并且MPNS向 PCS返回一个PURI

3. PCS向APP返回PURI

4. APP向自己的服务器(Your Cloud Service)发送PURI(每个APP的PURI是不同的)

5. 自己的服务器(YCS)要推送消息时,YCS使用PURI向MPNS发送推送通知

6. MPNS接到YCS的请求之后,会发送一个Response Code到YCS,表示通知已被收到,下次有机会会发送到APP

7. MPNS将推送下发到APP

其中需注意问题:APP 与 PCS建立的连接是否是长连接,同一个用户的APP在不同时段获得的URI是否会改变?不同用户的APP获得的URI是否不同?应用退回到后台之后,网络连接断开后,如何推送?

相关类:

HttpNotificationChannel

示例代码:

待添加

注意事项:


1. 每个APP,同时只能打开一个Channel, PUR会发生改变,所以要注册ChannelUriUpdated事件

2. 打开一个推送通道(如果它尚不存在),或者连接到一个现有的推送通道。如果您的应用在之前的应用实例中创建了推送通道,则可能会存在一个推送通道。如果推送通道绑定到图块或 Toast 通知,则应用退出之后推送通道仍然存在,这样,即使该应用未运行,也仍然可以接收这些通知。

 我理解这句话的意思是:推送通道是整个系统级别的,如果已经存在了这个推送通道,并且是绑定到Tile或者Toast,即使退出应用,同样也可以接受通知。也就是说,APP与PCS、MPNS是长连接

3.休眠时候都保持在那里的 TCP 长连接,不会耗电很厉害么?
答案是:不会。这是手机的设计来做到的。TCP长连接有个心跳的时间,在国外可以很长比如30分钟,在国内则因为网络环境复杂一般10分钟。客户端发起的心跳,会短暂地消耗手机电能,但在这个心跳间隔期间,则消耗电能是很少的。当在心跳期间服务器端有推送信息过来时,客户端可以收到并做处理。


总体来说,Windows Phone 8 的Push Notification 与IOS类似,IOS貌似最大只能传送256byte的数据,windows Phone 8暂时不详,

原创粉丝点击