- 
							
							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具有唯一的标识性 代表了你的应用运行在了相应的设备上 你的应用应该将 该token转发给供应商 现在供应商服务 就可通过客户端的证书连接到APNS 然后发送一个标准的 HTTP/2的POST请求 从而向那个token 发送一次推送 HTTP/2供应商接口将 提供一个即时回应 来表示是否能成功发送 同时 APNS收到 并且会验证这个推送请求是否有效 如果发生错误 就会报告这个token无效 APNS会返回 一个状态码为400的错误信息 或者“无效请求” 以及相关的错误指示 举例来说 设备token无效 新的供应商协议会提供即时的反馈 如果设备token被移除了 那么你会得到一个HTTP/2的回应 其状态码410或代表移除的文字描述 并且该回应中 还提供了一个时间戳来标识 APNS何时知道 该设备token被移除了 我们还简化了证书的相关处理 作为新的供应商协议的一部分 你现在只需要规定一次证书 来覆盖你的应用 complication以及Voip Push 这个证书既可以在开发环境 又可以在生产环境中使用 这样可以减少很多麻烦 在管理 新建 以及撤回证书的过程中 开发者可以避免一些过去出现的麻烦 现在 让我们来听一下 像你们开发者的反馈 并且我们已经认识到了 简化工作流程的重要性 那些在发送推送通知中涉及到的流程 我们意识到管理证书实在是太复杂了 对于很多应用来说 所以今天我们非常激动的通知 一个新的 简洁的认证机制会引入到APNS中 token认证机制介绍 在APNS中的应用 Token认证机制通过 用供应商的token 在发送通知的过程中 替代了客户端的证书 这种认证token是用来 简化服务端与APNS之间的连接方式 此外 这些token非常容易 通过程序生成 所以再也不用担心 需要去处理那些证书过期的问题了 这一切能实现依赖于 JSON Web token 作为一种生成认证证书的机制 有很有多种程序语言 选项的库可以用 来生成这些token 现在 在我们讨论一些细节之前 关于token认证机制的细节 让我们首先了解 证书认证机制是如何工作的 你们可以选择参加 通过开发者账号获得一个客户端证书 当使用同一种认证连接APNS的时候 APNS会提供一个服务端的证书 用来让你信任和效验 就像握手一样 你的供应商会为客户端证书签名 从而APNS会进行效验并且建立证书 此时一个彼此信任的连接就建立了 在APNS与供应商之间 任何通过这个连接发送的 推送都会附加 一个客户端证书中的应用标示 当使用token认证机制的时候 你应通过账户选择一个token 的签名键值 然后你的供应商建立一个PLS连接 并不需要包含一个客户端证书 但是 在通过这个连接发送通知之前 供应商需要创建一个认证的token 包含你的团队ID 然后为它签名 现在就可以通过这个连接发送通知了 每一个通知消息 在签名后都需要 包含这个认证token 这个请求还需要包含应用相关的信息 APNS首先验证 来自服务端的token 然后再处理请求 如果请求被成功的处理了 APNS就会返回一个 包含成功信息的回应 如果请求中没有token信息 或者token信息无效 返回的回应会包含一个错误指示信息 作为一个提醒类型的服务 APNS不会在有错误发生时关闭连接 现在让我们来看一下 如何生成一个供应商token 你首先需要配置一个签名键值 在证书、身份 配置下设置(开发者账户中) 这样产生了一个公共-私有的键值面板 然后这个私有的键就可以使用了 用来当作密码为token数据签名 Apple会使用对应的公匙 来对token进行效验 下面让我们来关注下 如何生成token 上面是一个例子 用来说明 一个JSON Web Token 在参与请求中是什么样子的 让我们看一下 该JSON Web token结构 你可以看到它有三个部分 每一个部分都是被 base-64编码过的URL的形式 一段时期内这种形式都不会改变 下面被解码的部分 代表着该Web token 第一个部分是header 它包括了一些属性 用来描述了token签名使用的算法 在我们的例子中 使用的是ES256 它还描述了键的标识符 这个键是用来给token签名的 claim部分包含了用于效验的数据 那就是你的开发者的团队ID 可以通过你的开发者账户获得 claim部分中的下一个属性 是一个初始化的时间戳 用来表示时间点 token的最后一个部分一个签名 通过对一些数据使用了加密算法后 再进行了base-64的编码 这些数据来源于 header以及claim部分 这样避免了任何未授权的干预 来自token 这里是一个HTTP/2创建的 一个使用token认证的请求 就像你看到的那样 这个请求包括了一个header区 以及一个数据区 header区由很多 APNS相关的变量组成 现在你可以看到header区了 包含了一个认证header 在“bearer”值 后面是带签名的供应商token 如果这个带token认证的 请求是有效的 那么回应就会返回一个 200的状态码或者“OK”的信息 这里可以看到这种回应的结构 如果供应商token是无效的 会返回403的状态码 或者“禁用”的信息 现在APNS会要求 周期性的产生新的token 如果token存在的时间太长 回应同样会 返回403或者“禁用”的信息 并且会指示出token过期了 APNS会要求token的创建时间 必须在一个小时以内 但并不是每一个连接都需要 产生一个新的token 实际上处于性能的考虑 我们建议 在token有效的时候 就一直使用它 所以这里还有一些更多的 关于token认证的细节 就如之前提到的供应商token 需要周期性的被创建 但是 需要注意 键值“签名”不会失效 如果你觉得“签名”键值 需要变化 那么可以在开发者账户中撤销它 然后部署一个新的键 作为一个提醒类型的服务 APNS会长久支持证书认证方式 并且也会长久支持token认证方式 并且这种token认证方式会 在今年内晚些时候出现 本次会议的更多的信息请访问页面 developer.apple.com/wwdc16/724 下面是一些关于 Notification的相关会议 你可能会感兴趣: 主题为Introduction to Notifications的会议 在周三的上午9点 于Pacific Heights召开 接下来 主题为Advanced Notifications的会议 会在周三的上午10点 于Pacific Heights召开 我们希望到时候还再能看到你们 谢谢大家 
-