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

我想将预览生成移到单独的XPC服务中。如果没有应用程序沙箱,一切都可以正常工作,但是在为父应用程序和XPC服务启用应用程序沙箱之后,将拒绝XPC服务对用户所选文件的读取访问权限。

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

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

我的XPC服务通过其权利请求文件读取访问,我在XPC服务Info.plist中添加了以下 key ,但这无济于事:

JoinExistingSession = YES

最佳答案

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

编辑:This thread in the Apple Developer Forums是有帮助的。建议为文件的URL创建一个普通的(非安全范围的)书签。然后可以将此书签传递给XPC进程并由其访问。

10-08 03:23