11

我有一个简单的 Cocoa 图像预览应用程序。用户使用 选择文件NSOpenPanel,应用程序使用 Quick Look API 生成预览图像。

我想将预览生成移到单独的 XPC 服务中。如果没有应用沙盒,一切正常,但在为父应用和 XPC 服务启用应用沙盒后,XPC 服务被拒绝读取用户选择的文件

允许父应用读取文件(因为它是通过 NSOpenPanel 选择的)。

如何将用户选择的文件的“文件读取”权限从父应用程序转移到XPC进程,以便XPC进程可以读取文件以生成预览?

我的 XPC 服务通过其权利请求文件读取访问,我将以下密钥添加到 XPC 服务 Info.plist,但这没有帮助:

JoinExistingSession = YES
4

1 回答 1

11

我不是 100% 确定,但我认为 Apple 建议NSFileHandle在这种情况下将一个传递给 XPC 进程。这样,XPC 进程可以访问文件的内容,但不需要知道文件的 URL。

编辑:Apple Developer Forums 中的这个帖子很有帮助。建议为文件的 URL 创建一个普通(非安全范围)书签。然后可以将此书签传递给 XPC 进程并由它访问。

于 2012-07-06T11:12:45.420 回答