1
votes

I have followed : Apple Push Notification Services Tutorial. And it worked for me locally. Next, i want to send push notifications from my server?

I have uploaded simplepush.php and ck.pem to my server. When i check http://www.myserver/simplepush.php it gives me error:

*Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Connection timed out) in /home/cherry/public_html/simplepush.php on line 21 Failed to connect: 110 Connection timed out*

Could you please help me?

PHP Code:

<?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);
1
it's not really an objective-c and xcode question, btw :)kender
did you manage to find that? I have the exact same problem :/ghostrider

1 Answers

0
votes

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