推送效果很好,问题是反馈是空的。我需要删除已过期或具有无效状态的令牌。这是我写的测试代码,这有问题吗?)
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
$fp = stream_socket_client('ssl://feedback.sandbox.push.apple.com:2196', $error, $errorString, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
return;
}
while ($devcon = fread($fp,38)) {
$arr = unpack("H*", $devcon);
$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);
}
fclose($fp);
反馈服务并不总是返回数据。只有当需要报告失败的交付时,您才能获得数据。
查看这里的文档
不确定是否这是真的,但我已经注意到反馈服务不与沙盒环境工作(至少我没有收到任何响应,我检查了沙盒)