2014-02-14 4 views
2

Я использую NSUbiquitousKeyValueStore для хранения данных в iCloud из приложения iOS A, но я не могу получить какой-либо объект в моем приложении iOS B. Однако я могу получить объект на своем Приложение iOS A. Оба приложения имеют одинаковый идентификатор команды, и оба имеют одинаковые идентификаторы контейнеров Ubiquity. Я добавил функцию iCloud через XCode 5, которая автоматически создавала файлы прав. Я также включил iCloud для обоих идентификаторов приложений.iCloud не может обмениваться данными между двумя приложениями

Вот как я устанавливаю данные из App A:

[[NSUbiquitousKeyValueStore defaultStore] setObject:value forKey:key]; 
[[NSUbiquitousKeyValueStore defaultStore] synchronize]; 

Вот как я получаю данные на App B:

[[NSUbiquitousKeyValueStore defaultStore] synchronize]; 
[[NSUbiquitousKeyValueStore defaultStore] objectForKey:key]; 

Я не знаю, если это имеет значение, но я бегу оба приложения в режиме отладки. Нужно ли создавать приложения iTunes с включенным iCloud?

Спасибо!

+0

У меня нет опыта работы с хранилищем ключей, поэтому я, вероятно, не должен комментировать, но я заметил, что, похоже, нигде не нужно вводить общий идентификатор хранилища KV. Если ваши приложения имеют разные идентификаторы пакетов, как они используют один и тот же магазин KV? –

+0

Дрю поблагодарил вас за ваш комментарий, у него не было ответа, но это помогло мне найти способ решить эту проблему. – user991771

ответ

11

Решено! Поэтому, чтобы разделить хранилище ключей между двумя различными приложениями с тем же идентификатором команды, мне пришлось изменить iCloud Key-Value Store в файле с правами, чтобы они были одинаковыми в обоих приложениях. По умолчанию значение $ (TeamIdentifierPrefix) $ (CFBundleIdentifier), и я изменил его на $ (TeamIdentifierPrefix) my.company.AppA.

Надеется, что это поможет кому-то =)

+0

Чувак, огромное спасибо! Вот и все! – Andy

4

Вот link to documentation. Найдите «Конфигурирование общего хранилища ключевого значения для нескольких приложений»

0

Idk, если это новая вещь в Xcode 9, но если вы перейдете на вкладку Capabilities и после включения iCloud вы можете выбрать контейнер или Создай. Если все ваши приложения имеют один и тот же контейнер, как указано здесь, вы можете создавать резервные копии своих данных через файловую систему или Core Data, и все они могут получить доступ к тем же данным в iCloud. Я знаю, что это на 100% верно, потому что я сделал это, и он работает очень хорошо.

Смежные вопросы