Apple のドキュメントに従って、
デバイス トークンは変更される可能性があるため、アプリは起動されるたびに再登録し、受信したトークンをサーバーに返す必要があります。デバイス トークンの更新に失敗すると、リモート通知がユーザーのデバイスに届かない可能性があります。ユーザーがバックアップ データを新しいデバイスまたはコンピューターに復元したり、オペレーティング システムを再インストールしたりすると、デバイス トークンは常に変更されます。新しいデバイスまたはコンピューターにデータを移行する場合、リモート通知がそのデバイスに配信される前に、ユーザーはアプリを 1 回起動する必要があります。
デバイス トークンをキャッシュしないでください。必要なときはいつでもシステムからトークンを取得してください。アプリが以前にリモート通知用に登録されている場合、registerForRemoteNotifications メソッドを再度呼び出しても追加のオーバーヘッドは発生せず、iOS は既存のデバイス トークンをアプリ デリゲートにすぐに返します。さらに、iOS は、アプリの登録または再登録に応答するだけでなく、デバイス トークンが変更されるたびにデリゲート メソッドを呼び出します。
そのため、起動のたびにトークンを再登録するのが最善の方法です。registerForPushNotifications(application)
そのために、メソッドを呼び出すことができますapplicationDidFinishLaunching()
。
上記のメソッドのデリゲート メソッドでは、サーバーに送信didRegisterForRemoteNotificationsWithDeviceToken
できdeviceToken
ます。
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
var tokenString = ""
for i in 0..<deviceToken.length {
tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
}
print("Device Token:", tokenString)
}