这篇文章给大家聊聊关于系统推送集成(十二):Legacy信息本地与远程通知编程全攻略,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
General Provider Requirements - 基本Provider要求
作为提供商,您可以通过二进制接口与Apple 推送通知服务进行通信。该接口是为提供商提供的高速、大容量接口;它使用流式TCP 套接字设计和二进制内容。二进制接口是异步的。支持此接口,但如果可能,您最好使用APNs API。
生产环境的二进制接口可在gateway.push.apple.com 获取,端口2195;开发环境的二进制接口可在gateway.sandbox.push.apple.com 端口2195 上获取。
对于每个接口,使用TLS(或SSL)建立安全通信通道。这些连接所需的SSL 证书是从您的开发者帐户获取的。 (有关详细信息,请参阅APNs 概述。)要建立受信任的提供商身份,请在使用对等身份验证进行连接时向APNs 提供此证书。
注意:要与APN 建立TLS 会话,Entrust Secure CA 根证书必须安装在提供商的服务器上。如果服务器运行macOS,则此根证书已存在于钥匙串中。在其他系统上,证书可能不可用。您可以从Entrust SSL 证书网站下载此证书。
作为提供商,您负责远程通知的以下方面:
您必须合成通知负载(请参阅创建远程通知负载)。
您有责任提供要在应用程序图标上显示的徽章编号。
定期连接到反馈服务并获取重复报告失败的传递尝试的设备的当前列表。然后停止向与这些应用程序关联的设备发送通知。有关更多信息,请参阅反馈服务。
如果您打算支持多种语言的通知消息,但不使用aps 有效负载字典的loc-key 和loc-args 属性在客户端提取本地化警报字符串,则需要本地化服务器的文本-侧面警报消息。为此,您需要从客户端应用程序中找出当前的语言首选项。向服务器提供用户的语言首选项描述了如何获取此信息。有关loc-key 和loc-args 属性的信息,请参阅创建远程通知负载。
The Binary Interface and Notification Format - 二进制接口和通知格式
二进制接口使用普通TCP 套接字来实现流式二进制内容。为了获得最佳性能,可以通过接口对多个通知进行批处理,或者使用TCP/IP Nagle 算法在单次传输中进行批处理。通知格式如图A-1所示。
注意:所有数据均按网络顺序指定,即大端字节序。
通知格式的顶层按顺序包含以下内容:
Table A-1 Top-level fields for remote notifications帧数据由一系列项目组成。每个项目按以下顺序组成:
Table A-2 Fields for remote notification frames项及其标识符如下:
Table A-3 Item identifiers for remote notifications如果您发送APNs 接受通知,则不会返回任何内容。
如果发送格式错误或无法识别的通知,APN 将返回错误响应数据包并关闭连接。使用同一连接在格式错误的通知之后发送的任何通知都将被丢弃,并且必须重新发送。错误响应报文格式如图A-2所示。
Figure A-2 Format of error-response packet数据包的命令值为8,后跟一字节状态代码和格式错误通知的通知标识符。表A-4 列出了可能的状态代码及其含义。
Table A-4 Codes in error-response packet状态代码10 表示APNs 服务器关闭了连接(例如,执行维护)。错误响应中的通知标识符指示先前已成功发送的通知。您发送的任何被丢弃的通知都必须重新发送。收到此状态代码后,请停止使用此连接并打开一个新连接。
请注意,生产环境中的设备令牌和开发环境中的设备令牌不是相同的值。
The Feedback Service - 反馈服务
Apple 推送通知服务包括反馈服务,可为您提供有关失败的远程通知的信息。如果由于设备上不存在预期的应用程序而无法传递远程通知,则反馈服务会将设备的令牌添加到其列表中。远程通知在投递前过期的,不视为投递失败,不影响反馈服务。通过使用此信息停止发送无法送达的远程通知,您可以减少不必要的消息传递开销并提高整体系统性能。
每天查询反馈服务以获取设备令牌列表。使用时间戳来验证自反馈条目生成以来设备令牌尚未重新注册。停止为每个尚未重新注册的设备发送通知。 APNs 监控提供商检查反馈服务的工作,并避免向设备上不存在的应用程序发送远程通知。
注意:反馈服务为每个推送主题维护一个单独的列表。如果您有多个应用程序,则必须使用适当的证书为每个应用程序连接一次反馈服务才能接收所有反馈。
反馈服务具有类似于用于发送远程通知的二进制接口。您可以通过端口2196 上的Feedback.push.apple.com 访问生产反馈服务,通过端口2196 上的Feedback.sandbox.push.apple.com 访问开发反馈服务。与远程通知的二进制接口一样,安全通信通道是使用TLS(或SSL)建立的。用于发送通知时,请使用用于连接反馈服务的相同SSL 证书。要建立受信任的提供商身份,请在使用对等身份验证进行连接时向APN 提供此证书。
连接后,传输立即开始;您不需要向APN 发送任何命令。从反馈服务读取流,直到没有更多数据可供读取。接收到的数据是一个元组,格式如下:
图A-3 反馈元组的二进制格式Table A-5 Table读取后,反馈服务列表将被清除。每次连接到反馈服务时,它返回的信息仅列出自上次连接以来发生的失败。
【系统推送集成(十二):Legacy信息本地与远程通知编程全攻略】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
Legacy 信息怎么处理?这篇文章能帮到我吗?
有6位网友表示赞同!
感觉集成本地和远程通知挺复杂的,希望能学到些技巧。
有11位网友表示赞同!
终于找到关于 Legacy 信息的文章了! 我一直在寻找解决方案。
有13位网友表示赞同!
系统推送一直是个很大的挑战,希望这篇文章能给我一些启发。
有5位网友表示赞同!
我之前做过一些本地通知的编程,远程通知还没接触过,希望能从这篇文章中学到。
有20位网友表示赞同!
文章提到“集成”,是不是包含很多不同的技术?
有19位网友表示赞同!
有没有相关的代码例子可以参考?
有16位网友表示赞同!
Legacy 信息是什么样的?有具体类型吗?
有6位网友表示赞同!
我想了解远程通知的编程规范,这篇文章能提供吗?
有11位网友表示赞同!
系统推送的集成越来越常见了,希望能掌握相关的知识。
有19位网友表示赞同!
学习一下编程指南,也许可以提升我的开发效率。
有9位网友表示赞同!
期待看到一些实际应用场景
有13位网友表示赞同!
这篇文章是不是针对特定平台的?
有10位网友表示赞同!
Legacy 信息处理会影响系统的性能吗?
有13位网友表示赞同!
远程通知与本地通知有什么区别呢?
有12位网友表示赞同!
写篇文章内容是否比较专业?我需要一定的编程基础才能理解吗?
有20位网友表示赞同!
希望这篇文章能提供一些通用的解决方案,而不是针对特定问题的处理方法。
有11位网友表示赞同!
系统推送的集成未来会发展成什么样子?
有8位网友表示赞同!
如果想深入了解 Legacy 信息,需要参考哪些资料呢?
有19位网友表示赞同!