2016-02-12 111 views
0

我们有一个用Mono编写的应用程序,需要与Finder Sync App扩展进行通信。FinderSync在El Capitan上失效

所有工作正常,直到我们在El Capitan而不是在优胜美地上尝试我们的应用程序。

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

共享SQLite数据库是沙盒ENV,所以我们已经在我们的权利com.apple.security.temporary-exception.files.home-relative-path.read-write

如果我们移除应用程序扩展这个例外,扩建工程(但显然我们不能阅读我们的推杆的excepention之外db)

然后我们把SQLite数据库放入内存,但共享内存数据库不可能通过多个进程。

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

我们可以在所有的信息的应用程序扩展发送,但随后即必须保持它在内存中(最好是在一个SQLite,因为我们需要做一些查询。)

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

回答

1

试着看看The Application Group Container Directory它可能会在你的情况。基本上它允许你有应用程序/扩展之间的共享文件夹。

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

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

+0

谢谢,我现在有一个文件夹,但由于某种原因SQLite不允许在那里创建文件。我可以使用NSFileManager创建文件 – Frederiek

+0

它通过为SQLite创建一个零字节来处理。 – Frederiek