Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение проблем с security-scoped bookmarks в sandboxed приложениях macOS, созданных в Delphi XE3

Delphi , Программа и Интерфейс , Заголовок формы

При разработке приложений для macOS с использованием Delphi XE3, разработчики могут столкнуться с различными проблемами, особенно при работе в sandboxed режиме, необходимом для публикации приложения в App Store. Одной из таких проблем является использование security-scoped bookmarks для сохранения доступа к файлам после перезапуска приложения.

Проблема с OpenDialog и переход к drag-drop

В контексте указанной проблемы пользователь столкнулся с тем, что стандартный диалог открытия файлов (OpenDialog) не работает в sandboxed версии приложения. В результате было принято решение использовать функционал перетаскивания папок (drag-drop), который позволяет временно получить доступ к выбранным файлам.

Использование security-scoped bookmarks

Для сохранения доступа к папкам после перезапуска приложения необходимо использовать security-scoped bookmarks. Это механизм, позволяющий приложению сохранять временные привилегии доступа к файлам.

Проблемы с entitlements и созданием bookmark

Разработчик столкнулся с двумя основными проблемами:

  1. Добавление entitlement com.apple.security.files.bookmarks.app-scope в проект FireMonkey, созданный в Delphi XE3, так как этот entitlement не доступен в настройках проекта.
  2. Создание bookmark с использованием метода NSURL.bookmarkDataWithOptions, с неясностью в синтаксисе вызова.

Решение проблемы с entitlements

Решение проблемы с добавлением entitlement заключается в следующем:

  • Необходимо выбрать обычную сборку (Normal release build) в менеджере проектов, а не сборку для App Store.
  • После сборки приложение будет развернуто в PAServer scratch-dir в виде APP пакета.
  • Внутри пакета находится файл Entitlements.plist, который можно отредактировать вручную, используя текстовый редактор.
  • После внесения изменений, приложение нужно вручную подписать и подготовить пакет.

Пример кода на Object Pascal

Для создания bookmark можно использовать следующий пример кода:

var
  URL: TNSURL;
  Err: PNSError;
  Data: TNSData;
begin
  URL := TNSURL.Create(TPath.GetDocumentsPath);
  Data := URL.BookmarkDataWithOptions([NSURLBookmarkCreationWithSecurityScope], nil, Err);
  // Обработка данных bookmark и возможные ошибки
end;

Подтвержденный ответ

Разработчик нашел решение для добавления entitlements вручную и описал процесс. Однако использование функции bookmarkDataWithOptions не было испытано.

Альтернативный ответ

В качестве альтернативного решения можно рассмотреть отключение файла entitlements в настройках развертывания. Однако стоит помнить, что Delphi автоматически активирует этот чекбокс при переключении между сборками.

Заключение

Использование security-scoped bookmarks требует внимательного подхода к настройке entitlements и правильного использования методов для создания bookmark. Разработчикам, работающим с sandboxed приложениями на macOS, следует тщательно изучить документацию Apple и рекомендации по работе с security-scoped bookmarks.

Создано по материалам из источника по ссылке.

В контексте заданной проблемы разработчик сталкивается с необходимостью использования security-scoped bookmarks для сохранения доступа к файлам в sandboxed приложениях macOS, созданных с использованием Delphi XE3, и решает проблемы с добавлением entitlem


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Заголовок формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 10:38:30/0.0061659812927246/0