[英]Push Notifications: Associating a device token with a device
發生這種情況時,我的應用當前正在接收與上一個應用用戶帳戶相關聯的推送通知:
即使玩家現在以“ phil”身份登錄,他們仍將繼續收到與“ bob”以及“ phil”相關聯的帳戶的推送通知。
如果我使用的是UDID,則可以確保每個設備僅注冊一個設備令牌,因此可以從播放器的舊Web服務帳戶“ bob”中刪除UDID和設備令牌,從而確保每個設備僅一個活動帳戶。 當玩家注冊為“ phil”並且網絡服務器可以看到玩家已使用相同的UDID注冊了一個新帳戶,然后從任何具有該UDID的舊帳戶中刪除UDID和設備令牌(即“ bob”)時,就會發生這種情況帳戶)。 除非有人再次登錄該帳戶(在同一設備上,或在另一台設備上),否則不會將任何推送通知發送到bob帳戶。
但是,這在使用CFUDIDCreate時效果不佳,因為安裝之間可能會發生變化。
如何確保僅收到當前登錄用戶的推送通知? 或者,換句話說,如何確保我的Web服務器每個設備僅存儲一個設備令牌?
您可以將APNS令牌設為關鍵服務器端,而不是設備特定的標識符。 重新安裝應用程序時,您將現有記錄(APNS令牌,“ bob”)替換為(APNS令牌,“ phil”),從而在重新安裝應用程序時刪除了令牌和bob帳戶之間的鏈接。
據我所知,APNS令牌在重新安裝應用程序之間不會更改,因此應該可以使用。 (如果確實在將來的iOS版本中的重新安裝之間進行了更改,這將不是問題,因為舊令牌將不再有效,因此該設備將不會收到發送給bob的通知)。
在重新安裝應用程序的情況下,生成的設備令牌是否與以前相同? 我覺得不行。 您在服務器上注冊了兩個不同的設備令牌,一個用於“ bob”,另一個用於“ phil”?
在這種情況下,令牌指向'bob'是無效的,您可以使用APNS反饋服務對其進行過濾,該服務會不斷更新,“使用按應用程序列出的嘗試交付失敗的設備列表。提供商應以二進制格式編碼的設備令牌來標識。提供商應定期查詢反饋服務,以獲取其應用程序的設備令牌列表,每個設備令牌均由其主題標識。然后,在確認最近未重新使用該應用程序后,在已標識的設備上注冊后,提供商應停止向這些設備發送通知。”
祝好運!
在iOS 9.x之后,設備令牌在每次安裝該應用程序時始終是唯一的。 您可以將UUId令牌保存到鑰匙串。 即使重新安裝應用程序,鑰匙串也始終持有令牌。 您可以在此處找到鑰匙串文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.