Нажмите уведомить iPhone с Apns PHP - PullRequest
0 голосов
/ 28 ноября 2011

Я следовал руководству Apple, чтобы установить сертификат на моем нетбуке. Затем, когда я пытаюсь выполнить push-уведомление, я получаю эту ошибку:

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 xxxx.php on line 92

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in xxxx.php on line 92

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in xxxx.php on line 92

Failed to connect 0 

это моя функция php:

function push($deviceToken,$badge,$message) {

  $sound = "default";

  // Construct the notification payload
  $body = array();
  $body['aps'] = array("alert" => $message);

  if ($badge)
        $body['aps']['badge'] = $badge;
  if ($sound)
        $body['aps']['sound'] = $sound;

  $ctx = stream_context_create();
  stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev.pem');
  $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 OK\n";
  }

  $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);

}

Я пытаюсь проверить яблочный проход, но это мой вывод:

$ telnet gateway.sandbox.push.apple.com:2195
Trying 212.48.8.140...
telnet: connect to address 212.48.8.140: Operation timed out
telnet: Unable to connect to remote host

Любая идея, чтобы решить это?

EDIT: Я не уверен, стоит ли устанавливать сертификаты на удаленном сервере или нет

РЕШИТЬ: мой моя ошибка это путь к apns-dev.pem

1 Ответ

0 голосов
/ 28 ноября 2011

Либо что-то на вашем конце блокирует это, шлюзы Apple не работают, или вам необходимо зарегистрировать свой IP-адрес в Apple, прежде чем получить доступ.Пожалуйста, отметьте эти три: -)

...