我有一个简单的Cocoa图像预览应用程序。用户使用NSOpenPanel
选择文件,应用程序使用Quick Look API生成预览图像。
我想将预览生成移动到单独的XPC服务中。没有应用程序沙箱,一切正常,但在为父应用程序和XPC服务启用应用程序沙箱后, XPC服务被拒绝对用户选择的文件进行读取访问。
允许父应用程序读取文件(因为它是通过NSOpenPanel选择的)。
如何传输"文件读取"用户选择的文件从父应用程序到XPC进程的权限,以便XPC进程可以读取文件以生成预览?
我的XPC服务通过其权利请求文件读取访问权限,我将以下密钥添加到XPC服务Info.plist中,但这没有帮助:
JoinExistingSession = YES
答案 0 :(得分:10)
我不是100%肯定,但我认为Apple建议在这种情况下将NSFileHandle
传递给XPC进程。这样,XPC进程可以访问文件的内容,但不需要知道文件的URL。
修改:This thread in the Apple Developer Forums很有帮助。建议为文件的URL创建一个普通(非安全范围)书签。然后可以将此书签传递给XPC进程并由其访问。