从扩展名写入存储在App Group容器中的数据库

Mat*_*hew 12 sqlite ios ios-app-group ios-keyboard-extension

我有一个存储在App Group容器中的sqlite数据库,以便注册自定义快捷方式.

我可以从应用程序读取/写入,但不能从键盘扩展名读取/写入.似乎数据库处于扩展的只读模式.

我正在使用以下代码来访问它:

let appGroupDirectoryPath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(appGroupId)
let dataBaseURL = appGroupDirectoryPath!.URLByAppendingPathComponent("database.sqlite")
Run Code Online (Sandbox Code Playgroud)

是否有一种解决方法可以从扩展键盘写入数据库,还是完全不可能?

数据库可以从模拟器写入,但不能与真实设备一起写入.我想这是因为MacOS X和iOS上的权限管理方式不同.

Cha*_*ase 9

弄清楚了.

对于键盘,文件中有一个Info.plist名为RequestsOpenAccess的属性.您可以启用此选项以启用对共享容器的写访问权限.

但是,最终用户必须在其键盘的设置中打开"完全访问权限",并且系统会提示他们如何记录他们的击键.

以下是解释它的Apple文章:

设计自定义键盘的用户信任