我将在应用程序商店和1个城市飞艇帐户上有多个应用程序,以向所有这些设备发送推送通知。我想知道的是,每个Apple设备是否在所有应用程序中都具有相同的“推送令牌”?这更像是一个数据库体系结构的东西,所以如果一个设备使用我的许多应用程序,我就不会多次复制推送令牌。
如果每个Apple设备为其安装的每个应用程序生成一个唯一的推送令牌,我的架构需要更改。
答案 0 :(得分:20)
设备令牌并非每个设备都是唯一的;它们在每个操作系统安装时都是唯一的。因此,如果用户购买新设备但未从备份恢复,则他们将获得新的设备令牌。如果设备被擦除,它将获得新的设备令牌,因此新用户不会收到旧用户的消息。
此外,使用生产系统使用沙盒和分发应用程序为开发应用程序返回了不同的标记。
由于单个用户可能会合法地在多个设备上安装您的应用程序(例如iPhone和iPad),因此在用户和设备令牌之间建立多对多的关系会更加安全,从而确保安全。
既然你提到了Urban Airship,你可能会发现我们的别名功能有助于这种事情;您可以在最后为不同的令牌分配一个非唯一的别名,然后我们将跟踪您的用户与其设备令牌之间的映射。请参阅UA documentation的注册和推送部分。
编辑:更新,因为我在这个旧答案中看到了一些更多的赞成。从iOS 7开始,设备令牌对于每个应用程序都是唯一的,即使在同一设备上也是如此。
答案 1 :(得分:0)
根据Apple最新文档:
永远不要在您的应用程序中缓存设备令牌;而是在需要时从系统中获取它们。当某些事件发生时,APN会向您的应用发布新的设备令牌。保证设备令牌是不同的,例如,当用户从备份中还原设备时,当用户在新设备上安装您的应用程序以及当用户重新安装操作系统时。获取令牌而不是依赖缓存,可确保您拥有提供者与APN通信所需的当前设备令牌。当您尝试获取设备令牌但未更改时,fetch方法将快速返回。 For more info check apple doc