Ошибка NSUbiquitousKeyValueStore: нет действительного права com.apple.developer.ubiquity-kvstore-identifier

У меня проблема с интеграцией iCloud с моим приложением.

Когда я устанавливаю проверку доступности iCloud, я получаю Success для функции

NSURL *iCloudURL = [fileManager URLForUbiquityContainerIdentifier:@"AppID"];

но сразу после этого, когда я пытаюсь выполнить:

NSUbiquitousKeyValueStore *iCloudStore = [NSUbiquitousKeyValueStore defaultStore];

Я получаю сообщение об ошибке

NSUbiquitousKeyValueStore error: no valid com.apple.developer.ubiquity-kvstore-identifier entitlement.

Любые идеи о том, как это исправить? Мой файл App.Entitlements использует префиксы макроса, установленные по умолчанию, ничего не изменилось из автоматически сгенерированного файла. iCloud определенно включен в AppID в iTunes Connect.

Спасибо.

Ответ 1

У меня была такая же проблема, хотя все мои коды, настройки, права и т.д. были правильными. Я исправил это, физически удалив приложение с моего iPhone, а затем построил в Xcode и запустил его на моем iPhone, и он сработал. Просто хотел добавить это, если другие решения не работают для кого-то другого.

Ответ 2

Большое предупреждение: если ваше устройство заблокировано, убедитесь, что вы удалили AppSync. Из-за этого у меня было два безумных дня. iCloud (и Game Center) не будет работать на устройстве с AppSync, установленным даже с правильными правами и профилями!

Ответ 3

Я сделал следующее, чтобы заставить это работать для меня (Xcode 4.2.1):

  • В Xcode перейдите к своей цели > Сводкa > внизу, нажмите "Включить права".
  • В IOS Provisioning Portal перейдите в App ID и включите поддержку iCloud. (Возможно, вам не обязательно это делать, но это сработало для меня.)
  • Отредактируйте профиль Provisioning Profile, чтобы заставить его обновить; затем загрузите этот профиль и откройте его, чтобы он автоматически запускался в Xcode.
  • Очистите и создайте приложение на своем устройстве.

Ответ 4

Я столкнулся с этой проблемой при попытке отладки приложения Mac (не iOS). Проблема оказалась в том, что я не подписывал отладочную сборку и не имел фазы развертывания проекта с установкой "Пропустить установку" на "Да".

По-видимому, iCloud не будет корректно работать с неподписанным приложением.

Ответ 5

Добавьте com.apple.developer.ubiquity-kvstore-identifier в свои права со следующим значением:

$(TeamIdentifierPrefix)$(CFBundleIdentifier)