似乎我发现的所有其他信息都已过时。 考虑一个拥有iPhone和iPad并且每个设备上安装了相同应用程序的用户。从每个设备首次登录时,唯一设备令牌将被放置在数据库中以用于将来的通知。下面是我用来在AppDelegate中获取设备令牌的方法:
- (void)application:(UIApplication*)application
didRegisterForRemoteNotificationsWithDeviceToken(NSData*)deviceToken
{
[[NSUserDefaults standardUserDefaults] setValue:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
...以便稍后我可以在登录过程中使用它。
现在,如果出于某种原因,应用程序被卸载并重新安装,或者在iOS更新之后,设备令牌将会不同,我必须更新数据库中的记录。
如果我每个用户只需要处理一个设备,那么我会按用户ID,删除之前的记录并插入新记录。但是在多个设备的情况下......如何识别要更新的数据库记录,哪个令牌不再使用?
是否有一些独特的设备ID永远不会改变???
答案 0 :(得分:0)
每次启动应用时,更新的设备令牌都将采用与存储设备令牌相同的方法。因此,您只能在那里使用逻辑来保存和更新令牌。
您将当前令牌存储在UserDefaults中,因此只需先从数据库中删除该令牌,然后更新新令牌。 您可以使用保存令牌的相同方法执行此操作。为此,每次必须检查当前设备令牌是否在数据库中?如果是,则删除它并更新它以获取用户ID。如果不是,只需将此文件保存在用户ID的数据库中即可。