我们有一个用Mono编写的应用程序,需要与Finder扩展进行通信。
一切都很好,直到我们在El Capitan而不是Yosemite上试用了我们的应用程序。
我们使用共享的SQLite数据库来判断哪些路径处于哪种状态,并使用NSDistributedNotificationCenter在两者之间进行通信。
共享SQLite数据库位于沙箱式env之外,因此我们在应享权利com.apple.security.temporary-exception.files.home-relative-path.read-write中设置了一个例外。
如果我们从应用程序扩展中删除这个异常,扩展就能工作(但是很明显,我们不能读取db)
然后我们讨论将SQLite DB放入内存中,但是共享内存数据库在多个进程中是不可能的。
我无法找到如何为Sqlite连接创建一个NSFileHandle。
我们可以将所有信息发送给应用程序扩展,但是必须将其保存在内存中(最好是在SQLite中,因为我们需要进行一些查询)。
有人知道我们能做些什么吗?
发布于 2016-02-15 09:16:05
试着在应用程序组容器目录中查看它在您的情况下可能会做的事情。基本上,它允许您在应用程序/扩展之间共享文件夹。
App组容器目录。沙箱应用程序可以指定一个权限,允许它访问一个或多个应用程序组容器目录,每个目录在所有具有该权限的应用程序之间共享。
在对类似问题进行了一些研究之后,我发现在主应用程序中使用简单的TCP服务器来响应文件状态的扩展名要容易得多。通过这种方式,您可以轻松地将文件状态更改广播到所有扩展实例等。
https://stackoverflow.com/questions/35364770
复制相似问题