一、什么是Push Notification

Push 这一概念最早是出现于 PushMail 中,指的是利用推送技术,将电子邮件直接传送到移动终端。简单的说,就是系统直接将电子邮箱中刚刚收到的邮件即时发送到用户手中,不像传统移动邮件系统那样必须依赖移动终端定期接/收邮件或用户主动检查邮箱,所以客户终端上时刻都能够与所指定的信箱维持同步的资料。
当你有新邮件时,服务器会在第一时间将这个消息“推”给你。相比传统的定时收信,Push的好处是可以让你更快地收到邮件。比如用foxmail客户端,设置了5分钟自动收信,当一封信在一个随机的时间发出之后,需要平均等待2.5分钟才可以得到通知,而如果服务器可以Push给你,就只需等待一个网络延时。而遗憾的是,在广泛使用的pop3或imap协议中,并没有考虑到Push机制,因此Push功能需要额外的开发和协议规定。
如果推而广之的说,不考虑电力以及流量的因素的话,当一个延时足够小的Pull(比如1分钟以内),对于用户的感受来说是和Push没有太多不同的,所以以下也将一并讨论,称之为广义的Push或者称之为伪Push。

二、为什么需要 Push Notification

Push Notification是iPhone OS中特有的概念,为了讨论方便,就暂时借用一下这个概念啦。 需要使用 Push ,很大的一个方面的意义在于很多人使用电子邮箱作为个人信息包括各种网上社会化服务的信息总管;使用Push的另一个原因,就是希望将所有的信息都集中到电子邮箱中进行集中化处理。(如果可以不集中到电子邮箱也能及时得到通知当然是不集中到邮箱的好)
可以通过邮件订阅RSS/Twitter Reply/收发 Twitter等,也能将IM信息第一时间转发到邮箱(BeeJiveIM 提供)

三、各个系统实现 Push 的方式

  1. BlackBerry OS
    因为传统意义上的 PushMail 就生于斯嘛,所以从某种程度上来说,黑莓的 Push 是最为根正苗红的。 黑莓的 Push 是基于运营商以及BES/BIS的,所以在流量、电力以及速度方面都有相当的优势,只是目前在中国的定价还是相当高昂非普通用户可以接受(移动基本BES套餐50M流量是398元)
  2. iPhone OS
    后起之秀 iPhone OS 在OS3 SDK 推出之时,也提供了 Push Notification 作为 iPhone 不能提供后台多任务的一个替代
  3. Android
    Android 系统内置的 GMail 是提供 Push 的,实现是通过 IMAP Idle 方式;内置的GTalk 后台服务也能及时送到最新聊天信息;以上两者皆是系统内置的,不过额外的第三方程序如果需要提供"Push",就需要在后台多添加一个进程,对于系统造成负担,毕竟手持终端还有电力、流量等桌面终端无需考虑的问题存在,所以一般除了 eMail 第三方程序Push并不是很好用
  4. Symbian/Windows Mobile
    一般使用 Exchange(公司邮箱或者Google Sync)来Push,Nokia也有提供 Nokia Messaging 这一专有协议的需要通过Nokia 服务器的PushMail,然后还有诸如emoze/尚邮这样的第三方PushMail,第三方PushMail存在的问题就是安全性不足,存在隐私泄露等问题,不过个人一般不必太过担心。
  5. Others
    可以使用Notify.me 或者inezha.com 订阅配合 IM 聊天软件进行伪"Push"。其实我觉得这种方式还是挺不错的,只是延时有两次,一次是Feed更新的延时,一次是抓取Feed之后通过IM机器人推送的延时。不过由于其普适性,以及没有太多系统要求,仍然是一种很方便的选择。