我想用 PHP 发送推送通知。
所以我设置了一些代码来发送它们。它实际上运行良好,但现在我必须进行一些错误处理。
例如,如果我向 Apple 发布无效令牌,然后发送一些有效令牌,Apple 不会将消息推送到有效令牌的设备。
因此,每次发送有效负载以获取响应后,我都会检查流,如果有任何问题,我会告诉我。
$test = fwrite($this->fp, $payload);
if ($test != strlen($payload)) {
echo 'NOT ALL BYTES WRITTEN'; //This is just for debug
}
usleep(1000000); //Wait for Apple to respond.
$error_hex = fread($this->fp, 6);
if ($error_hex !== false && strlen($error_hex) == 6) {
$error = unpack('Ccommand/Cstatus_code/Nidentifier', $error_hex);
print_r($error);
} else {
echo 'NO HEX ERROR';
}
这总是输出“NO HEX ERROR”,因此 Apple 没有响应错误。
为什么这不起作用?流阻塞被禁用。
stream_set_blocking($this->fp, 0);