APNs(Apple Push Notification service)では、プッシュ通知を送信する際の認証方式としてp12形式の証明書とp8形式の鍵の2種類が提供されています。
p12形式の証明書と比較しp8形式の鍵が後続であり、推奨の設定方法です。
それぞれ認証の仕組みや運用方法が異なるため、以下で説明します。
p12形式の証明書
特徴
- 証明書ベース認証
- アプリごとに発行された証明書を用いる
- 証明書は アプリ単位 で管理
- 有効期限あり(通常1年)
運用方法や管理コスト
それぞれ証明書ごとに明瞭な管理が可能
p12形式の証明書は、アプリごとに証明書が分かれているため、管理対象となるアプリが少ない場合は構成がシンプルとなります。
一方で、アプリの数が増えると証明書の数も増えるため、複数アプリを運用している場合はp8形式の鍵を用いた方が管理が簡便になるケースもあります。
証明書の更新が必要で運用負荷が高い
p12形式の証明書には、1年間の有効期限があります。毎年更新作業が必要となり、更新漏れが発生すると、プッシュ通知が配信されなくなる可能性があります。
そのため、運用時には有効期限の管理も必要になります。
p8形式の鍵
特徴
- トークンベース認証
- アプリごとに認証キー(.p8) を用いて、一時トークンを生成する
- 1つのキーで 複数アプリ を管理可能
- キー自体に有効期限はない(失効までは永続)
- Apple推奨の新方式
運用方法や管理コスト
複数用途に使用すると管理が複雑化
1つの鍵を複数のApp ID(アプリ)で共通利用できます。
複数アプリを運用している場合でも、鍵の数を最小限に抑えることができます。
柔軟性が高い反面、1つの鍵を複数用途で利用するため、運用ルールを整理しておかないと管理が複雑になる場合があります。
また、p8形式の鍵には複数の種類があり、仕組みがやや複雑になります。
-
Team-scoped keys
- チームで管理しているすべてのアプリで利用可能
- 発行できる鍵の数は最大2つ
-
Topic-specific keys
- 特定のトピック単位で利用可能
- 比較的多くの鍵を発行でき、用途ごとに分けて管理できる
それぞれの利用可能範囲を理解して、適切に設定する必要があります。
なお、初期設定以降は違いを強く意識する必要はありません。
長期・安定運用が可能
p8形式の鍵には、有効期限が存在しません。
定期的な更新作業が不要なため、更新漏れによる配信停止リスクが低く、証明書管理の手間を削減できます。
p12形式の証明書およびp8形式の鍵、それぞれの詳細はAppleDeveloperによる「Setting Up a Remote Notification Server」を参照してください。
Reproへの設定方法
Reproで推奨する認証方式
Reproでは、有効期限が存在せず定期的な更新作業が不要なp8形式の鍵の利用を推奨していますが、p12形式の証明書についても引き続き利用可能です。
運用負荷を抑えたい場合や、証明書更新作業をできるだけ減らしたい場合には、p8形式の鍵を利用することをおすすめします。
設定方法
APNs認証情報は、Reproの管理画面から設定できます。管理画面左メニューの [設定] > [プッシュ通知設定] > [APNs証明書をアップロード] より、APNs認証情報の登録が可能です。
また、Reproでは 本番環境・検証環境など、環境ごとにAPNs認証情報を個別に設定できます。
そのため、開発・検証用アプリと本番アプリを分けて管理しながら、安全にプッシュ通知の運用を行うことができます。
詳細は、「APNs証明書の設定 (iOS)」を参照してください。
注意点
p8形式の鍵を設定する際は、Key ID・Team ID・Bundle ID の3つのIDを正しく指定する必要があります。
これらはいずれもApple Developer側で発行される値であり、1つでも誤りがある場合、APNsとの認証が成立せず、プッシュ通知を送信できません。
また、Repro管理画面で選択する Production / Sandbox の環境設定は、Apple Developer側で作成した証明書や鍵の環境と必ず一致させる必要があります。
例えば、Sandbox用に作成した認証情報をProduction環境として設定した場合、通知は正常に配信されません。