Ios 为什么同一个iCloud帐户得到不同的ubiquityIdentityToken

Ios 为什么同一个iCloud帐户得到不同的ubiquityIdentityToken,ios,icloud,nsubiquitouskeyvaluestore,Ios,Icloud,Nsubiquitouskeyvaluestore,我正在尝试实现一个具有iCloud键值存储功能的应用程序 目前,我正在两台设备上测试它,一台是iPhone5s,另一台是iOS7.0.4,另一台是iPhone4,iOS6.1.1 你们知道为什么同一个iCloud账户(从设置->iCloud->account中选中)会得到两个不同的ubiquityIdentityToken?我想这就是这两台设备(网络访问)之间数据不同步的原因 在iOS6上,NSUbiquitousKeyValueStoreDidChangeExternallyNotificat

我正在尝试实现一个具有
iCloud键值
存储功能的应用程序

目前,我正在两台设备上测试它,一台是iPhone5s,另一台是iOS7.0.4,另一台是iPhone4,iOS6.1.1 你们知道为什么同一个
iCloud账户
(从设置->iCloud->account中选中)会得到两个不同的
ubiquityIdentityToken
?我想这就是这两台设备(网络访问)之间数据不同步的原因

在iOS6上,
NSUbiquitousKeyValueStoreDidChangeExternallyNotification
不会触发


提前谢谢

这是一种奇怪的行为。在这些情况下,苹果通常建议在两台设备上注销并再次登录(使用相同的苹果ID)。试试看是否有帮助。此外,确保在每个设备上安装最新版本的应用程序(启用iCloud)。ubiquityIdentityToken仅用于:

  • 确定您的应用程序是否可以使用iCloud
  • 确定iCloud帐户是否已更改(通过与以前保存的值进行比较)
它是不透明的,但符合一些协议。您可以在本地保存它,并将当前值与以前的值进行比较,但这就是它的全部好处。它不能保证在任何其他情况下都有用


即使这些设备使用相同的iCloud帐户,也不能保证在不同的设备上是相同的。它可能不同的原因没有文档记录——它可能以某种方式编码了特定于设备的值。不管怎样,它不是可以从一个设备传输到另一个设备并期望仍然有用的东西。这不是它的设计工作方式。

它确实在令牌中编码了特定于设备的值。位置17和22之间的8位十六进制数字组在不同的设备上或使用不同的iCloud帐户进行更改


在不同的应用程序、设备或iCloud帐户中,其他组通常保持不变。

不同设备上的不同令牌?我认为这是正常的,或者至少是不起眼的。如果你指的是同一设备上不同时间的不同令牌,那就不同了。我认为只要使用相同的iCloud帐户,ubiquityIdentityToken就应该是相同的。
ubiquityIdentityToken
即使在同一设备上的应用程序(iOS应用程序和今天的Widget扩展程序)之间也似乎是不同的与应用程序组共享。(在iOS 9.3.5上测试)