FinderSync 在 El Capitan 上失效

FinderSync invalidated on El Capitan

我们有一个用 Mono 编写的应用程序,需要与 Finder Sync App 扩展进行通信。

一切正常,直到我们在 El Capitan 而不是 Yosemite 上试用了我们的应用程序。

我们使用共享的 SQLite 数据库来判断哪些路径处于哪种状态,并使用 NSDistributedNotificationCenter 进行两者之间的通信。

共享的 SQLite 数据库在沙盒环境之外,因此我们在我们的权利中加入了一个例外 com.apple.security.temporary-exception.files.home-relative-path.read-write

如果我们从应用程序扩展中删除这个异常,扩展就可以工作(但显然我们无法读取我们的数据库)

然后我们尝试将 SQLite 数据库放入内存,但共享内存数据库不可能在多个进程中使用。

我找不到如何为 Sqlite 连接创建 NSFileHandle

我们可以将所有信息发送到应用程序扩展,但是必须将其保存在内存中(最好是在 SQLite 中,因为我们需要进行一些查询。)

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

尝试查看 The Application Group Container Directory 它可能适合您的情况。基本上它允许您在 apps/extension 之间共享文件夹。

App group container directories. A sandboxed app can specify an entitlement that gives it access to one or more app group container directories, each of which is shared among all apps with that entitlement.

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