APNs
对于苹果的 iOS 系统来说,它有自建的官方推送服务 APNS(Apple Push Notification service)。当我们的手机处于开机状态并且联网(有些平台称为用户上线)时,iOS 系统内置的一个推送服务便会一直处于运行的状态,并与 APNS 服务器保持长连接,随时准备接收APNS服务器的推送消息。
DeviceToken
世界上的 iOS 设备那么多,APNS 服务器怎么知道这条消息是要推送给哪个设备的呢?
DeviceToken 是跟设备和App绑定在一起的。不同设备的同一应用,它们的 DeviceToken 是不同的。同一设备的不同应用,它们的 DeviceToken 也是不同的。
每次新装一个应用的时候都会弹出一个「是否允许XXX给你发送系统消息」,当你点击「允许」之后,你的手机便会向 APNS 服务器请求生成一个 DeviceToken,此时 APNS 服务器便将这个 DeviceToken 和这个 iOS 联系起来了。除非你将应用卸载,否则这个 DeviceToken 就一直跟你的这个设备和这个应用绑定在一起了。
当我们需要发送推送消息时,APNS 服务器便会根据我们传递的 DeviceToken 参数寻找到对应的长连接,再将要发送的数据通过长连接推送到对应的设备上。