0

PHPスクリプトからApplePushNotificationServiceと通信したいと思います。しかし、私は次のエラーを受け取り続けます:

警告:stream_socket_client():秘密鍵ファイルを設定できません

次のような.pemファイルがあります。

-----BEGIN CERTIFICATE-----
     Encrypted String
-----END CERTIFICATE-----
     Bag Attributes
     friendlyName: ...
     localKeyID: ...
     Key Attributes: ...
-----BEGIN RSA PRIVATE KEY-----
     Proc-Type: ...
     DEK-Info: ...

     Encrypted String
-----END RSA PRIVATE KEY-----

sudoからPHPスクリプトを実行しています。.pem fileそれを削除すると、"handshake failure"代わりにエラーが発生するため、それは私のを見つけることができます。

ここで何が間違っている可能性がありますか?

4

2 に答える 2

1

最近、リモートプッシュ通知を送信するスクリプトを作成しました。これは私がそれをした方法です:

  $message = "A cool message!";
  $deviceid = "";

  $count = 0;

  $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) {
     echo 'Failed to connect ' . $err . $errstr;
  } else {

     $payloads['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default');
     $payload = json_encode($payloads);

     $msg = chr(0) . pack('n',32) . pack('H*', $deviceid) . pack('n',strlen($payload)) . $payload;
     fwrite($fp, $msg);
     $count += 1;
     fclose($fp);

  }   

  echo 'Sended: ' . $count;
于 2013-02-13T12:35:02.103 に答える
0

私はそれを動かしました。対応する証明書の代わりに、プッシュ通知用に生成した秘密鍵をエクスポートしたことがわかりました。

于 2013-02-13T13:54:01.787 に答える