Записывать в базу данных, хранящуюся в контейнере группы приложений из расширения
У меня есть база данных sqlite, хранящаяся в контейнере группы приложений, чтобы зарегистрировать пользовательский ярлык.
Я могу читать/записывать в него из приложения, но не с расширения клавиатуры.
Кажется, что база данных находится в режиме только для чтения из расширений.
Я использую следующий код для доступа к нему:
let appGroupDirectoryPath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(appGroupId)
let dataBaseURL = appGroupDirectoryPath!.URLByAppendingPathComponent("database.sqlite")
Есть ли способ обхода, который можно записать в базу данных с клавиатуры расширения, или это невозможно?
База данных доступна для записи из симулятора, но не с реальными устройствами. Я предполагаю, потому что разрешения управляются по-разному на MacOS X и iOS.
Ответы
Ответ 1
Выяснил это.
Для клавиатур в файле Info.plist
есть свойство RequestsOpenAccess. Вы можете включить это, чтобы включить доступ для записи в общий контейнер.
Однако конечный пользователь должен будет включить "полный доступ" в своих настройках для этой клавиатуры, и им будет предложено страшное сообщение о том, как вы могли записывать свои нажатия клавиш.
Вот статья Apple, которая объясняет это:
Проектирование для пользовательского треста для пользовательской клавиатуры