Разработка для тестовой среды приложения
Существует общий, основной поток операций для разработки или преобразования приложения для Тестовой среды приложения. Определенные шаги для взятия для определенного приложения, однако, так же уникальны как приложение. Для создания плана работ для принятия Тестовой среды приложения используйте процесс, обрисованный в общих чертах здесь, вместе с концептуальным пониманием, что Вы имеете из более ранних глав в этом документе.
Шесть шагов для принятия тестовой среды приложения
Поток операций для преобразования приложения OS X для работы в песочнице обычно состоит из выполняющего шести шагов:
Определите, подходит ли Ваше приложение для игры в песочнице.
Разработайте стратегию разработки и распределения.
Разрешите несовместимости API.
Примените права Тестовой среды приложения, в которых Вы нуждаетесь.
Добавьте разделение полномочия с помощью XPC.
Реализуйте стратегию миграции.
Определите, подходит ли Ваше приложение для игры в песочнице
Большинство приложений OS X полностью совместимо с Тестовой средой приложения. При необходимости в поведении в приложении, что Тестовая среда приложения не позволяет, рассматривает альтернативный подход. Например, если Ваше приложение зависит от трудно кодированных путей к расположениям в корневом каталоге пользователя, рассмотрите преимущества использования Какао и Базовой Основы новаторский APIs, использующий контейнер песочницы вместо этого.
Если Вы принимаете решение не поиграть в песочнице свое приложение теперь, или если Вы решаете необходимость в праве временного исключения используйте систему отчетности ошибки Apple для уведомления Apple, что не работает на Вас. Apple рассматривает запросы новых функций, поскольку он разрабатывает платформу OS X. Кроме того, если Вы запрашиваете временное исключение, несомненно, будут использовать поле Review Notes в Подключении iTunes для объяснения, почему необходимо исключение.
Следующие способы поведения приложения являются несовместимыми с Тестовой средой приложения:
Использование служб авторизации
С Тестовой средой приложения Вы не можете выполнить работу с функциями, описанными в Ссылке Authorization Services C.
Использование доступности APIs во вспомогательных приложениях
С Тестовой средой приложения Вы можете и должны включить свое приложение для доступности, как описано в Обзоре Доступности для OS X. Однако Вы не можете поиграть в песочнице вспомогательное приложение, такое как программа экранного доступа, и Вы не можете поиграть в песочнице приложение, управляющее другим приложением.
События Sending Apple к произвольным приложениям
С Тестовой средой приложения можно получить события Apple и реагировать на события Apple, но Вы не можете отправить события Apple в произвольные приложения.
Однако для приложений, в частности предоставляющих группам доступа сценариев, можно отправить надлежащие события Apple в те приложения, если приложение включает целевое право сценариев.
Для других приложений, при помощи права временного исключения, можно включить отправку событий Apple к списку определенных приложений, которые Вы указываете, как описано в Дающей право Ключевой Ссылке.
Наконец, Ваше приложение может использовать подклассы
NSUserScriptTask
класс для выполнения предоставленный пользователями сценарии AppleScript из специального каталога,NSApplicationScriptsDirectory
(~/Library/Application Scripts/
идентификатор подписывания кода/
). Несмотря на то, что Ваше приложение может считать файлы в этом каталоге, оно не может записать файлы в этот каталог; пользователь должен вручную поместить сценарии сюда. Для получения дополнительной информации см. документацию дляNSUserScriptTask
и WWDC 2012: безопасные методы автоматизации в OS X.Отправка словарей пользовательской информации в распределенных уведомлениях другим задачам
С Тестовой средой приложения Вы не можете включать a
userInfo
словарь при регистрации наNSDistributedNotificationCenter
объект для обмена сообщениями других задач. (Можно, как обычно, включать auserInfo
словарь при обмене сообщениями других частей приложения посредством регистрации наNSNotificationCenter
объект.)Загрузка расширений ядра
Загрузка расширений ядра запрещается с Тестовой средой приложения.
Моделирование ввода данных пользователем в Открытом и Сохраняет диалоговые окна
Если Ваше приложение зависит от программно управления Открытым, или Сохраните диалоговые окна, чтобы моделировать или изменить ввод данных пользователем, Ваше приложение является неподходящим для игры в песочнице.
Доступ или установка предпочтений на других приложениях
С Тестовой средой приложения каждое приложение поддерживает свои предпочтения в его контейнере. Обычно, Ваше приложение не имеет никакого доступа к предпочтениям других приложений.
Однако, если Ваше приложение требует доступа к предпочтительным файлам других приложений, существуют права временного исключения, доступные, которые позволяют Вам указывать список именованных предпочтительных доменов, к которым должно получить доступ Ваше приложение. Для получения дополнительной информации посмотрите Дающую право Ключевую Ссылку.
Конфигурирование параметров сети
С Тестовой средой приложения Ваше приложение не может изменить конфигурацию сети системы (ли с платформой Конфигурации системы, платформой CoreWLAN или другим подобным APIs), потому что выполнение так требует прав администратора.
Завершение других приложений
С Тестовой средой приложения Вы не можете использовать
NSRunningApplication
класс для завершения других приложений.
Разрешите несовместимости 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.
Примените другие права по мере необходимости. Для полного списка обратитесь к Дающей право Ключевой Ссылке.
Вот основной поток операций для использования для определения, в каких правах Вы нуждаетесь:
Выполните свое приложение и осуществите его функции.
В Консольном приложении (доступный в
/Applications/Utilities/
), ищитеsandboxd
нарушения во Всей системе сообщений регистрируют запрос.Каждое такое нарушение указывает, что Ваше приложение попыталось сделать что-то не позволенное Вашей песочницей.
Вот что a
sandboxd
нарушение похоже в Консоли:Щелкните по значку скрепки направо от сообщения нарушения для просмотра следа, показывающего то, что привело к нарушению.
Для каждого
sandboxd
нарушение, которое Вы находите, определяют, как разрешить проблему. В тех же случаях простое изменение в Вашем приложении, таких как использование Вашего Контейнера вместо других местоположений файловой системы, решает проблему. В других случаях применяя право Тестовой среды приложения с помощью цели XCode редактор является лучшим выбором.Используя XCode предназначаются для редактора, включают право, что Вы думаете, разрешит нарушение.
Выполните приложение и осуществите его функции снова.
Любой подтверждает, что Вы решили
sandboxd
нарушение, или занимаются расследованиями далее.
Если Вы принимаете решение не поиграть в песочнице свое приложение теперь или использовать право временного исключения, используйте систему отчетности ошибки Apple для уведомления Apple о проблеме, с которой Вы встречаетесь. Apple рассматривает запросы новых функций, поскольку он разрабатывает платформу OS X. Кроме того, убедитесь использование поле Review Notes в Подключении iTunes для объяснения, почему необходимо исключение.
Добавьте разделение полномочия Используя XPC
При разработке для Тестовой среды приложения смотрите способы поведения приложения с точки зрения полномочий и доступа. Рассмотрите потенциальные выгоды для безопасности и устойчивости разделения высокорисковых операций в их собственные службы XPC.
Когда Вы решаете, что функция должна быть помещена в службу XPC, сделайте так путем обращения к Creating XPC Services в Руководстве по программированию Демонов и Служб.
Реализуйте стратегию миграции
Гарантируйте, чтобы клиенты, в настоящее время использующие версию перед песочницей Вашего приложения, испытали безболезненное обновление, когда они устанавливают поигравшую в песочнице версию. Для получения дополнительной информации о том, как реализовать контейнерную декларацию миграции, считайте Миграцию Приложения в Песочницу.