Разработка для тестовой среды приложения

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

Шесть шагов для принятия тестовой среды приложения

Поток операций для преобразования приложения OS X для работы в песочнице обычно состоит из выполняющего шести шагов:

  1. Определите, подходит ли Ваше приложение для игры в песочнице.

  2. Разработайте стратегию разработки и распределения.

  3. Разрешите несовместимости API.

  4. Примените права Тестовой среды приложения, в которых Вы нуждаетесь.

  5. Добавьте разделение полномочия с помощью XPC.

  6. Реализуйте стратегию миграции.

Определите, подходит ли Ваше приложение для игры в песочнице

Большинство приложений OS X полностью совместимо с Тестовой средой приложения. При необходимости в поведении в приложении, что Тестовая среда приложения не позволяет, рассматривает альтернативный подход. Например, если Ваше приложение зависит от трудно кодированных путей к расположениям в корневом каталоге пользователя, рассмотрите преимущества использования Какао и Базовой Основы новаторский APIs, использующий контейнер песочницы вместо этого.

Если Вы принимаете решение не поиграть в песочнице свое приложение теперь, или если Вы решаете необходимость в праве временного исключения используйте систему отчетности ошибки Apple для уведомления Apple, что не работает на Вас. Apple рассматривает запросы новых функций, поскольку он разрабатывает платформу OS X. Кроме того, если Вы запрашиваете временное исключение, несомненно, будут использовать поле Review Notes в Подключении iTunes для объяснения, почему необходимо исключение.

Следующие способы поведения приложения являются несовместимыми с Тестовой средой приложения:

Разрешите несовместимости API

Если Вы используете OS X APIs способами, не предназначенными, или способами, представляющими пользовательские данные для атаки, можно встретиться с несовместимостями с Тестовой средой приложения. Этот раздел обеспечивает некоторые примеры проекта приложения, которые являются несовместимыми с Тестовой средой приложения, и предлагает то, что можно сделать вместо этого.

Открытие, сохраняя и отслеживая документы

Если Вы управляете документами с помощью какой-либо технологии кроме NSDocument класс, необходимо преобразовать в использование этого класса для получения преимуществ от его встроенной поддержки Тестовой среды приложения. NSDocument класс автоматически работает с Блоком питания. NSDocument также предоставляет поддержку для хранения документов в Вашей песочнице, если пользователь перемещает их использующий Средство поиска.

Помните что путь наследования NSOpenPanel и NSSavePanel когда Ваше приложение поигралось в песочнице, классы отличаются. Посмотрите Открытый и Сохраните Диалоговое Поведение с Тестовой средой приложения.

Если Вы не используете NSDocument класс для управления документами приложения можно обработать собственную поддержку файловой системы Тестовой среды приложения при помощи NSFileCoordinator класс и NSFilePresenter протокол, но это требует большой дополнительной работы.

Сдерживающий доступ к ресурсам файловой системы

Если Ваше приложение зависит от персистентного доступа к ресурсам файловой системы за пределами контейнера Вашего приложения, необходимо принять ограниченные по объему безопасностью закладки, как описано в Ограниченных по объему безопасностью Закладках и Персистентном Доступе Ресурса.

Создание элемента входа в систему для приложения

Для создания элемента входа в систему для поигравшего в песочнице приложения используйте SMLoginItemSetEnabled функция (объявленный в ServiceManagement/SMLoginItem.h) как описано в Добавляющих Элементах Входа в систему Используя Платформу управления службами.

(С Тестовой средой приложения Вы не можете создать элемент входа в систему с помощью функций в LSSharedFileList.h заголовочный файл. Например, Вы не можете использовать функцию LSSharedFileListInsertItemURL. И при этом Вы не можете управлять состоянием, запускают услуги, такой как при помощи функции LSRegisterURL.)

Данные зарегистрированного пользователя

Большая часть OS X новаторские обратные тракты APIs относительно контейнера вместо относительно корневого каталога пользователя. Если Ваше приложение перед игрой в песочнице его, расположения доступов в фактическом корневом каталоге пользователя (~) и Вы используете Какао или Базовую Основу APIs, тогда, после того, как Вы позволяете играть в песочнице, Ваш новаторский код автоматически использует контейнер Вашего приложения вместо этого.

Для первого запуска Вашего поигравшего в песочнице приложения OS X автоматически перемещает основной предпочтительный файл Вашего приложения. Если Ваше приложение использует дополнительные файлы поддержки, выполните разовую миграцию тех файлов к контейнеру, как описано в Миграции Приложения к Песочнице.

Если Вы используете функцию POSIX такой как getpwuid получить путь к фактическому корневому каталогу пользователя от служб каталогов (а не при помощи HOME переменная окружения), считайте вместо этого использование Какао или Базового символа Основы таким как NSHomeDirectory функция. При помощи Какао или Базовой Основы, Вы поддерживаете ограничение Тестовой среды приложения против прямого доступа к корневому каталогу пользователя.

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

Доступ к предпочтениям других приложений

Поскольку Тестовая среда приложения предписывает, чтобы новаторский APIs к контейнеру для Вашего приложения, читая или пишущий в предпочтения пользователя имел место в контейнере. Предпочтения других поигравших в песочнице приложений недоступны. Предпочтения не поигравшихся в песочнице приложений помещаются в ~/Library/Preferences каталог, который также недоступен Вашему поигравшему в песочнице приложению.

Если Ваше приложение требует доступа к предпочтениям другого приложения для функционирования — например, если это требует доступа к спискам воспроизведения, которые пользователь определил для iTunes — сообщает Apple о потребностях с помощью системы отчетности ошибки Apple. Кроме того, обязательно следуйте, руководство относительно прав обеспечило на веб-сайте Подключения iTunes.

Используя HTML5 встроенное видео в веб-представлениях

Если Вы компилируете приложение, использующее платформу WebKit, и Ваша цель является OS X v10.7, необходимо также соединить приложение против платформы Основы AV. Если Вы не сделаете так из-за способа, которым Тестовая среда приложения взаимодействует с CoreMedia, то Ваше приложение будет неспособно играть, HTML5 встроил видео.

Этот дополнительный шаг соединения не требуется для приложений, работающих только на OS X v10.8 и позже.

Примените права тестовой среды приложения, в которых Вы нуждаетесь

Для принятия Тестовой среды приложения для цели в проекте XCode применяйтесь <true/> оцените com.apple.security.app-sandbox entitlement ключ для той цели. Сделайте это в XCode предназначается для редактора путем установки флажка Enable App Sandboxing.

Примените другие права по мере необходимости. Для полного списка обратитесь к Дающей право Ключевой Ссылке.

Вот основной поток операций для использования для определения, в каких правах Вы нуждаетесь:

  1. Выполните свое приложение и осуществите его функции.

  2. В Консольном приложении (доступный в /Applications/Utilities/), ищите sandboxd нарушения во Всей системе сообщений регистрируют запрос.

    Каждое такое нарушение указывает, что Ваше приложение попыталось сделать что-то не позволенное Вашей песочницей.

    Вот что a sandboxd нарушение похоже в Консоли:

    ../Art/sandbox_errors.png../Art/sandbox_errors.png

    Щелкните по значку скрепки направо от сообщения нарушения для просмотра следа, показывающего то, что привело к нарушению.

  3. Для каждого sandboxd нарушение, которое Вы находите, определяют, как разрешить проблему. В тех же случаях простое изменение в Вашем приложении, таких как использование Вашего Контейнера вместо других местоположений файловой системы, решает проблему. В других случаях применяя право Тестовой среды приложения с помощью цели XCode редактор является лучшим выбором.

  4. Используя XCode предназначаются для редактора, включают право, что Вы думаете, разрешит нарушение.

  5. Выполните приложение и осуществите его функции снова.

    Любой подтверждает, что Вы решили sandboxd нарушение, или занимаются расследованиями далее.

Если Вы принимаете решение не поиграть в песочнице свое приложение теперь или использовать право временного исключения, используйте систему отчетности ошибки Apple для уведомления Apple о проблеме, с которой Вы встречаетесь. Apple рассматривает запросы новых функций, поскольку он разрабатывает платформу OS X. Кроме того, убедитесь использование поле Review Notes в Подключении iTunes для объяснения, почему необходимо исключение.

Добавьте разделение полномочия Используя XPC

При разработке для Тестовой среды приложения смотрите способы поведения приложения с точки зрения полномочий и доступа. Рассмотрите потенциальные выгоды для безопасности и устойчивости разделения высокорисковых операций в их собственные службы XPC.

Когда Вы решаете, что функция должна быть помещена в службу XPC, сделайте так путем обращения к Creating XPC Services в Руководстве по программированию Демонов и Служб.

Реализуйте стратегию миграции

Гарантируйте, чтобы клиенты, в настоящее время использующие версию перед песочницей Вашего приложения, испытали безболезненное обновление, когда они устанавливают поигравшую в песочнице версию. Для получения дополнительной информации о том, как реализовать контейнерную декларацию миграции, считайте Миграцию Приложения в Песочницу.