Почему одна и та же учетная запись iCloud имеет другой ubiquityIdentityToken

Я пытаюсь реализовать приложение с функцией хранения iCloud Key-value.

В настоящее время я тестирую его с двух устройств iPhone5s с iOS7.0.4 и iPhone4 с iOS6.1.1. Ребята, вы знаете, почему один и тот же iCloud account (проверено в «Настройки» -> «iCloud» -> «Учетная запись») получает два разных ubiquityIdentityToken? я предполагаю, что это причина, по которой данные не синхронизировались между этими двумя устройствами (доступ к сети).

А на iOS6 NSUbiquitousKeyValueStoreDidChangeExternallyNotification не срабатывает.

Заранее спасибо!


person Magnus    schedule 06.01.2014    source источник
comment
Разные токены на разных устройствах? Я бы посчитал это нормальным или, по крайней мере, ничем не примечательным. Если вы имеете в виду разные токены на одном и том же устройстве в разное время, это разные вещи.   -  person Tom Harrington    schedule 06.01.2014
comment
Я думал, что ubiquityIdentityToken должен быть таким же, если используется одна и та же учетная запись iCloud.   -  person Magnus    schedule 06.01.2014


Ответы (3)


ubiquityIdentityToken предназначен только для:

  • Определите, доступен ли iCloud для вашего приложения
  • Определите, изменилась ли учетная запись iCloud (путем сравнения с ранее сохраненным значением).

Он непрозрачен, но соответствует нескольким протоколам. Вы можете сохранить его локально и сравнить текущее значение с предыдущим значением, но это почти все, для чего оно подходит. Не гарантируется, что он будет полезен в любой другой ситуации.

Не гарантируется, что они будут одинаковыми на разных устройствах, даже если эти устройства используют одну и ту же учетную запись iCloud. Почему это может быть иначе, не задокументировано - это может каким-то образом кодировать значение, зависящее от устройства. В любом случае, это не то, что вы можете перенести с одного устройства на другое и ожидать, что оно все еще будет полезным. Это не то, как это предназначено для работы.

person Tom Harrington    schedule 06.01.2014
comment
Похоже, что ubiquityIdentityToken отличается даже между приложениями на одном устройстве (приложение iOS и расширение Today Widget), которые используют его совместно с группами приложений. (Проверено на iOS 9.3.5) - person Marco Boschi; 07.09.2016

Он кодирует значение, зависящее от устройства, в токене. Группы 8-значных шестнадцатеричных чисел между позициями 17 и 22 меняются на другом устройстве ИЛИ с другой учетной записью iCloud.

Остальные группы обычно остаются одинаковыми для разных приложений, устройств или учетных записей iCloud.

person Peter Johnson    schedule 18.04.2016

Это странное поведение. В таких случаях Apple обычно рекомендует выйти и снова войти в систему (используя тот же Apple ID) на обоих устройствах. Попробуйте это и посмотрите, поможет ли это. Кроме того, убедитесь, что на каждом устройстве установлена ​​последняя версия вашего приложения (с включенным iCloud).

person Rinat Khanov    schedule 06.01.2014