この文は何を意味するのでしょうか? stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
私はクライアントですが、PHP については何も知りません。
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); この文はばかげているので、誰かが説明してくれることを願っています。
Myeclipseを使用して同じ機能を実現できますか?ありがとう!
完全版は以下にあります。
// ここにデバイス トークンを入力します (スペースは入れません):
$deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5ddb387462c7eaf61bbad78';
// 秘密鍵のパスフレーズをここに入力します:
$passphrase = 'プッシュチャット';
// ここに警告メッセージを入力します:
$message = '初めてのプッシュ通知!';
//////////////////////////////////////////////// //// //////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
//APNS サーバーへの接続を開きます
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("接続に失敗しました: $err $errstr" . PHP_EOL);
echo 'APNS に接続しました' ;
//ペイロード本体を作成します
$body['aps'] = array(
'アラート' => $message,
'サウンド' => 'デフォルト'
);
// ペイロードを JSON としてエンコードします
$payload = json_encode($body);
//バイナリ通知を構築します
$msg = chr(0) .pack('H*', $deviceToken) . $payload;
// サーバーに送信します
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'メッセージが配信されませんでした' .
それ以外
echo 'メッセージが正常に配信されました' .
//サーバーへの接続を閉じます
fclose($fp);
-----解決策---------
stream_context_set_option ( $ctx, 'ssl', 'local_cert', 'ck.pem');
この文は、ctx ソケット接続には ssl プロトコルを使用し、ローカル認証証明書を使用し、認証証明書として ck.pem を使用することを意味します
Eclipse は IDE です
PHP では