Я хочу использовать setxattr / getxattr из расширения Finder Sync на OSX 10.12.6, но вызовы не выполняются с errno == 1, который является EPERM. Расширения синхронизации Finder запускаются в песочнице, поэтому я думаю, мне нужно запросить разрешения. Никакого количества поиска в Google и просмотра документации пока не обнаружено.
Файлы, к которым я хочу получить доступ, принадлежат мне, и установка атрибутов с помощью утилиты командной строки xattr завершается успешно и дает ожидаемый результат.
Таким образом, вопрос заключается в следующем: какие разрешения / разрешения мне нужно предоставить для песочницы, или это вообще возможно?
Я хочу сохранить состояние синхронизации в расширенных атрибутах (очистить, изменить, синхронизировать) и выбрать правильный значок для requestBadgeIdentifierForURL на основании этого. Процесс без песочницы с более низким приоритетом обрабатывает файлы и обновляет атрибуты.
Альтернативой может быть использование отдельной базы данных для хранения состояния синхронизации, и я собираюсь использовать это, если xattr не сработает.
Редактировать: Добавлен файл прав
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<true/>
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>
Исходный файл разрешений, который поставляется с образцом, просто
<key>com.apple.security.files.user-selected.read-only</key>
который тоже не работал.
Я добавил тестовый проект в GitHub https://github.com/JensRestemeier/SyncExtensionTest