我使用NSUserdefaults存储设备令牌值,然后将此值发送到我的服务器。
我的应用程序检查此值是否存在。
如果该值不存在,我的应用会尝试调用registerdevicetoken
方法。
但我发现了一个问题。
如果用户通过iTunes恢复他/她的iPhone,则会恢复NSUserdefaults值。 但是,存储的设备令牌不是新设备的有效设备令牌,但我的应用无法识别该手机已通过iTunes重新安装。
当用户恢复iPhone时,如何收集正确的设备令牌?
答案 0 :(得分:0)
好。让我们采用文档的文件夹方法。首先,让我们来看看iOS应用程序的解剖结构。如下所示,有3个关键文件夹。
除非您专门调用文件上的命令,否则将备份完整的Documents和Libray文件夹。那就是我们要做的。例如,创建一个可以调用firstLaunch.txt
的文件。将此文件放入库/应用程序支持/。并使用以下命令设置noBackUp标记:
-[NSURL setResourceValue:forKey:error:]
使用NSURLIsExcludedFromBackupKey
密钥。这将阻止文件备份。现在,您可以使用简单的if-else语句检查文件是否存在。如果是,那意味着该应用程序已经运行且令牌是最新的。如果没有,请创建一个新的用户令牌,然后再次创建该文件,将其放入正确的文件夹中。要清楚,这是您应该创建文件的唯一时间,因为它只会在第一次启动时和恢复后调用。您可以在Apple Docs找到更多信息和此图片。
希望有帮助,朱利安。