Zheming 的个人资料享受生活日志列表留言簿更多 工具 帮助
4月16日

苹果为什么要做 Push Notification而不是真正的“后台运行”?

iPhone 是一个革命性的移动互联网终端,其 Multitouch 多点触控操作是在鼠标之后的又一革新。但是,在 iPhone 上迟迟不见后台运行程序的支持。虽然,从技术的角度来说,iPhone OS 在系统架构上和 Mac OS X 如出一辙,同样也支持后台程序(比如 Apple 的电话程序等,都是可以在后台运行的),但是 Apple 是从政策上不允许第三方应用程序在后台运行。其理由是技术上的“第三方程序在后台运行会消耗大量的电能,影响设备的待机时间”。但是我们依然可以看到,主流的掌上设备操作系统无一例外的支持第三方程序的后台进程,也不见得这些设备的电能受到如此大的影响。可见这个技术问题,也许只是一个托辞,那么,Apple 为什么要做 Push Notification 呢?

从我的理解来看,Apple 在 iPhone 上市初始阶段,仅允许第三方程序使用 Web App 的方式运行在 iPhone / iPod touch 的 Safari 浏览器中,并为 Safari 浏览器(确切的说是 Webkit 引擎)新增了很多特性来支持这些仅为 iPhone 开发的 Web App。并且,有一些有意思的增强可以在 Apple-Specific Meta Tag Keys 这个页面中找到。其中使用 “apple-mobile-web-app-capable” 这个 meta-tag,可以让 Web App 在 Safari 中以全屏的方式运行,这,难道不就是一个 WebOS 上应用程序的样子?

从这里再联想到 Push Notification,Push Notification 是要求开发者自己有一个 Web 服务器的,并且可以使用 Push Notification 服务来给 Apple 的服务器发送通知消息,之后这个消息会被用推送的方式转发到 iPhone/iPod touch 设备上。可以想见,这个方式,是可以同时让本机的程序,和 Web App 都可以采用的通告方式。反而,让 Web App 这样一个基于 RESTful 的 HTTP 协议下的产物在后台运行,是不现实的。

结论很简单,这一切都是为了让 iPhone/iPod touch 这个 Apple 下一代的掌上明珠,可以持续站在 Web OS 时代的最高峰。iPhone 是一个革命性的移动互联网终端。