我已成功连接到苹果的反馈APNS服务器,但不确定如何解包从fread()获取的二进制数据。有人知道如何做吗?文档说前4个字节是时间戳,接下来的2个字节是令牌长度,其余的是设备令牌。
在调用fread后,这些信息如何解包为可读字符?
我已成功连接到苹果的反馈APNS服务器,但不确定如何解包从fread()获取的二进制数据。有人知道如何做吗?文档说前4个字节是时间戳,接下来的2个字节是令牌长度,其余的是设备令牌。
在调用fread后,这些信息如何解包为可读字符?
一旦您获得了二进制流,您可以按照以下方式处理:
while ($data = fread($stream, 38)) {
$feedback = unpack("N1timestamp/n1length/H*devtoken", $data);
// Do something
}
$feedback将是一个关联数组,包含 "timestamp"、"length" 和 "devtoken" 元素。实际上我找到了更可靠的解决方法:
$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);