Обмен данными с использованием групп приложений работает на симуляторе, но не на устройстве
Я разработал одностраничное приложение и расширение клавиатуры, и я хочу отправлять данные из расширений клавиатуры в свое приложение. Я создал группу приложений и добавил ее к обеим целям; файлы полномочий расположены в каждой целевой папке.
В симуляторе работает нормально; но когда я запускаю его на своем устройстве, я не могу получить доступ к данным, сохраненным расширением. Интересно, что я могу получить доступ к данным о расширении, сохраненным приложением.
При запуске моего приложения и расширения на симуляторе я не получаю предупреждений / ошибок, но при запуске на устройстве я получаю следующее предупреждение при записи данных в общий контейнер:
2020-11-05 12:19:14.542150-0600 TestKeyboard[2887:46080] [User Defaults] Couldn't write values for keys (
"test_key2"
) in CFPrefsPlistSource<0x282052000> (Domain: DOMAIN_NAME, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
На других форумах я видел, что иногда эти сообщения появляются, но значения все еще хранятся в общем контейнере, но это не мой случай.
Не уверен, что эта информация поможет, но у меня нет платной подписки разработчика Apple.
Я запускаю этот код на iPhone 8 Plus, iOS 13.6. XCode версии 12.1.
Спасибо.
1 ответ
Как указал @EmilioPelaez, расширению клавиатуры требуется полный доступ, чтобы группы приложений могли работать. Это работало в симуляторе, потому что расширения клавиатуры в симуляторах всегда имеют полный доступ.
Чтобы предоставить полный доступ к расширению клавиатуры, установите для параметра RequestsFullAccess значение True в списке расширений NSExtension -> NSExtensionAttributes.