the app is registering with the sandbox already and getting the token.
im trying a sample script to see if I can just get a test mssage to go through but I am getting the following error when the script is run.
Quote:
Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in push.php on line 21
Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in push.php on line 21
Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in push.php on line 21
Failed to connect 0
the script im usng is as follows:
Quote:
<?php
$deviceToken = 'XXXXXXXXXXXXXXXXXXXXXX'; // masked for security reason
// Passphrase for the private key (ck.pem file)
// $pass = '';
// Get the parameters from http get or from command line
$message = $_GET['message'];
$badge = (int)$_GET['badge'] or $badge = (int)$argv[2];
$sound = $_GET['sound'] or $sound = $argv[3];
// Construct the notification payload
$body = array();
$body['aps'] = array(’alert’ => $message);
if ($badge)
$body['aps']['badge'] = $badge;
if ($sound)
$body['aps']['sound'] = $sound;
/* End of Configurable Items */
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
// assume the private key passphase was removed.
// stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
print "Failed to connect $err $errstrn";
return;
}
else {
print "Connection OKn";
}
$payload = json_encode($body);
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
print "sending message :" . $payload . "n";
fwrite($fp, $msg);
fclose($fp);
?>
I couldn't find any "fix" with a Google search, but I finally figured out what I did wrong so I thought I'd post it here for future reference.
The handshake failure is most likely related to your cert. You've either constructed it incorrectly, the script can't find the file. My mistake was my pathname was wrong (I was including my push notification php script from another directory, and the cert has to have a path from the calling script, not the include).
the app is registering with the sandbox already and getting the token.
im trying a sample script to see if I can just get a test mssage to go through but I am getting the following error when the script is run.
the script im usng is as follows:
change the port number from 2195 to 2196 as 2195 is for sending the req and 2196 is for getting the response