こんにちは、開発部の天津炒飯です。
自分はステージング(STG)環境でテストフライトにプッシュ通知を送信できず、苦戦した経験があります。そこで、APNSのそれぞれの環境の違いと、STG環境でのテストフライトの注意事項を紹介したいと思います。
APNS Product環境とSandbox環境の違い
1. Production環境
- 用途: 本番環境で実際のユーザーに対してプッシュ通知を送信するために使用します。
- 証明書: Apple Developerアカウントで取得するProduction用のAPNS証明書が必要です。
- トークン: 実デバイスで発行されたデバイストークンを使用します。
- Pinpointチャンネル: APNS
2. Sandbox環境
- 用途: 開発およびテスト環境でプッシュ通知の動作を確認するために使用します。
- 証明書: Apple Developerアカウントで取得するSandbox用のAPNS証明書が必要です。
- トークン: 実デバイスまたはシミュレーターで発行されたSandbox用のデバイストークンを使用します。
- Pinpointチャンネル: APNS_SANDBOX
ステージング環境(STG)でのテストフライトの注意事項
それでは本題のSTG環境での注意事項
環境や設定に関わらず、TestFlightで配布するアプリはProduction環境になります!
環境や設定に関わらず、TestFlightで配布するアプリはProduction環境になります!
環境や設定に関わらず、TestFlightで配布するアプリはProduction環境になります!
大事なことなので三回言いました
そのため、AWS Pinpointにエンドポイントを登録する際、チャンネルはAPNS(Production環境)に設定しなければなりません。
直感的には、STG環境のAPNSは開発用のSandbox環境に、本番環境はProduction環境になると考えがちですが、実際にはSTG環境のテストアプリをTestFlightで配布するとAPNSはProduction環境になります。
アプリ側が持つトークンはProduction環境のトークンになりますが、もしPinpointの設定をSandbox環境にしていると、プッシュ通知が正しく届かない原因になります。
具体的には、アプリが取得するトークンはProduction環境のものなのに、Pinpointがプッシュ通知をSandbox環境に送信しようとすると、通知が届かなくなります。
これを避けるためには、アプリのSTGテストフライト環境に別対応が必要です。Pinpointにエンドポイントを登録する際に、チャンネルをAPNS(Production環境)に指定しなければなりません。
まとめ
AWS Pinpointを使用してiOSデバイスにプッシュ通知を送信する際には、APNSのProduction環境とSandbox環境の違いを理解し、適切な証明書とエンドポイントを使用することが重要です。
また、ステージング環境でテストフライトを使用してテストを行う際には、テストフライト経由でインストールされたアプリがProduction環境として扱われることを理解し、APNSチャンネル登録の設定に注意してください。これにより、開発中のプッシュ通知機能が本番環境でも正しく動作することを確認できます。
参考資料
https://qiita.com/komitake/items/8eba72f4eb16997179d7
https://qiita.com/k_teluki/items/b12502702234bd5d04dc
https://kiririmode.hatenablog.jp/entry/20221001/1664600847
さいごに
はつかぜ株式会社では、IT学習や業務に役立つ情報を定期的にお届けしていきたいと思っています。
システム開発のお問い合わせ・ご相談はこちら