Push机制是在iOS3中出现的,最开始苹果引入这样一套机制是因为当时的iPhone尚不支持多任务,于是需要这样一套机制:当被切到后台时,程序仍然能够收到来自服务器的消息。使用场景比如推送的电子邮件数、IM的新消息提示等。服务器推送过来这样一条消息,然后系统会弹出这样一条消息引导用户点开。这样应用程序就得到了启动加载的机会,再次进入前台运行。
WP7中的Push机制几乎照搬了iOS,它提供的这种允许服务器主动向WP7客户端直接发送通知的机制,由于是服务器主动发起的,因此避免了Client使用轮询操作来更新,从而达到省点和省流量的目的。此外,还可以给用户造成一种”多任务”的感觉。
虽然机制大体一致,但是WP7中Push消息与iOS相比还是有一些区别的,下面具体介绍一下。首先看一下WP7推送服务的架构图:
WP7中Push分为三种:Tile、Toast以及Raw。
1. 瓷片通知(Tile):即WP7主界面显示的推送消息。
从图中可以发现,Tile和iOS中的程序图标显示的更新数很像,但是Tile消息更强大,实际上一条Tile通知分为三部分:
• 背景图片(80KB):图片可更换,大小不超过80k,下载时间不能超过30s。此外如果图片加载失败,则Tile的所有属性都不会更新
• Title文字
• 计数
2. 吐司通知(Toast):即类似与对话框提示消息。
Toast相比之下要简单一些,有三个部分:
• Title:标题
• Content:内容,消息体中长度不限,但是UI中只会显示一定的长度
• Parameter:这个参数可以指定当用户点击toast时,应用程序加载后应该进入哪个页面
3. 原生通知(Raw):一种自定义格式的通知,是不可见的。需要注意的是,如果当前没有运行您的应用程序,RAW被微软推送通知服务丢弃。
Push和Battery
使用Push有许多的限制,MPNS(MicroSoft Push Notification Service微软推送服务)会根据设备电量状态决定是否将通知发送到设备,具体的策略是:正常电量发送所有Push,低电量只发送RAW,极低电量不发送任何通知