12

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

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

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

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

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

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

4

1 回答 1

11

弄清楚了。

对于键盘,Info.plist文件中有一个名为RequestsOpenAccess的属性。您可以打开它来启用对共享容器的写访问

但是,最终用户必须在他们的设置中为此键盘打开“完全访问权限”,他们将收到一条可怕的消息,提示您如何记录他们的击键。

这是解释它的Apple文章:

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

于 2015-05-22T01:06:52.730 回答