Php 增强的Apple推送通知:提供程序服务器上出现响应错误
我正在从事一个PHP项目,该项目要求我在APNS服务器上推送警报通知。我使用了增强的推送通知格式。但我没有收到APNS文件规定的回复。我得到了三位数的回复,通常是133、132、154、138等等,我认为这是状态符号,例如133是1、3、3。但现在我也收到了139份。所以我怀疑我对回答的理解是错误的。但我并没有理解错在哪里。重要的是,虽然我收到了这些回复,但警报被推送了,我在iPhone和iPad上都收到了通知 我的代码如下:Php 增强的Apple推送通知:提供程序服务器上出现响应错误,php,apple-push-notifications,Php,Apple Push Notifications,我正在从事一个PHP项目,该项目要求我在APNS服务器上推送警报通知。我使用了增强的推送通知格式。但我没有收到APNS文件规定的回复。我得到了三位数的回复,通常是133、132、154、138等等,我认为这是状态符号,例如133是1、3、3。但现在我也收到了139份。所以我怀疑我对回答的理解是错误的。但我并没有理解错在哪里。重要的是,虽然我收到了这些回复,但警报被推送了,我在iPhone和iPad上都收到了通知 我的代码如下: $payload['aps'] = array('alert' =&
$payload['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default');
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195; // default port
$apnsCert = 'apns-dev.pem'; // APNS crtificate.
$passPhrase = '';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $passPhrase);
try{
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns) {
print "Failed to connect {$error} {$errorString}\n";
}
else {
// Sending the payload
$apnsMessage = chr(0) . pack('n', 1) . pack('n', $nid) . pack('n', time() + 604800) . pack('n', 32) . pack('H*', str_replace(' ', '', $alert_device_token)) . pack('n', strlen($payload)) . $payload;
echo 'APNS Message: ' . $apnsMessage;
$fwrite = fwrite($apns, $apnsMessage);
echo 'APNS response: ' . $fwrite;
当执行此操作时,我在浏览器上打印了以下响应:
APNS消息:��=ŸÂ� òc6–U:245Ÿ¸Þ÷䲩Ú0ßqšzÕfÕnZ�`{“aps”:{“警报”:“您的欧元/美元卖出警报价格已达到!”,“徽章”:1,“声音”:“默认值”}APNS回复:139
谁能告诉我这是什么意思。我在这里做错了什么。回显的“139”是fwrite()的返回值。它是由fwrite()写入的字节数
请看:请问您是否已经修好了。嗨,是的,我摆脱了这种状况。您必须使用增强的有效负载而不是此有效负载,即正常的付费负载DuckleLugh如下所示是正确的:u接收的数字是fwrite写入的字节数。但是你可以用它来检查错误,因为如果你收到一个0响应,这意味着fwrite无法写任何东西,可能是因为苹果关闭了服务器连接。所以问题不是0响应的固件,而是成功发送的前一个固件,但是苹果不喜欢它,所以他们关闭了服务器连接。如果您在SELECT语句中使用“ORDERBYID”,那么您可以找出问题发生的大致位置并从那里继续推送。