7

を使用してスクリプトを開発しましたが、ローカルホストで動作しますが、オンラインで ( Fatcow.comstream_socket_client() Web ホスティングを使用して) 使用しようとすると動作しません。次のエラーが表示されます。

警告: stream_socket_client() [function.stream-socket-client]: ssl://gateway.sandbox.push.apple.com:2195 に接続できません (接続が拒否されました) .../send-notification.phpオンライン18 接続に失敗しました 111 接続が拒否されました

これは18行目です:

$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

.pem ファイルのパスワードが正しいことはわかっています。問題は、このポートを使用できない場合、どうすればよいかということです。無料で利用できるサービスはありますか?ポート80が開いていることはわかっています。

curl()この関数を使用するとうまくいくと聞いたことがありますが、これまでのところ成功していません。

正しい方向に向けていただければ幸いです。

4

5 に答える 5

3

私はあなたが探しているものは次のとおりだと思います

$url = 'https://gateway.sandbox.push.apple.com:2195';
$cert = 'AppCert.pem';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSLCERT, $cert);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "passphrase");
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}');

$curl_scraped_page = curl_exec($ch);

詳細については、cURL を使用した Apple プッシュ通知を参照してください。

于 2013-10-24T10:58:15.583 に答える
0

ポート 2196 を使用してみてください。

私も同様の問題に直面しました.cURLを使用しても、この問題に直面します. 発信ポート (2195、2196) が開いているかブロックされているかを、ホスティング プロバイダーに再確認してください。または、telnetssl://gateway.sandbox.push.apple.com:2195
に接続して、どのような応答が得られるかを確認してください。ポートが開いていれば接続されます。

于 2013-10-18T05:49:48.880 に答える