在线应用程序中大量的数据需要从服务器传送到手机。以传统的电子邮件为例,应用程序以一定时间间隔从服务器获取新邮件。为了保证信息及时更新这个间隔需要足够短。这种机制在手机上会过于频繁地启动无线通信功能,因而耗费宝贵的电池续航能力和无线通信流量。这种机制的另一个问题是邮件应用程序为了检查新邮件必须正在运行中,然而实际上服务器有重要新邮件时,手机的邮件应用程序可能并没有启动或激活。

为了解决这些问题,Windows Phone为开发者提供了推送通知的服务。其原理很简单,当服务器有信息要发送到手机应用程序,该信息会通过微软推送通知服务传给手机。

三类推送通知

根据应用程序和传递数据的性质,开发者可以从三类推送通知中进行选择。

瓷砖通知Tile Notification)是出现在首页应用程序瓷砖图标上的通知。只要应用程序以瓷砖图标方式加到首页,推送通知可以灵活改变瓷砖图标的标题、背景和计数。

弹出通知Toast Notification)是无论应用程序是否在运行都会弹出在屏幕顶部,与屏幕等宽的通知。停留约10秒后通知自动消失,手指划动通知则立刻消失。单击该通知会启动相关应用程序。英文名称烤面包(Toast)源于微软的MSN桌面应用,因为通知在背景中向上弹出时很像面包从烤面包机中弹出来。弹出通知不能更新程序的数据,想做到这一点需要使用原生通知。

原生通知Raw Notification)用于将消息直接传递给应用程序,并允许在用户使用应用程序过程中实时更新用户界面。

通知的推送过程

通知的推送过程分成以下步骤。

首先,应用程序首次运行时调用推送通知服务 ,请求并登记一个用于通信的专用URI (Uniform Resource Indicator)

此后,当服务器有新数据时,服务器通过推送通知服务向第一步登记的URI传递信息。推送通知服务以瓷砖通知,弹出通知或原生通知中的合适方式,将数据发送到手机。

推送通知服务向手机发送通知后会向服务器确认推送完毕,然而他不能确认该通知是否被应用程序成功接受。