推送通知令牌在单个设备的所有应用程序中是不是唯一?

Posted

技术标签:

【中文标题】推送通知令牌在单个设备的所有应用程序中是不是唯一?【英文标题】:Are push notification tokens unique across all apps for a single device?推送通知令牌在单个设备的所有应用程序中是否唯一? 【发布时间】:2010-05-01 20:47:00 【问题描述】:

我将在应用商店和 1 个城市飞艇帐户上拥有多个应用程序,以向所有这些设备发送推送通知。我想知道的是每台 Apple 设备是否在所有应用程序中都具有相同的“推送令牌”?这更像是一种数据库架构,因此如果一台设备使用我的许多应用程序,我就不会多次复制推送令牌。

如果每个 Apple 设备为其安装的每个应用程序生成一个唯一的推送令牌,我的架构需要更改。

【问题讨论】:

【参考方案1】:

每个设备的设备令牌并不完全唯一;它们在每个操作系统安装中都是唯一的。因此,如果用户购买了新设备但没有从备份中恢复,那么他们将获得一个新的设备令牌。如果设备被擦除,它将获得一个新的设备令牌,因此新用户不会收到旧用户的消息。

此外,使用沙盒的开发应用程序和使用生产系统的分发应用程序返回不同的令牌。

由于单个用户可能会合法地将您的应用安装在多台设备上(例如 iPhone 和 iPad),因此为了安全起见,在用户和设备令牌之间建立多对多关系会更加安全。

既然您提到了 Urban Airship,您可能会发现我们的别名功能有助于此类事情;您可以在我们最后为不同的令牌分配一个非唯一的别名,然后我们将跟踪您的用户和他们的设备令牌之间的映射。查看UA documentation的注册和推送部分。

编辑:更新,因为我看到了对这个旧答案的更多支持。从 ios 7 开始,每个应用程序的设备令牌都是唯一的,即使在同一设备上也是如此。

【讨论】:

现在,我没有做“用户帐户”,这样一个用户将使用多个设备“登录”。我的系统设置为每个唯一的设备 ID 都被视为一个原子实体(在他们启动任何应用程序时创建或触摸) - 可以实现我需要对软用户帐户执行的任何“多对多”之后。 -----出色的反应,得到了我需要的一切。城市飞艇服务很好,很高兴和你们做生意。 擦除设备中的旧设备令牌会显示在 Apple 反馈服务中吗?如果您尝试向那些现在无效的令牌发送通知会发生什么? 不,他们不会出现在反馈服务中。如果你推动他们,他们什么都不做。 如果将iOS从10.3.0升级到10.3.1,设备令牌是否过期?【参考方案2】:

根据苹果最新文档:

永远不要在您的应用中缓存设备令牌;相反,在需要时从系统中获取它们。当某些事件发生时,APNs 会向您的应用程序发出一个新的设备令牌。设备令牌保证是不同的,例如,当用户从备份恢复设备时,当用户在新设备上安装您的应用程序时,以及当用户重新安装操作系统时。获取令牌而不是依赖缓存,可确保您拥有提供商与 APN 通信所需的当前设备令牌。当您尝试获取设备令牌但它没有更改时,获取方法会快速返回。 For more info check apple doc

【讨论】:

以上是关于推送通知令牌在单个设备的所有应用程序中是不是唯一?的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 中发送所有用户推送通知

如何在 iPhone 上指定推送通知的用户?

实现推送通知服务器:如何检查传递设备令牌的消息是不是来自真实设备?

用于开发和生产的 iOS 推送通知设备令牌

没有设备令牌的 ios 推送通知/消息

通过 PHP 广播推送通知