2015-03-16 9 views
3

Я видел пару вопросов по этому вопросу и пробовал все предоставленные ответы, и это все еще не работает для меня.Расширение WatchKit не видит обновлений NSUserDefaults для группы приложений

Я пытаюсь поделиться несколькими небольшими фрагментами данных (строк и BOOL) между моим iPhone App и его расширением WatchKit. (Если это имеет значение, информация считывается GlanceController приложения WK)

Через сайт разработчика я создал группу приложений (group.com.theYawns.Sorcerers-Apprentice). Если я посмотрю на «Идентификаторы приложений», у меня появляется два идентичных идентификатора для моего приложения (com.theYawns.Sorcerers-Apprentice) плюс один для расширения (com.theYawns.Sorcerers-Apprentice.watchkitextension). У каждого из них включена опция «Группа приложений» (как для разработки, так и для распространения), и группа приложений выбирается, если я изменяю идентификатор приложения.

Я включил «Группы приложений» в возможностях как для приложения, так и для расширения. Меня беспокоит то, что периодически - несколько раз в день, но не каждая сборка. Если я войду и посмотрю вкладку «Возможности», у меня есть красный восклицательный знак с надписью «Добавить права на группы приложений» в ваш файл прав. Если я посмотрю файл с правами, это право, и если я нажму «Исправить проблему», красный восклицательный знак изменится на галочку. Но тот факт, что это нужно делать несколько раз в день, касается меня, что что-то не так.

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

В обоих мое приложение и расширение, я получаю ссылку на значения по умолчанию пользователя с помощью

NSUserDefaults *sharedAppDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.theYawns.Sorcerers-Apprentice"]; 

Я также попытался добавить [sharedAppDefaults synchonize] после каждой записи и перед моим WatchKit пытается прочитать, только в случае, если вещи не смывались. (Не имеет значения).

Мой идентификатор пакета расширения WatchKit отличается от моего идентификатора пакета iPhone, который является одним из ответов, которые я видел на другой теме.

Я также добавил NSTimer, чтобы обновить взгляд каждые 10 секунд, поэтому, если возникла проблема с синхронизацией изменений, я бы ожидал, что она решит себя после цикла обновления или два, но это не ,

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

Другие темы Я поискал включают:

Why won't app groups work inside my WatchKit extension?

https://stackoverflow.com/questions/27047455/how-to-shared-storage-between-app-and-extension-with-app-group-and-

WatchKit NSUserDefaults and NSKeyedUnarchiver issue

ответ

2

ОК, я нашел ответ на форумах разработчиков Apple.

Появилась на вкладке «Возможности» XCode, на которой были установлены все правильные права. И я мог видеть файл «Права доступа» в моем проекте, открыть его и убедиться, что он настроен правильно.

BUT - если я посмотрел на вкладку «Настройки сборки» моей App Target, в разделе «Подписание кода» не было показано файла прав. (Все это правильно отображается для расширения WatchKit, но не для основного приложения для iPhone).

Когда я подключил имя файла моих прав в разделе «Подписание кода», все приступило к работе.

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

Резюме: чтобы убедиться, что права правильные, вы должны правильно установить переключатели в возможностях, и вы должны увидеть файл с правами, указанный в разделе «Настройки сборки/Подпись кода».

0

Вы должны добавить право на свой провизий профиль приложения extension.To сделать это, Войти на свою учетную запись разработчика, чтобы добавить права, после этого загрузите последний профиль обеспечения. Чтобы проверить, включена ли группа приложений или нет, откройте загруженный профиль подготовки в «TextEditor» и найдите «группу приложений». Это покажет вам результат, если вы сделали это правильно. Используйте эти недавно загруженные профили подготовки, и он покажет вам галочку в возможностях.