今天看了一篇关于苹果系统接收推送消息的文章,简单记录一下
推送系统也有测试环境(沙盒环境)和正式环境
苹果推送服务
对于苹果的 ios 系统来说,它有自建的官方推送服务 APNS(Apple Push Notification service)。当我们的手机处于开机状态时,iOS 系统内置的一个推送服务便会一直处于运行的状态,并与 APNS 服务器保持长连接,随时准备接收APNS服务器的推送消息。
当我们向 APNS 服务器发送一条推送消息时,APNS 服务器就会将消息推送给对应的设备。而对应的 iOS 设备接收到推送消息后,又会将消息传递给对应的 APP 处理
DeviceToken
DeviceToken 是跟设备和App绑定在一起的。不同设备的同一应用,它们的 DeviceToken 是不同的。同一设备的不同应用,它们的 DeviceToken 也是不同的。
还记得我们每次新装一个应用的时候都会弹出一个「是否允许XXX给你发送系统消息」的提示吗?
当你点击「允许」之后,你的手机便会向 APNS 服务器请求生成一个 DeviceToken,此时 APNS 服务器便将这个 DeviceToken 和这个 iOS 联系起来了。除非你将应用卸载,否则这个 DeviceToken 就一直跟你的这个设备和这个应用绑定在一起了
苹果推送的流程
第一步,当我们启动应用后 App 弹出是否允许「系统通知」的请求,我们点击允许后,iOS 设备向 APNS 服务器请求一个 DeviceToken。此时,APNS 服务器将这个 DeviceToken 与该 iOS 设备绑定起来。
第二步,当我们需要发送推送消息时,我们请求我们的后台服务器,告诉它我们要发一条推送消息给某个 DeviceToken。后台服务器接收到消息后转而请求APNS 服务器的沙箱环境接口或线上环境接口。
第三步,当 APNS 服务器接收到请求后,它根据 DeviceToken 取出之前已经建立的与该 iOS 建立的长连接,最后将需要发送的内容输出到该长连接中。
第四步,与 APNS 服务器建立长连接的 iOS 设备接收到消息后,分析这个 DeviceToken 属于哪个 App,并将其分发给对应的 App 进行处理。