APNs是远程推送通知服务,就是从远程服务器推送给客户端的通知(需要联网)
首先,传统的获取数据的方法存在局限性:只要用户关闭了app,就无法和app的服务器进行沟通,无法从服务器上获得最新的数据内容
APNs是为了苹果为了解决用户不能即时从服务器获得数据的解决方案
无论打开或者关闭app,只要是联网了,都可以接收到服务器推送的远程通知
所有的苹果设备,在联网的状态下,都会与苹果服务器建立长连接——即只要联网了,就一直建立连接———长连接的作用,如时间校准,系统升级,查找我的iphone等
APNs的原理——以 为陌陌推送消息为例
A给B发送一条消息,此时B不在线,如何将消息推送到B的手机?
首先,陌陌的的服务器只能在用户没有退出的前提下才可以和用户交互,用户接受到别人发送的消息,即时显示到自己的app.如果用户的app关掉,那只能通过苹果的APNs推送给用户
大体的流程----B发送的消息首先发送到默默的聊天服务器—陌陌拿到聊天数据然后发送给苹果的APNs服务器,APNs服务器负责将消息推送到用户的手机上
陌陌的服务器中保存着每个用户的账户信息,设备的唯一标识
APNs如何推送到具体到某个手机的具体的某个APP?—————
APNs如果想要推送一条消息给某个用户的具体某个APP,需要知道
1.哪一台设备(用户设备的唯一标识UIID)——陌陌服务器从客户端获取的,并且传给APNs的.————注意UUID是比较隐私的东西,陌陌服务器保存的是加密的UUID(自己看不到,只有苹果才可以解密)
2.这台设备的哪一个APP((陌陌,还是qq,给哪一个APP推送),应用的唯一标识.
注意:UUID和APPID通过调用苹果的API,苹果对其进行加密之后,然后再给陌陌服务器,陌陌服务器保存的是DeviceToken,只有苹果才可以解密用户的UUID.
苹果解析DeviceToken.解密出UUID和APPID.推送给用户
DeviceToken的数量取决于用户所装应用的数量