これに関連するほとんどすべてのスレッドをstackoverflowで調べましたが、よく理解していなかったため、あまり役に立ちませんでした。PHPコードを使用してプッシュ通知を送信すると、接続に失敗しましたと表示されます。以前、他の多くのプロジェクトで同じコードを使用しました。しかし、今回は問題がどこにあるかを見つけることができません
PHP コード
$status_message="Failure";
$deviceToken = "";
$userExist=1;
$message = 'You Recieved a new Notifcation from test';
$badge = (int)1;
$sound = 'cow.caf';
$body = array();
if($userExist==1)
{
$body['aps'] = array('alert' => $message);
$body['aps']['sound'] = $sound;
if(isset($badge))
{
$body['aps']['badge'] = $badge;
}
else
{
$body['aps']['message'] = $message;
}
}
$ctx = stream_context_create();
stream_context_set_option($ctx,'ssl','local_cert','apns-dev.pem');
stream_context_set_option($ctx,'ssl','verify_peer',false);
$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 $errstr\n";
print_r($err);
return;
}
else
{
print "Connection OK\n";
}
iPhone 終了
0 0 の接続に失敗しました。iPhone の担当者と会話したところ、PEM が正しいとのことでした。これも考えられる理由の 1 つです。しかし、彼らは最後にテストし、最後にプッシュが来ています。彼らは自分たちが正しいと確信しています。PEM ファイルはサーバーの正しい場所にあります。
次にサーバー設定です。tcp 2195,2196 が有効になっています。
サーバーエンド
root@servername [~]# openssl version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
root@servername [~]# iptables -nL | grep 2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2195
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2195
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2195
root@servername [~]# iptables -nL | grep 2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2196
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2196
PUTTY で telnet gateway.push.apple.com 2195 を検証しようとしましたが、サーバーから接続しています。
どこに問題があるのか わかりません。6 つのプロジェクトで同じファイルを使用したので、コードについては確信があります。私のホスティングはVPSです
助けてください