【发布时间】:2016-03-23 05:32:47
【问题描述】:
我正在为我的应用程序使用 apns 通知,为此我将 apns 设备令牌存储在我的 sql 数据库中。
问题是每次用户删除或安装应用程序时,它都会生成一个新的设备令牌并将其存储在数据库中,因为同一个用户可以拥有多个设备,我无法更新该用户的令牌和新记录被创建。这让同一设备和同一用户的许多记录。以后可能会导致性能问题。
请帮忙。如何解决为同一用户存储多个令牌的问题。
【问题讨论】:
-
您需要从 APNS 反馈服务中获取数据以确定哪些令牌不再处于活动状态并从您的数据库中清除这些令牌,但是如果您为同一用户和设备获取新令牌,则可以替换旧的。复合键(用户、设备)是唯一的
-
是的,但是同一个用户可以同时拥有多个设备,例如 iphone 6 和 5,并且应用程序不会阻止他同时在多个设备上注册。因此用户可以拥有多个设备令牌并且它不会变得唯一。我还发现了许多具有活动状态的同一设备的设备令牌。例如如果我删除并安装应用程序,在 10 分钟内 5 次,它会创建 5 个令牌并且所有令牌似乎都处于活动状态,所有通知消息都会返回成功。
-
这就是您需要识别设备的原因:将
identifierForVendor存储在您的表中。然后您可以判断这是您以前见过的设备还是新设备 -
哦,我不知道,即使我删除或重新安装应用程序,identifierForVendor 仍会保持不变,如果用户格式化设备,它是否会保持不变? ,因为我需要为该应用程序的用户+设备组合提供一条记录。
-
如果设备被重新格式化,
identifierForVendor将会改变。如果他们重新安装应用程序,那么它可能会改变。这就是为什么您需要使用 APNS 反馈服务来定期清除数据库中的无效设备令牌
标签: ios apple-push-notifications devicetoken javapns