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