Приложение Sanboxed, включать файлы по ссылке?

Итак, у меня есть изолированное приложение, которое позволяет пользователям перетаскивать файлы из Finder в окно проекта. Я хотел бы использовать эти файлы из их существующего местоположения, то есть по ссылке, а не копировать их в папку проекта, поскольку у пользователя может быть большая существующая библиотека файлов.

Во время работы приложения эти файлы полностью доступны для чтения. (Они в формате .mp4, и я могу просмотреть их в представлении AVPlayer).

Когда я сохраняю проект приложения, я включаю NSURL файлов. Когда приложение перезапускается и позже повторно открывает проект, файлы становятся недоступными, а в консоли отображается сообщение deny(1) file-read-data, что означает, что файл недоступен для восстановления. (Доступ запрещен).

Предположительно, это связано с тем, что файлы находятся за пределами песочницы. Тем не менее, они были читабельными, когда были помещены в приложение. Мне кажется, что приложение видит их как «выбранные пользователем» при первом включении, и поэтому они доступны для чтения, но в следующем сеансе, поскольку они загружаются из NSCoder как NSURL, они не считаются выбранными пользователем и поэтому становятся недоступными!

Мое приложение в настоящее время имеет следующие права: com.apple.security.files.user-selected.read-only com.apple.security.files.user-selected.read-write

Есть ли что-то, что мне нужно сделать с правами и т. д., чтобы разрешить повторную загрузку файлов позже?


person Kenny    schedule 04.12.2019    source источник


Ответы (1)


При первом удалении файла вам необходимо создать и сохранить закладку безопасности, которую вы сможете использовать при последующем запуске приложения для восстановления доступа к файлу. Прочтите Закладки с областью безопасности и постоянный доступ к ресурсам в Подробности о песочнице приложений Apple.

person CRD    schedule 04.12.2019