-
Apple Push Notification Service 的新功能
首先回顾基于 HTTP/2 的提供程序 API,然后了解一项重要的新功能:基于令牌的身份验证。了解如何利用身份验证令牌连接到 APN,以通过 HTTP/2 API 发送推送信息,从而减少与维护有效证书相关的开销。
资源
-
下载
Apple Push Notification Service的 新功能 欢迎来到724号会议 关于Apple Push Notification Service的 新功能 我是Mayur Mahajan 我从事于Apple Push Notification Service 即APNS 我迫不及待跟你们分享 APNS中即将上线的功能
首先让我们回顾一些 过去已经增强的功能 这些功能是在去年发布的
首先我们提供了一种新的服务端协议 基于HTTP/2来进行 持续的推送 HTTP/2协议传输采用二进制编码 支持在一个连接中使用多种数据流 并且十分快速 这种新的协议让推送一则消息 变得很容易
这种新的协议支持即时的反馈 从而可以立即获知设备的token 是否处于激活状态
这种协议还允许发送 更多字节的有效载荷 最多可以发送4000字节 你可以利用这一点 来创建更加丰富的应用
此外 我们还简化了证书的处理 所以你们现在只需要维护更少的证书 这些证书被用来与APNS进行连接
我们现在每秒推送着数十万条通知 归功于使用了这种新的协议 如果你还没有试用过新的推送服务 那么你真的应该去尝试一下了
让我们重新来看一下那些关键的步骤 关于发送一则Push Notification 右下角是客户端应用 右上角是供应商 它是一个服务端组件用来连接APNS 并且发送 Push Notification
目前在你开始发送通知之前 你应该注册 Push Notification 通过你的开发者帐号来完成
这样你的应用就可以 向操作系统来注册推送服务 当它在设备上运行的时候 左下角
设备会向APNS请求一个token 这个token用来代表这个应用 设备会将该token传递给你的应用
这个token具有唯一的标识性 代表了你的应用运行在了相应的设备上
现在供应商服务 就可通过客户端的证书连接到APNS 然后发送一个标准的 HTTP/2的POST请求 从而向那个token 发送一次推送
HTTP/2供应商接口将 提供一个即时回应 来表示是否能成功发送 同时 APNS收到 并且会验证这个推送请求是否有效
如果发生错误 就会报告这个token无效 APNS会返回 一个状态码为400的错误信息 或者“无效请求” 以及相关的错误指示 举例来说 设备token无效
新的供应商协议会提供即时的反馈 如果设备token被移除了 那么你会得到一个HTTP/2的回应 其状态码410或代表移除的文字描述
并且该回应中 还提供了一个时间戳来标识 APNS何时知道 该设备token被移除了
你现在只需要规定一次证书 来覆盖你的应用 complication以及Voip Push
这样可以减少很多麻烦 在管理 新建 以及撤回证书的过程中 开发者可以避免一些过去出现的麻烦
现在 让我们来听一下 像你们开发者的反馈 并且我们已经认识到了 简化工作流程的重要性 那些在发送推送通知中涉及到的流程
所以今天我们非常激动的通知 一个新的 简洁的认证机制会引入到APNS中
Token认证机制通过 用供应商的token 在发送通知的过程中 替代了客户端的证书
这种认证token是用来 简化服务端与APNS之间的连接方式
此外 这些token非常容易 通过程序生成 所以再也不用担心 需要去处理那些证书过期的问题了
这一切能实现依赖于 JSON Web token 作为一种生成认证证书的机制
现在 在我们讨论一些细节之前 关于token认证机制的细节 让我们首先了解 证书认证机制是如何工作的
当使用同一种认证连接APNS的时候 APNS会提供一个服务端的证书 用来让你信任和效验
就像握手一样 你的供应商会为客户端证书签名 从而APNS会进行效验并且建立证书 此时一个彼此信任的连接就建立了 在APNS与供应商之间
任何通过这个连接发送的 推送都会附加 一个客户端证书中的应用标示
当使用token认证机制的时候 你应通过账户选择一个token 的签名键值
然后你的供应商建立一个PLS连接 并不需要包含一个客户端证书 但是 在通过这个连接发送通知之前 供应商需要创建一个认证的token 包含你的团队ID 然后为它签名
如果请求被成功的处理了 APNS就会返回一个 包含成功信息的回应
如果请求中没有token信息 或者token信息无效 返回的回应会包含一个错误指示信息
你首先需要配置一个签名键值 在证书、身份 配置下设置(开发者账户中)
这样产生了一个公共-私有的键值面板 然后这个私有的键就可以使用了 用来当作密码为token数据签名
上面是一个例子 用来说明 一个JSON Web Token 在参与请求中是什么样子的
你可以看到它有三个部分 每一个部分都是被 base-64编码过的URL的形式 一段时期内这种形式都不会改变
第一个部分是header 它包括了一些属性 用来描述了token签名使用的算法 在我们的例子中 使用的是ES256
claim部分包含了用于效验的数据 那就是你的开发者的团队ID 可以通过你的开发者账户获得
claim部分中的下一个属性 是一个初始化的时间戳 用来表示时间点
token的最后一个部分一个签名 通过对一些数据使用了加密算法后 再进行了base-64的编码 这些数据来源于 header以及claim部分 这样避免了任何未授权的干预 来自token
就像你看到的那样 这个请求包括了一个header区 以及一个数据区 header区由很多 APNS相关的变量组成 现在你可以看到header区了 包含了一个认证header 在“bearer”值 后面是带签名的供应商token
如果这个带token认证的 请求是有效的 那么回应就会返回一个 200的状态码或者“OK”的信息
如果token存在的时间太长 回应同样会 返回403或者“禁用”的信息 并且会指示出token过期了
但并不是每一个连接都需要 产生一个新的token 实际上处于性能的考虑 我们建议 在token有效的时候 就一直使用它
就如之前提到的供应商token 需要周期性的被创建 但是 需要注意 键值“签名”不会失效
如果你觉得“签名”键值 需要变化 那么可以在开发者账户中撤销它 然后部署一个新的键
并且也会长久支持token认证方式 并且这种token认证方式会 在今年内晚些时候出现
本次会议的更多的信息请访问页面 developer.apple.com/wwdc16/724
下面是一些关于 Notification的相关会议 你可能会感兴趣:
主题为Introduction to Notifications的会议 在周三的上午9点 于Pacific Heights召开 接下来 主题为Advanced Notifications的会议 会在周三的上午10点 于Pacific Heights召开 我们希望到时候还再能看到你们 谢谢大家
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。