1

我遵循: Apple 推送通知服务教程。它在本地对我有用。接下来,我想从我的服务器发送推送通知?

我已经上传simplepush.phpck.pem我的服务器。当我检查http://www.myserver/simplepush.php它给我错误:

*警告:stream_socket_client() [function.stream-socket-client]:无法连接到 /home/cherry/public_html/simplepush 中的 ssl://gateway.sandbox.push.apple.com:2195(连接超时)。第 21 行的 php 连接失败:110 连接超时*

请你帮助我好吗?

PHP代码:

<?php

// Put your device token here (without spaces):
$deviceToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// Put your private key's passphrase here:
$passphrase = 'xxxxxxxxxx';

// Put your alert message here:
$message = 'My first push notification!';

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

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

// Open a connection to the APNS server
$fp = stream_socket_client(
    'ssl://gateway.sandbox.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);
4

1 回答 1

0

Is the PHP compiled with SSL? And is it the same version as your local version?

Or maybe the firewall of some kind blocks connection to 2195 port from your server?

Can you log in to this server (to a shell of some kind) and check if you can connect via telnet to this server and port:

$ telnet gateway.sandbox.push.apple.com 2195
于 2012-04-24T08:45:14.170 回答