APNs 重复令牌

Posted

技术标签:

【中文标题】APNs 重复令牌【英文标题】:APNs duplicate tokens 【发布时间】:2012-07-17 09:15:28 【问题描述】:

我们有一个推送通知服务器,它保存多个不同应用程序的数据(设备令牌)。由于 Apple 希望阻止人们使用 UDID 作为标识符,因此我正在考虑更改此服务器,使其不再依赖 UDID 来识别设备。

我了解 APNs 返回的令牌不是全局唯一的,而是每个设备唯一的。但是,在浏览我们的数据库时,我注意到有几种情况(750k+ 注册中的数百个)相同的令牌用于不同的设备

所以我试图找出造成这种情况的原因。在这一点上,我看到了两种可能性:

    我们的服务器注册处理在某处存在一个模糊的错误 Apple 会回收这些设备令牌(可能在设备重置后?)。我们总是存储某个设备最后一次注册的时间,我注意到使用相同令牌的不同设备的注册之间总是至少有几天的时间。据我所知,没有不同设备同时使用的令牌。

如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

【参考方案1】:

我们知道Apple tells us 使用设备令牌将通知推送到设备。所以,只要你是:

    每次应用程序启动并在数据库中注册时,都在 APNs 中查询新的设备令牌

    在反馈服务中查询非活动设备并将其从数据库中清除

...您正在做 Apple 期望您做的事情。

但是,我确实怀疑您的注册码中可能存在错误,因为 100/750k 是一个相当高的冲突率。考虑到这些设备令牌用于推送通知,很多人会抱怨收到不属于他们的通知...

【讨论】:

我忘了我有这个问题,但是是的,我们的注册处理有一个错误。 嗨@Mopper ...很想知道会导致多个用户获得相同设备令牌的错误类型。我问是因为我们看到了类似的东西,知道在我们的系统中寻找什么会很有用:) @JoelMartinez 就像我在对此答案的第一条评论中所说的那样,我们的问题原来是我们设备注册代码中的错误。然而,与此同时,ios 6.0 中存在一个错误,可能会导致您收到重复的设备 ID。说明here

以上是关于APNs 重复令牌的主要内容,如果未能解决你的问题,请参考以下文章

从 APNS 收到的设备令牌的生命周期

APNS 或 GCM 设备令牌验证

服务器 apns 上丢失的设备令牌

APNs、FCM 或 GCM 令牌

获取 APNS 服务的设备令牌列表

如何使用 UILabel 显示 APNS 设备令牌?