
APNs Token Authentication の新機能「Topic-specific keys」を試してみる
つい先日、 Apple Developer から APNs Token Authentication の新機能のお知らせが届きました。
New features for APNs token authentication are now available (February 17, 2025)
どうやら今回のアップデートで新たに鍵の種類が “Team-scoped keys” と “Topic-specific keys” に分割された様です。今まで Team 毎に全アプリを通して Sandbox, Production 共通の鍵を最大2個までしか生成できませんでしたが、これにより環境別、アプリ別に個別に APNs 用のトークンキーを生成できる様になった様です。これは何気に嬉しいアップデートですね。早速試してみましょう。
鍵の生成
いつも通り Apple Developer の “Certificates, Identifiers & Profiles” を開いて + ボタンから新しく鍵の生成画面を開きます。

“APNs” の行の右端に “Configure” と言うボタンが追加されています。これを押してみると、

鍵の設定画面が出てきました。画面下部には Environment と Key Restriction のプルダウンがあります。それぞれ、Environment には “Sandbox”, “Production” そして “Sandbox & Production” が、Key Restriction には “Team Scoped (All Topics)” と “Topic Specific” の選択肢があります。


なお、 Environment を “Sandbox & Production” にしていると Key Restriction は “Team Scoped (All Topics)” しか選択できない様で、これが機能追加前の従来の鍵の種類と同等と思われます。
今回はせっかくなので Sandbox 環境で開発環境用バンドルのみ許可する鍵を作ってみます。Key Restriction で “Topic Specific” を選択すると更に Topics と言う項目が出てくるので、そこで許可するアプリのバンドルを選択します。

この Team では myapp (仮称) と言う単一のアプリのそれぞれの環境分しかありませんが、同じ Team で全く別のアプリを管理している場合はそれぞれ個別に選択可能かと思われます。
今回は検証環境用の dev と local のバンドルにチェックを入れ、 “Done” を押し、後はいつも通り鍵を登録してダウンロードしました。
ちなみに Team Scoped では…
Key Restriction を “Team Scoped (All Topics)” にしても Environment では “Sandbox” または “Production” を選択できます。従来は混合だったので新しく Team Scoped な鍵を作る場合でも環境毎に分けるのがオススメな様です。ただしそれぞれの環境毎に2個までしか作れない点は変わらないそうです。(つまり合計4個、混合を合わせれば6個まで作れる)

早速使ってみる
Firebase Cloud Messaging を使って検証を行います。
今回は dev, local 用の鍵を作ったのでそれぞれのバンドルに先ほどの鍵を共通で設定しておきました。尚コンソール画面での設定の様子は割愛します。
実際にキャンペーンの画面から dev, local 双方の registration token を使ってテストメッセージを送ったところ、無事双方のバンドルで受信することができました。

Topic-specific keys のトピックは後から変えられる
キー生成後も編集画面からトピックを追加や削除などの変更ができます。試しに local の方を削除して保存します。

Topics から local のバンドルを削除して設定の保存まで進めます。その後、もう一度 dev, local 双方の registration token 宛にテストメッセージを送ったところ、想定通り dev の方のみ届く様になりました。
鍵の個数制限について
公式ドキュメントによれば、Sandbox, Production でぞれぞれ200個ずつ、計400個まで作れるそうです。今までが環境毎に共通の鍵を2個までしか作れなかった事を考えると大幅に作れる数が増えました。これにより、柔軟なスコープの設定ができそうです。
終わりに
以上、 APNs の Topic-specific keys を試してみた記事でした。従来の鍵に比べて細やかなスコープ設定ができる様になった事により、よりセキュアに鍵を管理できる様になりました。これは大変素晴らしいアップデートですね!
コメントを残す