APNS连接失败:0

时间:2014-09-10 11:07:43

标签: php ios notifications apple-push-notifications

我遵循了Ray Wenderlich的iOS远程通知教程,并没有开发问题。但是,在生产环境中,我的通知失败并显示错误:Failed to connect: 0

我一直在寻找,但似乎没有人有一个明确的剧本,而且很多答案都是矛盾的。这是我目前使用的代码:

<?php

// Put your device token here (without spaces):
$deviceToken = [my device token];

// Put your private key's passphrase here:
// ITS REALLY THE PEM PASS
$passphrase = [the password];

// Put your alert message here:
$message = 'Hello, User!';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
$cert = __DIR__ . '/Notifications_iOS/ck.pem';
stream_context_set_option($ctx, 'ssl', 'local_cert', $cert);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
/*
// Dev
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
*/
// Production
$fp = stream_socket_client(
    'ssl://gateway.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
    );

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
    echo 'Message not delivered' . PHP_EOL;
else
    echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);

?>

0 个答案:

没有答案