好像我發現的所有其他信息都過時了。 考慮一名擁有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
您可以嘗試在用戶第一次登錄時刪除每個令牌,並且每次啓動應用時都應更新其他設備的令牌。雖然有一個問題,但在設備令牌被刪除並且設備仍處於活動狀態的短時間內,您將無法在短時間內發送通知。 –