FinderSync在El Capitan上失效

时间:2016-02-12 14:15:49

标签: sqlite mono findersync

我们有一个用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中,因为我们需要进行一些查询。)

有没有人对我们能做什么有一些指示?

1 个答案:

答案 0 :(得分:1)

尝试查看The Application Group Container Directory它可能会对您的情况有所帮助。基本上它允许您在apps / extension之间拥有共享文件夹。

  

应用程序组容器目录。沙盒应用程序可以指定一个权利,使其可以访问一个或多个应用程序组容器目录,每个目录都在具有该权利的所有应用程序之间共享。

经过对类似问题的一些研究后,我发现在主应用程序中使用简单的TCP服务器更容易响应具有文件状态的扩展。这样,您可以轻松地将文件状态更改广播到所有扩展实例等。