Время от времени, но не всегда (у меня было это немного работать), приложение/расширение попадает в состояние, когда я не могу прочитать флаг, установленный в моей группе приложений между моим приложением-компаньоном и моим приложением расширение. Не знаю, как это происходит в этом состоянии или почему значения отличаются, но это критическое для моего приложения всегда синхронизируется.
Сопутствующее приложение viewDidLoad:
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
.....
[myAppSettings setBool:true forKey:@"myBool"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");
Расширение приложения ViewDidLoad
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");
Консольный выход
Companion app - bool TRUE
App extension - bool FALSE
Я также синхронизирую, прежде чем мое приложение-компаньон войдет в фон. У меня есть группа приложений, настроенная на портале и т.д.
Что я делаю неправильно?
ИЗМЕНИТЬ
По-видимому, другие имеют эту проблему: https://devforums.apple.com/message/977151#977151
"Я думаю, что это в настоящее время очень проблематично.
Иногда происходит обмен данными, затем происходит изменение, и внезапно виджет больше не видит общие данные (как на Simulator, так и на устройстве).
Раздражает и надеется, что это будет немного более надежным в следующей бета-версии!"
РЕДАКТИРОВАТЬ 2 Похоже, что еще один человек сообщил об этой точной проблеме:
"Я также заметил то же самое. Это происходит не только с NSUserDefaults, но также и все файлы в папке контейнера. расширение клавиатуры внезапно потеряет чтение/запись контейнерную папку после использования клавиатуры на некоторое время.
РЕДАКТИРОВАТЬ 3 Больше доказательств: https://devforums.apple.com/message/1028078#1028078
После перехода на бета-версию 3 я заметил, что иногда клавиатура не удалось открыть базу данных, поскольку ей не удалось получить доступ к БД файл. Клавиатура уже имела доступ к файлу.
EDIT 4
Похоже, это может быть из-за того, что клавиатура теряет флаг RequestsOpenAccess
. Но я не могу воспроизвести его, и я не могу сказать точно.
РЕДАКТИРОВАТЬ 5
Похоже, что другие сообщают об этом в сборке iOS8 GM:
Этот вопрос по-прежнему сохраняется для меня в GM. Кажется, это связано с сбой клавиатуры.. но и, похоже, есть некоторые разногласия между клавиатура и приложение с точки зрения того, кто создает пакет в заказ. Я думаю, что эта проблема стоит на Apple. Поверьте мне, я ХОЧУ быть моей ошибкой, но я провел бесчисленные часы с проб и ошибок. нет что я делаю в коде и проверяю с помощью NSLog, в итоге это будет в конечном итоге. Надеюсь, что кто-то найдет волшебную таблетку.: S
Кто-нибудь еще это решил?