晚上简单了解了以下iOS(iPhone, iPad, iPod touch)上的push notification机制。
其实平时我说的push notification里面包含了两个东西,一个是local notification,另外一个史push notification。
local notification与push notification除了前者是本地程序发起的,后者是有远程服务器发起的之外,其他的表现形式——对用户来说——都是一样的。他们都是为了程序不再前台运行的时候通知用户的。
local notification是程序使用iOS的API注册一个定时的“通知消息”,到指定时间就会把该“通知消息”推送到屏幕上给用户(如果注册该notification的程序不在前台运行了)。
push notification是程序注册接受消息,然后当iOS从远程服务器接收到该程序的推送消息,再行推送消息到屏幕。
local notification实际上是确定的,push notification则是依赖于远程服务器并且不确定什么时候会有的。
我理解的push notification是这么一个过程,iOS底层始终有一个连接保持与远程notification 服务器的连接。当有消息要推送给用户的时候,远程服务器就在该连接里面发送消息。iOS底层接受到该消息,然后推送到用户屏幕。
Related posts:





#1 by juntao on 22/02/2012 - 16:16
服务器和客户端之间维持一个tcp常连接。如果有消息了,服务器就发数据包给客户端。这是一个网络连接。
#2 by yautou on 22/02/2012 - 15:07
你好,首先十分感谢你的经验分享!让我学到不少。
另外,还想请教一下,假如服务器端有消息要push了,它是如何在‘该连接里发送消息’的?这是哪些方面的知识?能否麻烦指点下?
再次谢谢你!