NCMBでは先日、iOS向けのプッシュ通知でp8キーファイルを使った方法に対応しました。p8キーファイルを使った場合、同じキーファイルを使って異なるアプリにもプッシュ通知が配信可能であったり、これまでのp12ファイルのように有効期限がなくなったのが利点です。
そんなp8キーファイルを使ってプッシュ通知を送信しようとした際に、起きるかも知れないエラーメッセージについて回避策を解説します。
結論
先に結論からいうと AppleトピックID
、つまりアプリのバンドルIDを見直してください。デバイストークンを取得したアプリのバンドルIDと異なる可能性があります。
エラーメッセージ
例えば次のようなエラーが確認できるようになります。AppleトピックIDは共通で付けるものなので、すべてのメッセージがエラーになるかと思います。
{ "description": { "status": "complete" }, "ios": { "deviceTokenNotForTopic": 100, "total": 100 } }
AppleトピックIDを確認する
AppleトピックIDはmBaaSの管理画面、プッシュ通知の欄で確認できます。アプリのバンドルID(com.nifcloud.mbaas.appのような文字列)を指定します。この文字列が間違っているとdeviceTokenNotForTopicが発生します。デバイストークンを取得する際にはNCMBの管理画面の設定値は関係しないので、デバイストークンの取得自体は成功します。正しいAppleトピックIDを設定すれば配信成功するはずです。
まとめ
p8ファイルになってプッシュ通知の管理がしやすくなりましたが、iOSアプリごとにプッシュ通知を分けて管理するのを忘れないでください。同じアプリケーションキーを使っていると異なるアプリであっても同じデータストアに入ってしまいます。そうなると配信が困難になってしまうでしょう。
チュートリアル (iOS) : mBaaSとAPNsの連携に必要な設定(p8認証キー方式) | ニフクラ mobile backend