【发布时间】:2015-09-11 00:29:41
【问题描述】:
我已经实现了一个通过 Apple 的 apns 服务发送推送通知的 Perl 脚本。我在错误处理方面遇到了一些问题。根据APNS documentation:
如果流尚未准备好写入,请查看流是否可用于读取。如果是,请从流中读取所有可用的内容。如果返回零字节,则连接因错误(例如无效的命令字节或其他解析错误)而关闭。如果您返回六个字节,这是一个错误响应,您可以检查响应代码和导致错误的通知的 ID。您需要再次发送该通知之后的所有通知。
我也在做同样的事情。每当由于连接断开而出现写入错误时;我读了套接字。每次我从套接字返回 6 个字节。意思是 APNS 正在向我发送一个 error_response。 APNS documentation的错误响应包格式如下
数据包的命令值为 8,后跟一个字节的状态代码和格式错误通知的通知标识符。
我正在使用下面的代码来解压从套接字读取的数据:
my $hex = unpack( 'H*', $data );
print $hex;
每次,我得到相同的值 080800000000。根据 APNS 文档,第一个字节将始终为 8,下一个字节将代表错误状态代码。 8 表示“无效令牌”。到这部分为止还可以。但是,剩下的 4 个字节是标识符,总是给我 00000000。这是什么意思?
【问题讨论】:
标签: perl apple-push-notifications