0

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つはエラーを発生させませんでした。

4

1 に答える 1

0

SSL証明書をサーバーにコピーし、スクリプトから参照してインストールするだけです。

私の問題は、通知を送信するデバイストークンを含むデータベースに、開発デバイスによって生成されたデバイストークンがあったことです。開発トークンを実稼働の Apple サーバーに送信すると、接続が切断され、同じ接続で他の通知を送信できなくなります。アップルサーバーありがとうございました!

于 2013-03-29T10:26:49.020 に答える