VoIPプッシュ通知でDeviceNotForTopicのエラーが出る
- 2020.07.25
- テクノロジー
iOS で VoIPプッシュ通知を試していてDeviceNotForTopicというエラーが出てハマったので解決策を共有。
原因
Provisioning ProfileとかCertificates周りに何かエラーがあるのかとばかり思っていたが、そうでもなかった。
Device Tokenは通常のAPNsのものと VoIP Push Notification のもので全く別のトークンとなる。APNs用のものを指定して VoIP Push 通知を送ろうとしてエラーになっていた。
ちなみにNWPusherを使用している場合は
Notification error: APN invalid token
というエラーが出ていた。
解決策
VoIP用のものは
pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType)
というデリゲートメソッドから取得。(pushCredentials.token でトークンを取得する)
APNs用のものは
application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
で取得する。
余談だが、Data型のtokenは
token.map { String(format: “%.2hhx”, $0) }.joined()
でString型に変換する。
-
前の記事
SwiftUIでNavigationViewのtitleに画像を載せる 2020.06.25
-
次の記事
6桁同士の掛け算が暗算でできるようになる平方数の話 2021.05.15