0

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

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

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

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

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

然后我们将 SQLite DB 放入内存中,但是共享内存数据库在多个进程上是不可能的。

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

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

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

4

1 回答 1

1

尝试查看它可能在您的情况下执行的应用程序组容器目录。基本上,它允许您在应用程序/扩展程序之间拥有共享文件夹。

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

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

于 2016-02-15T09:16:05.857 回答