Запись в базу данных, хранящуюся в контейнере группы приложений, из расширения

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

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

Я использую следующий код для доступа к нему:

let appGroupDirectoryPath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(appGroupId)
let dataBaseURL = appGroupDirectoryPath!.URLByAppendingPathComponent("database.sqlite")

Есть ли обходной путь, позволяющий писать в базу данных с дополнительной клавиатуры, или это вообще невозможно?

База данных доступна для записи из симулятора, но не для реальных устройств. Я предполагаю, что это потому, что разрешения управляются по-разному в MacOS X и iOS.


person Matthew    schedule 02.05.2015    source источник


Ответы (1)


Догадаться.

Для клавиатур в файле Info.plist есть свойство RequestsOpenAccess. Вы можете включить эту функцию, чтобы разрешить доступ на запись к общему контейнеру.

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

Вот статья Apple, которая объясняет это:

Проектирование пользовательского доверия для пользовательской клавиатуры

person Chase    schedule 22.05.2015