大家好,关于系统推送集成(十二):本地与远程通知编程攻略之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读取后,反馈服务列表将被清除。每次连接到反馈服务时,它返回的信息仅列出自上次连接以来发生的失败。
后记
本文主要讲二进制Provider API。感兴趣的话就点个赞或者关注吧~~~
好了,关于系统推送集成(十二):本地与远程通知编程攻略之Legacy信息详解和的问题到这里结束啦,希望可以解决您的问题哈!
【系统推送集成(十二):本地与远程通知编程攻略之Legacy信息详解】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
看来是要学习怎么处理老旧的信息了!
有15位网友表示赞同!
希望能详细讲解怎么把 Legacy 信息融入到新的通知系统中。
有6位网友表示赞同!
Legacy 数据这块我一直比较头疼,如果能有个好的解决方案就太好了!
有7位网友表示赞同!
这种集成指南太实用啦,期待深入了解这个方面的知识点。
有6位网友表示赞同!
本地和远程通知的结合确实是个挺有挑战的事情,尤其处理 Legacy 信息更不容易。
有12位网友表示赞同!
系统推送集成已经很多个版本了,这次的重点内容是什么呢?
有14位网友表示赞同!
感觉这种指南专门针对一些老项目,可以帮助我们更好地进行升级改造。
有6位网友表示赞同!
希望这篇文章能解决我一直在纠结的问题,怎么才能兼容 Legacy 数据而不影响新的推送功能。
有14位网友表示赞同!
以前就遇到过 Legacy 信息和新系统之间衔接的问题,希望通过学习这篇文档能有所提升。
有10位网友表示赞同!
老项目的数据处理一直都是一个难题,期待这篇文章能够给出一些实际的操作技巧。
有16位网友表示赞同!
文章中包含具体的编程指南吗?可以让我更好地理解和实践?
有17位网友表示赞同!
Legacy 信息的维护成本是很高的,如果能实现自动化处理就非常理想。
有18位网友表示赞同!
新的通知系统能不能支持兼容 Legacy 数据格式呢?
有18位网友表示赞同!
这篇文章是否适合初学者学习?它能否提供基础知识讲解?
有5位网友表示赞同!
我很想知道Legacy信息如何被存储和管理的,希望文章能够详细说明?
有13位网友表示赞同!
集成指南涵盖了哪些编程语言? 我现在主要使用 Python 进行开发。
有17位网友表示赞同!
这个系统推送有什么具体的应用场景和优势吗?
有12位网友表示赞同!
期待通过这篇文章学习到如何更好地处理 Legacy 信息,并将其纳入最新的通知系统中。
有15位网友表示赞同!
感谢作者分享这样的实用指南,能帮助我们提升软件开发的效率。
有12位网友表示赞同!