Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何远程更新APNS设备令牌_Ios_Swift_Apple Push Notifications - Fatal编程技术网

Ios 如何远程更新APNS设备令牌

Ios 如何远程更新APNS设备令牌,ios,swift,apple-push-notifications,Ios,Swift,Apple Push Notifications,我的应用程序正在使用远程通知提醒用户计划的操作。用户可能会在几个月后收到通知 应用程序在每次启动时更新设备令牌(将收到的令牌发送到服务器) 但有一个问题。有时设备令牌变得无效。(后端服务从APNS获取错误“无效令牌”)。我知道设备令牌可以更改是正常的。但有一种情况是,用户在几个月后打开提醒,但在此期间不使用该应用程序 如何在设备令牌过期和应用程序关闭时更新设备令牌?每次运行应用程序时,它都会调用下面的AppDelegate方法,因此每次运行应用程序时,您都需要发送APN令牌: func appl

我的应用程序正在使用远程通知提醒用户计划的操作。用户可能会在几个月后收到通知

应用程序在每次启动时更新设备令牌(将收到的令牌发送到服务器)

但有一个问题。有时设备令牌变得无效。(后端服务从APNS获取错误“无效令牌”)。我知道设备令牌可以更改是正常的。但有一种情况是,用户在几个月后打开提醒,但在此期间不使用该应用程序


如何在设备令牌过期和应用程序关闭时更新设备令牌?

每次运行应用程序时,它都会调用下面的AppDelegate方法,因此每次运行应用程序时,您都需要发送APN令牌:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let tokenParts = deviceToken.map { data -> String in
            return String(format: "%02.2hhx", data)
        }

        let token = tokenParts.joined()
        print("token :: ", token)
        //TODO:- now you need to send above token to your API that saved this token to user profile


    }

是的,我正在这样做,但当用户在几个月后打开提醒,并且在此期间不使用应用程序时,会发生什么情况?可能这意味着用户已经从他的设备中删除了应用程序,所以您应该从您的设备中删除令牌database@matulik若用户在几个月内并没有使用该应用程序,他无论如何都会收到通知。但是,如果用户恢复设备并更改令牌,则需要在服务器端以其他方式保存用户,如电子邮件地址和令牌,或facebook id和令牌。此方法不会在每次应用程序运行时调用,仅在用户允许推送通知警报时调用一次。我猜用户删除了应用程序。如果您得到一个无效的令牌响应,您所能做的就是将其从数据库中删除并继续。谁告诉您设备令牌得到更新?这里有一个引用,说明同一设备的设备令牌始终相同:APN可以出于多种原因发布新设备令牌:用户在新设备上安装应用程序、用户从备份中恢复设备、用户重新安装操作系统、其他系统定义的事件、,