😬
[iOS]DeviceTokenが急に取得できなくなったが、OSのupdateで解決した話
概要
"DeviceToken"が急に取得できなくなったため、解決策を模索した結果、iOSのupdateによって再び取得できるようになった。
背景
PushNotificationのdebugのために、 Push Notifications Consoleを利用して実機デバッグを行っていた。
PushNotificationをconsoleから送信するためには、送信対象のデバイスのDeviceTokenが必要となる。
気付くと、一ヵ月ほど前までは取得できていたDeviceTokenが取得できなくなっていた。
環境(2024/01/09)
デバッグしていたデバイス:iPhone 12 Pro max (iOS 14.6
).
-
iOS 14.6
は2021/05/24リリースだったらしい。 - 現時点での最新のOSは、
iOS 17.2.1
そもそも
APNsとは
"Apple Push Notification Service"の略。
APNsを経由することで、デバイスにPush Notificationを送信できる。
DeviceTokenとは
APNs上で一意である、デバイスを識別するためのトークン。デバイスとアプリケーションの組に対して、トークンがひとつ割り当てられる。
アプリケーションの起動時に、DeviceTokenをAPNsに送信し登録することで、PushNotificationを受け取ることができる。
試したこと
- Target設定の
Capabilities -> Push Notificaoins
が有効になっているか。 -> なっている -
registerForRemoteNotifications
を呼んでいるか。 -> 呼んでいる - 以下のどちらかが呼ばれているか。 -> どちらも呼ばれていない
application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
application( application: UIApplication!, didFailToRegisterForRemoteNotificationsWithError error: NSError! )
- OSのバージョンが古すぎることが原因と思い、iOSのversionを、updateしてみる。(iOS 14.6 -> iOS 17.2)-> DeviceTokenが取得できた!
まとめ
DeviceTokenが取得できなくなった場合、まず、以下のことをチェックする。
- プロジェクトの設定を確認する。
-
registerForRemoteNotifications
やdidRegisterForRemoteNotificationsWithDeviceToken
が呼ばれているかを確認する。
それでもダメな場合、かつ、OS versionが古いことが原因として疑われるなら、OS versionを上げてみると解決するかもしれない。(私の場合はこれで直りました)
Discussion