4

開発証明書とgateway.sandbox.push.apple.comを使用して、プロビジョニングされたデバイスに通知を送信することに問題はありませんでした。しかし、アプリがストアにあるので、証明書を作成したマシンを使用している場合でも、本番のapnサーバー(gateway.push.apple.com)に接続してプッシュを送信することさえできないようです。そもそも。

これをPushMeBabyで実行しましたが、gateway.push.apple.comへの接続が拒否されているようです。ハンドシェイク(SSLHandshake(context))を実行すると、結果はエラーコード-9044、またはerrSSLConnectionRefusedになります-ピアは応答する前に接続をドロップしました。

私はsslと暗号化について十分に知っているので、私は何も知らないことを知っていますが、問題は私たちの本番SSL証明書である(またはそれから始まる)と確信しています。プッシュ通知は、iPhoneポータルでの本番用に有効になっています(青信号があります)。証明書はPushMeBabyを実行しているマシンにインストールされており、キーチェーンに証明書と署名キーの両方が表示されます。開発プッシュ証明書をエクスポートしてPushMeBabyで使用したところ、問題なく接続(およびプッシュ送信)できました。しかし、生産証明書では、私たちはどこにも行きません。2台の別々のコンピューターでdevcertとprodcertの両方を繰り返し取り消して再作成したため、これが人為的エラーである場合は、繰り返し実行しています。

要因の1つは、キーチェーンに「チームエージェント」キーがあることですが、私は彼女ではありません。バイナリを問題なくAppStoreに送信できます。

また、本番証明書の作成後にプロビジョニングプロファイルを設定していません。それが要因かどうかはわかりませんが、店内アプリの場合はどうなるかわかりません。

私は彼らの外にいるので、誰かがいくつかのアイデアを持っていることを願っています!

4

3 に答える 3

15

ドキュメントに記載されているように、プッシュ通知用に2つの証明書と2つのIPアドレスが存在します。

  • サンドボックス:gateway.sandbox.push.apple.com、ポート2195。(開発用)
  • 本番:gateway.push.apple.com、ポート2195(リリース用)

開発には常にゲートウェイを使用します。他のゲートウェイ(本番用)を使用してみてください。

詳細については、ここを参照してください:プロビジョニングと開発

于 2010-02-23T16:24:36.257 に答える
4

はい、このエラーを解決しました。私は解決策を見つけるのに数日を失いました。

問題は次のとおりです。

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); 

NSLog(@"SSLSetPeerDomainName(): %d", result);

ポートを番号30に変更する必要があります。これで問題は解決します。

于 2010-07-22T02:36:19.270 に答える
1

実稼働トークンの代わりに開発者デバイストークンを使用しようとしたため、テストでも同様の問題が発生していました。

于 2011-03-26T11:54:50.033 に答える