iOS系统推送的理解
2014-10-11 14:34
190 查看
iOS推送涉及到三个对象,分别是:device、provider和APNs(Apple Push Notification service),device就是我们的设备(iPhone, iPad之类)、provider就是我们自己维护的推送服务器,虽然APNs翻译出来是苹果推送服务,我这里就把它当做苹果一个负责推送的服务器。
我们的device和provider只与APNS通讯,APNs是provider和device沟通的媒介,它用来分发推送和验证推送实体的有效性。
obtains the device certificate and key during device activation and stores them in the keychain)。不过要清楚一点就是这个certificate中含有一个唯一标识这个设备的id,安全连接的建立过程就是APNs把自己的证书发送给device,device验证通过之后,device还把自己的证书发给APNs,APNs验证过后这个连接就建立起来了,此时APNs也得到了device的id,之后APNs要做的就是使用device
id生成device token,然后用一个token key加密这个device token,再传回给device,device得到了加密过的device token之后就回调给相应的app。
拿到token之后,程序每次启动也还要与APNs建立连接,这时的过程有一些不同,TLS连接建立成功后,系统要把这个token发给APNs,然后APNs使用他的token key解密这个token得到device id,然后跟device发给他的用于验证的certificate中的id作比较,相同的话证明这个token是自己生成的,然后把原来的token发回去。
那么Token就生成之后,App要将这个token发送给provider。
下面就进入通知的内容了,当Provider要发送通知时,他可以组织一个数据结构,其中包含一些通知的内容,最主要的要包含token,然后他将这些东西按照苹果指定的规则发送给APNS,APNS得到这个数据包,拿到token,用他的key将token解密,得到device id,因为这条连接对应了某一个bundle id,所以此时APNS已经能够得到所有他要发送给的设备和设备上的应用的信息了。
我们的device和provider只与APNS通讯,APNs是provider和device沟通的媒介,它用来分发推送和验证推送实体的有效性。
Device与APNs
首先,Device第一次与APNS建立连接(这个第一次应该是相对于特定的bundle id而言的,因为不同的bundle id获取到的device token应该也不同吧,这个还不确定,可以验证一下),这个连接是TLS的安全连接,为此我们的设备中肯定存在一个certificate(unique device certificate),它在激活时获得并且保存在钥匙串中,开发文档里有一段话(Itobtains the device certificate and key during device activation and stores them in the keychain)。不过要清楚一点就是这个certificate中含有一个唯一标识这个设备的id,安全连接的建立过程就是APNs把自己的证书发送给device,device验证通过之后,device还把自己的证书发给APNs,APNs验证过后这个连接就建立起来了,此时APNs也得到了device的id,之后APNs要做的就是使用device
id生成device token,然后用一个token key加密这个device token,再传回给device,device得到了加密过的device token之后就回调给相应的app。
拿到token之后,程序每次启动也还要与APNs建立连接,这时的过程有一些不同,TLS连接建立成功后,系统要把这个token发给APNs,然后APNs使用他的token key解密这个token得到device id,然后跟device发给他的用于验证的certificate中的id作比较,相同的话证明这个token是自己生成的,然后把原来的token发回去。
那么Token就生成之后,App要将这个token发送给provider。
Provider与APNs
Provider和APNs之间的连接也是TLS安全连接,provider使用的certificate是从dev center 请求并下载的推送证书,这个证书里面包含了topic(我们app的bundle id),并且我们的provider的系统上也要保存Root CA用来验证APNs发过来的证书,TLS安全连接建立成功之后,APNs也得到Provider的topic也就是app的bundle id,也就是说这个APNs知道这个连接发送推送通知的应用程序是哪一个了。下面就进入通知的内容了,当Provider要发送通知时,他可以组织一个数据结构,其中包含一些通知的内容,最主要的要包含token,然后他将这些东西按照苹果指定的规则发送给APNS,APNS得到这个数据包,拿到token,用他的key将token解密,得到device id,因为这条连接对应了某一个bundle id,所以此时APNS已经能够得到所有他要发送给的设备和设备上的应用的信息了。
相关文章推荐
- 如何才能系统的学习 iOS 开发,理解一些规则和深层次的机制原理?
- 如何才能系统的学习 iOS 开发,理解一些规则和深层次的机制原理?
- 新系统iOS 8下推送注册-registerForRemoteNotifications
- iOS 键盘理解和拿到更改系统键盘
- 苹果iOS系统下的推送机制及实现
- 移动社交游戏平台OpenFeint在安卓和iOS平台发布游戏消息推送系统GameFeed
- 深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(上)
- 如何才能系统的学习 iOS 开发,理解一些规则和深层次的机制原理?
- iOS开发利用系统推送Notifaction和轮询实现简单聊天系统
- iOS---iOS10适配iOS当前所有系统的远程推送
- IOS、Andriod、WP8 三大系统后台运行及消息推送机制
- android系统和ios系统的推送是如何实现的,有什么区别
- Android与iOS系统的消息推送机制
- iOS怎么判断用户是否打开了系统设置里面推送通知的开关?
- Android与iOS系统的消息推送机制
- [转]关于安卓与ios的推送系统,我说说自己的看法。
- 有无可能在非IOS系统上实现苹果为网易/腾讯邮箱做的实时推送
- IOS、Andriod、WP8 三大系统后台运行及消息推送机制
- IOS远程推送和本地推送的理解
- 手机没有推送更新系统,如何更新到 iOS 11