web-dev-qa-db-ja.com

iOSでデバッグアプリのバージョンに本番プッシュ通知を受信させるにはどうすればよいですか?

私のサーバーはプッシュ通知を送信するバージョンを1つだけ備えており、本番(リリース)プッシュ証明書があります。

同じ本番証明書を使用して、デバッグデバイスとデバッグビルドで通知をテストするにはどうすればよいですか?

デバイスがトークンを送信していますが、実際のプッシュ通知を送信しようとするとAppleサーバーがステータス8エラーを返します。これは、デバイストークンが正しくないことを意味します。

18
Dvole

アプリを本番モードでテストする場合は、 ad hoc を使用してアプリの配布バージョンを配布する必要があります。

アプリケーションを送信する準備ができたら、1つ以上のアプリ、一連のテストデバイス、および単一の配布証明書に一致するアプリIDを指定するアドホックプロビジョニングプロファイルを作成します。

これは、プロビジョニングプロファイルがどのように機能するかを示す画像です。

enter image description here

3
meda

パーティーに少し遅れましたが、他のすべての答えが正しかったとしても、彼らはあなたの質問に実際には答えません。

答えは次のとおりです。デバッグビルドで本番APNSをテストすることはできません。

Debugビルドは常にsandboxAPNSトークンを取得します。

リリースビルド(アドホックまたはアプリストア)は常にproductionAPNSトークンを取得します。

その背後にあるロジックは、アプリをデバッグするには、デバッグ証明書とプロビジョニングプロファイルを使用して署名する必要があるということです。そのプロビジョニングプロファイルによって、アプリが接続するAPNSエンドポイントが決まります。

16

開発プロビジョニングプロファイルを使用してアプリをビルドすると、サンドボックスデバイストークンを受け取ります。これは、サンドボックスプッシュ環境でのみ有効です(サンドボックスプッシュサーバーとサンドボックスプッシュ証明書を使用)。

本番またはアドホックプロビジョニングプロファイルを使用してアプリをビルドすると、本番デバイストークンを受け取ります。これは、本番プッシュ環境でのみ有効です(本番プッシュサーバーと本番プッシュ証明書を使用)。

10
Eran

おそらく回避策は、本番環境とサンドボックスプッシュ通知の両方を一緒に送信することです。内部をテストしたい場合(AdHocビルドの使用など)に役立つと思います。ただし、このような奇妙な方法を本番環境に展開することは合理的ではないと思います。

0
Jerome Li