APN设备令牌是否对每个应用程序都是唯一的?

Mup*_*ups 76 iphone apple-push-notifications devicetoken

我在iTunes商店有两个应用程序 - 都实现推送通知.当我测试向这些制作应用发送通知时,我注意到针对应用A的推送标题并打开了应用B.

这两个应用程序都安装在同一部手机上.我查看了我的设备表,看到为两个应用程序列出的设备令牌(当然,设备ID)都是相同的.

根据需要,我在服务器上使用两个不同的证书 - 每个应用程序一个.我有点假设设备令牌或证书会将消息路由到正确的应用程序但显然不是.

我可以在NSLog中看到从每个应用程序发送的令牌确实是相同的.

设备令牌应该对每个应用程序都是唯一的吗?如果是这样,任何想法我的测试手机如何将两个应用程序的相同设备令牌发送到我的服务器.请注意,这是来自应用商店目前的两个应用.

谢谢你的帮助!

Mup*_*ups 90

注意:这是一个旧答案,仅适用于iOS <= 6.请参阅user1641761对当前方法的回答.

弄清楚了.设备令牌并非手机 - 应用程序配对所独有.它们仅限于手机.如果您在同一部手机上推送多个应用,则他们将使用相同的设备令牌.您用来发送通知的证书将决定它转到哪个应用程序.

  • 这是一个老答案,对于旧的iOS,即iOS 6及更低版本都是如此.从iOS 7开始,apple已经改变了规则,设备令牌不再是设备唯一的.与iOS 6及更低版本不同,同一设备上的所有应用都会有不同的令牌. (7认同)
  • 嗨@Mups.在开场问题中,您声明:"根据需要,我在服务器上使用两个不同的证书 - 每个应用程序一个".然后,在你的回答中你说:"你用来发送通知的证书将决定它去哪个应用程序"......那么,为什么它不起作用?我即将为我的后端实现类似的设置,我想确定.谢谢. (3认同)
  • 另请注意,设备令牌因您的构建类型而异.开发构建有一个设备令牌,而分发(生产)构建有另一个.当用户重新安装操作系统时,设备令牌也会重置为其他设备. (2认同)
  • 把它投票,因为它不再是最新的.请参阅user1641761的答案. (2认同)

jef*_*est 52

iOS 7处理方式不同.它现在很独特.

请参阅本文第1点:http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

"在iOS 7之前,设备令牌在给定设备上的所有应用程序安装中都是相同的.手机上的不同应用程序,无论是Tap Tap Revenge还是USA Today,都将使用相同的地址(即设备令牌)来路由推送通知你.你与消息配对的安全凭证将确保它成为合适的应用程序.在iOS 7上,Apple更进了一步,确保每个应用程序安装中的设备令牌现在都不同.这有助于通过删除另一个电话级标识符进一步保护用户的隐私."

另请参阅 ios 7设备令牌对于同一设备是不同的


sw_*_*eer 16

与Apple Developers分享我的理解和答案:

  • 设备令牌
    • 设备令牌是设备的唯一标识符.
    • APN使用唯一设备证书生成设备令牌(可能正在使用配置文件)
    • 设备令牌可能会更改.因此,请确保每次都将更新的设备令牌发送到您的服务器.
    • 设备令牌与设备上的所有应用程序相同.
    • 它是特定于设备的,而不是特定于应用程序的.
    • 沙箱和生产的设备令牌可能不同.
      • 基于供应配置文件(沙箱或生产),APN可以为同一设备的沙箱和生产生成不同的设备令牌.
    • 那么,如何在设备上区分推送通知?它是哪个应用程序?
      • 它基于服务器上安装的应用程序标识符和SSL证书(使用该证书将通知推送到APNs服务器)来完成.
  • 参考


Mar*_*hip 8

也就是说,请记住,Apple保留根据自己的意愿更改设备APNToken的权利,因此请勿使用它来唯一标识设备/用户.