iOS用アプリのプッシュ通知システムに問題があります。開発では完全に機能しますが、本番環境では機能しません。今、私は疑問を持っています。ここでhttps://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.htmlpem 証明書をサーバーに「インストール」する必要があることを読みました。
開発中、プッシュ通知を送信するphpスクリプトの同じディレクトリに開発.pemをコピーし、スクリプトにそれを使用させました。本番環境(私のアプリはアプリストアで公開されています)では、サーバーにディストリビューション.pemを何らかの方法で「インストール」する必要がありますか?
注:すべてが正しい方法で行われることを確認するには、次のようにします。
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp){
print "All ok!";
}
と
$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>";
$result=fwrite($fp, $msg);
if (!$result)
print "All ok!":
}
そして、本番環境でも、2つはエラーを発生させませんでした。