PHP如何解压Apple APNS反馈数据

Posted

技术标签:

【中文标题】PHP如何解压Apple APNS反馈数据【英文标题】:PHP how to unpack Apple APNS feedback data 【发布时间】:2009-10-14 18:05:59 【问题描述】:

我已成功连接到 Apple 的反馈 APNS 服务器,但我不确定如何解压缩从 fread() 获得的二进制数据。有谁知道如何做到这一点?文档说前 4 个字节是时间戳,接下来的 2 个是令牌长度,其余的是设备令牌。

在调用 fread 后如何将这些信息解压缩为可读字符?

【问题讨论】:

【参考方案1】:

一旦你有了你的二进制流,你可以像这样处理它:

while ($data = fread($stream, 38)) 
  $feedback = unpack("N1timestamp/n1length/H*devtoken", $data);
  // Do something

$feedback 将是一个包含元素“timestamp”、“length”和“devtoken”的关联数组。

【讨论】:

【参考方案2】:

其实想通了,这个好像比较靠谱:

$arr = unpack("H*", $devconts); 
$rawhex = trim(implode("", $arr));

$feedbackTime = hexdec(substr($rawhex, 0, 8)); 
$feedbackDate = date('Y-m-d H:i', $feedbackTime); 
$feedbackLen = hexdec(substr($rawhex, 8, 4)); 
$feedbackDeviceToken = substr($rawhex, 12, 64);

【讨论】:

以上是关于PHP如何解压Apple APNS反馈数据的主要内容,如果未能解决你的问题,请参考以下文章

来自 APNS(Apple 推送通知服务器)的反馈服务

如何使用 java 编写 APNS 反馈服务?

PHP 代码如何将 APNS 设备令牌用于 Apple 推送通知?

Apple 推送通知服务 (APNS):反馈服务响应缺少字节?

使用 PHP 的 Apple 推送通知反馈服务 - 套接字错误

关于 Apple APNS 的说明