苹果的推送服务APNs基本原理简单来说就是苹果利用自己专门的推送服务器(APNs)接收来自我们自己应用服务器的需要被推送的信息,然后推送到指定的iOS设备上,然后由设备通知到我们的应用程序,设备以通知或者声音的形式通知用户有新的消息。推送的前提是装有我们应用的设备需要向APNs服务器注册,注册成功后APNs服务器会返给我们一个device_token,拿到这个token后我们将这个token发给我们自己的应用服务器,当有需要被推送的消息时,我们的应用服务器会将消息按指定的格式打包,然后结合设备的device_token一并发给APNs服务器,由于我们的应用和APNs维持一个基于TCP的长连接,APNs将新消息推送到我们设备上,然后在屏幕上显示出新消息来。整个过程基本就这样,下面我们看一下设备注册APNs的流程图:

上图完成了如下步骤:
- 1 Device连接APNs服务器并携带设备序列号
- 2 连接成功,APNs经过打包和处理产生device_token并返回给注册的Device
- 3 Device携带获取的device_token向我们自己的应用服务器注册
推送经过的流程参照下图:

图中,Provider是指的是我们的应用服务器,APNS 是Apple Push Notification Service(苹果的推送服务器)。
上图可以分为三个阶段。
- 第一阶段:我们的应用服务器把要发送的消息、目的iPhone的标识打包,发给APNS。
- 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
- 第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。

从上图我们可以看到。
- 1、首先是应用程序注册消息推送。
- 2、 iOS跟APNS Server要deviceToken。应用程序接受deviceToken。
- 3、应用程序将deviceToken发送给PUSH服务端程序。
- 4、 服务端程序向APNS服务发送消息。
- 5、APNS服务将消息发送给iPhone应用程序。