iOS用のアプリを開発し、アプリストアで公開しました。プッシュ通知システムは開発ではうまく機能しましたが、今はまったく通知を受け取りません。公開する前に、プッシュを有効にして本番プッシュSSL証明書を構成したアプリIDに関連付けられた開発プロビジョニングプロファイルを生成しました。Production Push SSL証明書をダウンロードしてキーチェーンアクセスにインストールし、それとその秘密鍵をエクスポートして、pemに変換し、一意のpemファイルに統合しました。これをサーバーにアップロードして、phpスクリプトを送信します。通知。phpスクリプトのサーバーを本番サーバー(ssl://gateway.push.apple.com:2195)に変更しました。それでも、スクリプトは通知を送信しているようで、エラーは発生しません。
私が欠けているものは何ですか?
これが私のphpスクリプトです:
<?PHP
/* Here there's Code to retrieve device tokens and put it in a variable $deviceToken from my online database and then...*/
$message = "Message to be sent";
$payload = '{
"aps" :
{ "alert" : "'.$message.'",
"badge" : 1,
"sound" : "bingbong.aiff"
}
}';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'secret');
// se l'app è già sull'appstore togliere sandbox e lasciare solo gateway.push.apple.com:2195
// invece di gateway.sandbox.push.apple.com:2195
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if(!$fp){
print "Failed to connect $err $errstrn";
return;
} else {
print "Notifications sent! </br>";
}
foreach($devArray as $deviceToken){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack ("n",strlen($payload)) . $payload;
print "sending message :" . $payload . "n to device:".$deviceToken."</br>";
fwrite($fp, $msg);
}
fclose($fp);
?>