我们有一个用Mono编写的应用程序需要与Finder Sync App扩展程序通信。
一切正常,直到我们在El Capitan而不是Yosemite上试用我们的应用程序。
我们使用共享的SQLite数据库来告知哪些路径处于哪种状态,并使用NSDistributedNotificationCenter
进行两者之间的通信。
共享的SQLite数据库位于沙盒环境之外,因此我们在权限com.apple.security.temporary-exception.files.home-relative-path.read-write
如果我们从应用扩展程序中删除此例外,则扩展程序有效(但显然我们无法读取我们的数据库)
然后我们考虑将SQLite DB放入内存,但共享内存数据库在多个进程中是不可能的。
我无法找到如何为Sqlite连接创建NSFileHandle
。
我们可以将所有信息发送到应用程序扩展,但是必须将其保存在内存中(最好是在SQLite中,因为我们需要进行一些查询。)
有没有人对我们能做什么有一些指示?
答案 0 :(得分:1)
尝试查看The Application Group Container Directory它可能会对您的情况有所帮助。基本上它允许您在apps / extension之间拥有共享文件夹。
应用程序组容器目录。沙盒应用程序可以指定一个权利,使其可以访问一个或多个应用程序组容器目录,每个目录都在具有该权利的所有应用程序之间共享。
经过对类似问题的一些研究后,我发现在主应用程序中使用简单的TCP服务器更容易响应具有文件状态的扩展。这样,您可以轻松地将文件状态更改广播到所有扩展实例等。