手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

供应商与苹果推送信息服务器通信 翻译苹果文档

首页 > 苹果相关 >

原文地址:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

                        供应商与苹果推送通知服务器的沟通

                                                                                    翻译:tangly

供应商与苹果推送信息服务器通信

 

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

普通供应商的需求

作为一个供应商与苹果推送通知服务的通信。这个接口对于程序供应商是高速的、大容量的接口;它使用一个流TCP插座设计结合二进制的内容。二进制接口是异步的。

生产环境的二进制接口可以通过gateway.push.apple.com端口2195来连接;沙箱(发展)环境的二进制接口可以通过gateway.sandbox.push.apple.com端口2195来连接。您可能会建立多个并行连接到相同的网关或多个网关的实例。

对于每一个接口可以你应该使用TLS(或SSL),以建立一个安全通信通道。这些连接所需的SSL证书通过IOS服务器分配。 细节“配置和发展”。)要建立一个值得信赖可以供应商的身份,在连接的时候,你应该使用此证书点对点的验证连接APNS

 

注:建立一个TLSAPNS的会话,委托安全的CA根证书必须安装提供商的服务器上。如果服务器是运行Mac OS X,这根证书已经在钥匙串中了。在其他系统中,证书可能无法使用。你可以下载来自委托SSL证书的网站的证书。

 

你也应该保留与APNs连接的多个通知。APNs可能会考虑,迅速,并多次作为一个拒绝服务攻击可以建立和撕裂可以连接。错误时,APNS会关闭发生错误连接。

你作为一个供应商,应该以下几个方面的推送通知负责:

您必须构建有效的通知(见“有效通知”)。

必须负责提供标志(badge号在应用程序图标上显示(右上角)

您应该定期与反馈Web服务器连接,并获取目前那些已经多次报道过失败的传输的设备列表(清单)。然后,你应该停止向这些应用程序相关联的设备发送通知。更多信息可以见“反馈”服务。

 

如果您打算支持多种语言的通知消息,但不使用客户端获取的本地化提醒字符串APS有效载荷字典LOC键和LOC - ARGS属性,你需要本地化警报消息可以文本服务器端。要做到这一点,你需要找出目前的客户端应用程序的语言偏好。 调度,登记,处理通知”可以说明为获得这一信息的方法。 LOC键和LOC- args的属性信息可以请可以“通知有效载荷”。

二进制接口和通知格式

二进制接口采用的二进制内容的信息流在本质上是一个普通的TCP套接字。为了获得最佳性能,你应该在单一的传输接口通过分批传输多个通知,明示或使用一个TCP / IP Nagle算法

该接口支持两种格式的通知数据包,简单的格式和增强的格式,以解决一些简单的格式的问题:

通知的有效期:APNS有一个存储并转发的功能,它可以保证最近的通知发送到装有应用程序的设备上。如果该设备是在接收通知时掉线当该设备下次联网时,APNS会再次提供通知。简单的格式,不管通知是否是已经发送过针对性的通知。换句话说,该通知可以随着时间的推移变得“过时”。增强的格式包含着一个有限期值来表示通知有效期。当通知期限值到时,APNS丢弃存储和转发器里的通知。

错误的反馈回应:简单的格式,如果你发送一个通知数据包,在某种方面是畸形的,例如,发送的内容超过规定的限制, APNS会响应切断连接,而且不会拒绝通知的原因。增强的格式,让一个供应商用一个任意的标识符来标记通知。如果有一个错误,APNS会返回一个与该错误代码相关联的标示符。这种应答使供应商能够查找和纠正畸形的通知。

 

大多数供应商推荐使用增强的格式。

 

让我们研究简单的通知格式,首先是因为这种格式增强格式共享。图5-1说明了这种格式。

Figure 5-1  Simple notification format

 

5-1 简单通知格式

大小: 15.14 K
尺寸: 500 x 111
浏览: 615 次
点击打开新窗口浏览全图

简单的格式中的第一个字节是0(零)的命令值。设备令牌和发送消息的长度必须在网络字节序(即大端法)。此外,您应该使用二进制格式设备令牌进行编码。发送的消息内容不得超过256字节,不得是null结尾的

清单5-1给出了一个函数使用简单的通知格式发送一个推送通知 到APNS上的二进制接口的例子。该示例假定SSL优先连接gateway.push.apple.com(或gateway.sandbox..push.apple.com)和对等交换认证。  请看官网代码

 

清单5-1使用简单格式发送通知到二进制接口

 

 

 

5-2描述了通知数据包的增强格式。这种格式,如果APNS上的遇到无法理解的命令,它会在断开连接之前返回一个错误应答。

5-2 增强通知格式

大小: 17.84 K
尺寸: 500 x 71
浏览: 645 次
点击打开新窗口浏览全图

增强通知格式的第一个字节是为1的命令值。这种格式中的两个新字段是标识符和通知的有效期。(其它的都和简单的通知格式相同。)

标识符----一个任意值用来标识此通知。如果是APNS无法理解的通知,则返回一个错误应答包,包含此标示符。

有效期----一个固定的UNIX纪元日期(UTC)以秒为单位标识通知不再有效,并且可以被丢弃的时候。有效期值应该是网络顺序(大端法)。如果有效期值为正数,APNS至少试图提供一次通知。您可以指定零或一个小于零的值请求APNS不存储通知。

 

如果你发送的通知在APNS上发现通知格式不完整或其他无法解析的,它会在断开之前返回一个错误应答数据包。如果没有错误,APNS不返回任何内容。)

5-3给出了错误应答数据包的格式。

大小: 4.55 K
尺寸: 187 x 68
浏览: 611 次
点击打开新窗口浏览全图

5-3 错误应答数据包格式

 

 

该数据包包含一个值为8的命令值,紧跟一个字节的状态代码,和一个供应商指定的通知相同的标示符。表5-1列出了可能的状态代码及其含义。

Invalid :无效的

 

5-1 错误应答的编码

状态代码

表示

0

No errors encountered

1

Processing error

2

Missing device token

3

Missing topic

4

Missing payload

5

Invalid token size

6

Invalid topic size

7

Invalid payload size

8

Invalid token

255

None (unknown)

 

清单5-2修改清单5-1的代码然后构成增强格式的推送通知将其发送到APNS。依然假定SSL优先连接gateway.push.apple.com(或gateway.sandbox..push.apple.com)和对等交换认证。

 

清单5-2使用增强格式发送通知到二进制接口

注意,生产环境的设备令牌和发展环境(沙箱)的设备令牌是不一样的值。

------

最后一句很重要啊。否则会出问题。

不过,我在苹果服务器反馈服务提到的只是普通的令牌而不是加强型的

上述原文:http://hi.baidu.com/tangly888/blog/item/183a0e88432eb7c8fc1f106b.html




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: 推送

« 上一篇 | 下一篇 »

只显示10条记录相关文章

苹果推送注意事项 (浏览: 14503, 评论: 0)
推送通知消息负载内容和本地格式字符串 (浏览: 13908, 评论: 0)
笔记1 (浏览: 11325, 评论: 0)
被苹果推送服务吃药了 (浏览: 8265, 评论: 0)

发表评论

评论内容 (必填):