从扩展程序写入存储在 App Group 容器中的数据库
Write into a database stored in App Group container from extension
我在 App Group 容器中存储了一个 sqlite 数据库,以便注册自定义快捷方式。
我可以从应用程序 read/write 进入它,但不能从键盘扩展进入。
似乎数据库在扩展中处于只读模式。
我正在使用以下代码访问它:
let appGroupDirectoryPath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(appGroupId)
let dataBaseURL = appGroupDirectoryPath!.URLByAppendingPathComponent("database.sqlite")
是否有解决方法可以从扩展键盘写入数据库,还是完全不可能?
数据库可从模拟器写入,但不能用真实设备写入。我想这是因为 MacOS X 和 iOS.
上的权限管理方式不同
想通了。
对于键盘,Info.plist
文件中有一个名为 RequestsOpenAccess 的 属性。您可以将其打开以启用对共享容器的写访问。
但是,最终用户必须在其设置中为此键盘启用“完全访问权限”,并且系统会提示他们一条关于您如何记录他们的击键的可怕消息。
这是解释它的 Apple 文章:
我在 App Group 容器中存储了一个 sqlite 数据库,以便注册自定义快捷方式。
我可以从应用程序 read/write 进入它,但不能从键盘扩展进入。 似乎数据库在扩展中处于只读模式。
我正在使用以下代码访问它:
let appGroupDirectoryPath = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(appGroupId)
let dataBaseURL = appGroupDirectoryPath!.URLByAppendingPathComponent("database.sqlite")
是否有解决方法可以从扩展键盘写入数据库,还是完全不可能?
数据库可从模拟器写入,但不能用真实设备写入。我想这是因为 MacOS X 和 iOS.
上的权限管理方式不同想通了。
对于键盘,Info.plist
文件中有一个名为 RequestsOpenAccess 的 属性。您可以将其打开以启用对共享容器的写访问。
但是,最终用户必须在其设置中为此键盘启用“完全访问权限”,并且系统会提示他们一条关于您如何记录他们的击键的可怕消息。
这是解释它的 Apple 文章: