好像我发现的所有其他信息都过时了。 考虑一名拥有iPhone和iPad的用户,并且每台设备上都安装了相同的应用程序。首次从每个设备登录时,唯一设备令牌将被放置在数据库中以用于将来的通知。下面是我用的AppDelegate获得设备令牌的方法:当同一用户使用多个设备时APNs设备令牌更新
- (void)application:(UIApplication*)application
didRegisterForRemoteNotificationsWithDeviceToken(NSData*)deviceToken
{
[[NSUserDefaults standardUserDefaults] setValue:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
...这样以后我可以在登录过程中使用它。
现在,如果由于某种原因应用程序被卸载并重新安装,或者iOS更新后,设备令牌将会不同,我必须更新数据库中的记录。
如果我不得不处理每个用户只有一个设备,那么我会按用户ID去删除以前的记录并插入新的记录。但是,如果有多个设备......我如何确定要更新哪个数据库记录,哪个令牌不再被使用?
是否有一些独特的设备ID永远不会改变?
不,如果我卸载并重新安装应用程序,它不会以这种方式工作。 UserDefaults将为空。但旧的令牌仍然在数据库中。 – ekashking
您可以尝试在用户第一次登录时删除每个令牌,并且每次启动应用时都应更新其他设备的令牌。虽然有一个问题,但在设备令牌被删除并且设备仍处于活动状态的短时间内,您将无法在短时间内发送通知。 –