【问题标题】:Does every apps in iOS has the same deviceToken?iOS中的每个应用程序都有相同的deviceToken吗?
【发布时间】:2018-02-27 09:34:02
【问题描述】:

在谷歌这个问题之后,这让我很困惑。 iOS 中的每个应用程序是否都有相同的DeviceToken

这里是关于这个问题的Apple Document

设备令牌是一个不透明的 NSData 实例,其中包含由 Apple 分配给特定设备上特定应用的唯一标识符。只有 APN 可以解码和读取设备令牌的内容。每个应用程序实例在向 APN 注册时都会收到其唯一的设备令牌,然后必须将令牌转发给其提供者,如配置远程通知支持中所述。提供者必须在针对关联设备的每个推送通知请求中包含设备令牌; APNs 使用设备令牌来确保通知仅发送到它所针对的唯一应用-设备组合。

【问题讨论】:

  • 每个应用实例在向 APN 注册时都会收到其唯一的设备令牌 --- 写得很清楚
  • 否,DeviceToken 经常变化
  • @SaadChaudhry 我以为他们有相同的令牌,当提供者推送通知时,苹果 apns 用捆绑标识符区分不同的应用程序
  • @iParesh 我知道,当更新应用程序或更新 ios 时,它会改变。但是 facebook 和 instagram 有相同的令牌吗?
  • @Ran 两者都是不同的设备令牌

标签: ios apple-push-notifications devicetoken


【解决方案1】:

不,每个应用都会获得自己的设备令牌。

另请注意,分配给应用程序/设备的设备令牌可以并且确实会不时更改,这就是为什么您始终需要将更新版本发送到您的推送服务器和/或任何其他可能使用设备令牌。


关于“不时”更改的设备令牌的一点说明:

“不时”的意思是“有时,但不经常”

取自Apple Documentation:

永远不要在您的应用中缓存设备令牌;相反,从 系统在您需要时。 APNs 向您的应用发出新的设备令牌 当某些事件发生时。设备令牌保证为 不同,例如,当用户从备份中恢复设备时当用户在新设备上安装您的应用时,以及当用户 重新安装操作系统

【讨论】:

  • 那个"确实会不时改变"是什么意思?这种猜测从何而来?令牌不会因为它一次又一次而出乎意料地改变,所以请你详细说明一下吗?
  • 更新了答案以添加一些澄清@holex
  • 你可以引用这个,这是一个更简单的解释:“通过 APNs 从用户设备上的应用实例接收全球唯一的、应用特定的设备令牌和其他相关数据." (source)
【解决方案2】:

每个应用都有不同的设备令牌。

device token 是适用于 iOS 设备的 Apple 推送通知系统的标识符。 Apple 为每个应用程序(iOS 7 及更高版本)分配一个设备令牌,用作发送推送通知的唯一标识符。每个设备的每个应用程序都有两个设备令牌:一个用于开发,一个用于生产(临时或应用商店构建)。标记是 64 个十六进制字符。

【讨论】:

  • 所以当给我推送通知时,提供者必须给苹果两个参数,应用唯一令牌和应用包标识符?
  • @vikingosegundo APNs 设备令牌的长度可变。不要硬编码它们的大小。
  • "device token is an identifier" 是 Bundle 标识符吗?我的意思是 (NSData *)deviceToken
  • 不,它不是包标识符,它是 64 个十六进制字符的字符串
【解决方案3】:

每个应用实例在向 APN 注册时都会收到其唯一的设备令牌。

【讨论】:

    【解决方案4】:

    每个应用都有不同的设备令牌。这将在您注册推送通知时生成。

    如果您重新安装应用程序,那么您也会在同一设备上为同一应用程序获得不同的设备令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2012-10-19
      相关资源
      最近更新 更多