【问题标题】:how to prevent APNS device token redundancy in database如何防止数据库中的 APNS 设备令牌冗余
【发布时间】: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


【解决方案1】:

抱歉回复晚了,我们通过运行另一个作业解决了这个问题,该作业用于删除存储在数据库中的 APNS 令牌,而不是最新的。

我们的数据库为每个用户和每个设备存储了 APNS 令牌。取决于这些独特性。只有每个设备的最新令牌保存在数据库中,以防止同一设备上出现多个通知。

另一种解决方案是使用打乱(插入或更新),如果任何设备已有令牌,则使用新令牌或插入更新相同的令牌。

我觉得 IOS 应该提供可靠的 API 来处理这个问题。目前的 Delete token API 不可靠。

【讨论】:

  • 你用什么作为设备标识符?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多