iOS两种推送方式的区别

APNs(Apple Push Notification service =APNs)是Apple推送通知服务。2016年的WWDC,苹果上线了token验证的推送方式,通过获得一个认证密钥(APNs Auth Key)去生成服务器端token,并且token非常容易生成,可以使用这些token令牌代替推送证书。一个认证密钥可用于多个应用程序并且永远不过期。每一个需要推送的App都需要配置推送证书的时代过去了。而且,一些第三方推送服务商,如极光、LeanCloud(官网强烈推荐的方式)目前已经升级支持APNs Auth Key Token模式。

1、认证方式

TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。新的APNs协议基于HTTP/2,旧推送是使用Universal Push Notification Client SSL 证书,新推送是使用Token认证。

1.1、基于证书的信任认证

iOS两种推送方式的区别_第1张图片
建立基于证书的Provider信任连接

建立连接工作的步骤如下:

1)Provider通过TLS向APNs发起安全请求。

2)APNs返回一个证书给Provider。

3)Provider验证APNs的证书,验证通过后,返回Apple提供的证书(通过苹果开发者账号创建的推送证书)给APNs。

4)APNs验证Provider返回的证书,从而确认连接请求来自于合法的Provider并建立TLS连接。

上述步骤完成后,信任连接建立,Provider服务器可以发送基于证书的远程推送消息请求给APNs。

iOS两种推送方式的区别_第2张图片
证书认证

1.2、基于Token的信任认证

iOS两种推送方式的区别_第3张图片
基于Token的Provider信任连接

建立连接工作的步骤如下:

1)Provider通过TLS向APNs发起安全请求。

2)APNs返回一个证书给Provider。

以上两步完成后,信任连接建立,Provider服务器可以发送基于Token的远程推送消息请求给APNs。

3)Provider验证APNs的证书,然后Provider发送的每个消息请求必须携带上JWT 认证的 Token。

4)APNs验证Provider返回的证书,并返回请求的结果。

iOS两种推送方式的区别_第4张图片
Token认证

2、推送服务配置过程

2.1、配置推送证书

1)在苹果开发者网站上创建两种 APNs 证书,有开发(Development)和生产(Production)两种。开发证书用于开发调试使用;生产证书既能用于开发调试,也可用于产品发布。选择该证书准备绑定的对应的 AppID。

iOS两种推送方式的区别_第5张图片
新建证书
iOS两种推送方式的区别_第6张图片
选择证书类型(开发或生产证书)
iOS两种推送方式的区别_第7张图片
选择证书需要绑定的App ID

2)在电脑上打开系统自带的 KeychainAccess 创建 Certificate Signing Request文件。

iOS两种推送方式的区别_第8张图片
创建CSR文件

3)回到浏览器中 CSR 上传页面,上传刚刚生成的后缀为 .certSigningRequest 的文件。

iOS两种推送方式的区别_第9张图片
上传CSR文件

4)生成证书成功后,点击 “Download” 按钮把证书下载下来,是后缀为 .cer 的文件。

iOS两种推送方式的区别_第10张图片
下载后缀为 .cer的证书

5)在电脑上双击证书后,会在“KeychainAccess”中打开,选择左侧“钥匙串”列表中“登录”,以及“种类”列表中“我的证书”,找到刚才下载的证书,并导出为 .p12 文件。

iOS两种推送方式的区别_第11张图片
导出.p12 文件

6)将导出的 .p12 文件(开发和生产的)上传至第三方推送平台。

2.2、配置认证密钥(APNs Auth Key)

1)在苹果开发者网站上创建Keys,填写相应的名称之后,网站会生成包含APNs Auth Key的.p8密钥文件。

iOS两种推送方式的区别_第12张图片
创建APNs Auth Key

2)将下载的的 .p8 密钥文件上传至第三方推送平台。

注:.p8 密钥文件只允许下载一次,需要妥善保管。

3、权限和使用期限

传统的推送证书,每个App需要单独配置两个(开发环境和生产环境)证书。推送证书的有限期为1年(生产的推送证书比开发的推送证书多一个月),过期之后需要重新配置。

新的token验证推送,一个认证密钥可用于多个App服务,而且永远不会过期。但是该密钥生成后,在网站上只允许下载一下,要保管好下载的.p8 密钥文件。

对于一个开发者账号管理着多个App,并且部分App迭代周期大于1年,这种新的推送认证方式大大地减少了管理证书人员的工作量。


参考文献:

WWDC2016-Session724(APNS新特性)

极光-iOS 证书设置指南

LeanCloud-iOS 推送证书设置指南

APNs Overview

基于HTTP/2与Token的APNs新协议

你可能感兴趣的:(iOS两种推送方式的区别)