2015-05-02 6 views
11

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

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

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

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

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

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

ответ

8

Выяснил это.

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

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

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

Designing for User Trust for Custom Keyboard

 Смежные вопросы

  • Нет связанных вопросов^_^