App sandbox: как разрешить службе XPC читать файл, открытый Пользователем в Родительском приложении?
у меня есть простое приложение для предварительного просмотра изображений Cocoa. Пользователь выбирает файл с помощью NSOpenPanel
и приложение генерирует изображение предварительного просмотра с помощью Quick Look API.
Я хотел бы переместить генерацию предварительного просмотра в отдельную службу XPC. Без приложения sandboxing все работает нормально, но после включения приложения sandboxing для родительского приложения и службы XPC,службе XPC отказано в доступе к выбранному пользователем файлу.
родительское приложение разрешено читать файл (поскольку он был выбран через NSOpenPanel).
Как перенести разрешения "чтение файла" для выбранного пользователем файла из родительского приложения в процесс XPC, чтобы процесс XPC мог прочитать файл для создания предварительного просмотра?
моя служба XPC запрашивает доступ для чтения файлов через свои права, и я добавил следующий ключ к информации о службе XPC.плист, но это не помогло:
JoinExistingSession = YES
1 ответов
Я не уверен на 100%, но я думаю, что Apple рекомендует передав NSFileHandle
к процессу XPC в этом случае. Таким образом, процесс XPC может получить доступ к содержимому файла, но не должен знать URL-адрес файла.
изменить: эта тема на форумах разработчиков Apple полезно. Рекомендуется создать обычную (не связанную с безопасностью) закладку для URL-адреса файла. Затем эта закладка может быть передана процессу XPC и доступна ему.