Поддержка способов поведения распространенного приложения

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

Можно предотвратить автоматический перезапуск приложения

По умолчанию, как часть функции Resume OS X v10.7, приложения, которые были открыты при выходе из системы, повторно запускаются системой, когда пользователь входит в систему снова. Можно предотвратить автоматический перезапуск приложения при входе в систему путем отправки ему a disableRelaunchOnLogin сообщение. Это NSApplication метод постепенно увеличивает счетчик, управляющий повторно запускаемым приложением; если счетчик 0 в то время, когда пользователь выходит из системы, то приложение повторно запускается, когда пользовательские журналы въезжают задним ходом. Счетчик является первоначально нулем, обеспечивая поведение перезапуска по умолчанию.

Ваш может восстановить автоматический перезапуск Вашего приложения путем отправки его enableRelaunchOnLogin сообщение. Это сообщение постепенно уменьшает счетчик перезапуска, таким образом, равное количество disableRelaunchOnLogin и enableRelaunchOnLogin сообщения позволяют повторно запуститься. Оба метода ориентированы на многопотоковое исполнение.

Если Ваше приложение не должно быть повторно запущено, потому что оно запускается через некоторый другой механизм, такой как launchd системный процесс, тогда рекомендуемая практика должна отправить приложение a disableRelaunchOnLogin обменивайтесь сообщениями один раз, и никогда не соединяйте его с enableRelaunchOnLogin сообщение.

Если Ваше приложение не должно быть повторно запущено, потому что оно инициировало перезапуск (например, если это - установщик), то рекомендуемая практика должна отправить ему a disableRelaunchOnLogin обменивайтесь сообщениями сразу, прежде чем Вы попытаетесь инициировать перезапуск и отправить его enableRelaunchOnLogin обменивайтесь сообщениями сразу после. Эта процедура обрабатывает случай, где пользователь отменяет перезапуск; если пользователь более поздние перезапуски по другой причине, то Ваше приложение должно быть повторно запущено.

Создание Вашего доступного приложения включает многим пользователям

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

OS X разработан для размещения вспомогательных технологий и имеет много встроенных функций для помощи людям с ограниченными возможностями. Пользовательский доступ большая часть этой функциональности через область Universal Access Установок системы. Некоторые из этих встроенных технологий используют в своих интересах ту же архитектуру доступности, позволяющую внешним вспомогательным технологиям получать доступ к Вашему приложению. Разработка Вашего приложения с доступностью в памяти не только позволяет Вам достигать более многочисленной группы пользователей, это приводит к лучшему опыту для всех Ваших пользователей.

Как первый шаг в разработке Вашего приложения, убедиться считать Инструкции по Интерфейсу пользователя OS X. Та книга обеспечивает подробные спецификации и методы наиболее успешной практики для разработки и реализации интуитивного, непротиворечивого, и эстетически приятного пользовательского интерфейса, поставляющего превосходным пользователям Macintosh опыта, прибыли для ожидания. Во время процесса проектирования также необходимо знать о взгляде доступности на многие соображения базовой конструкции. Рассмотрите следующие основные связанные с доступностью принципы разработки:

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

OS X предоставляет поддержку для многих типов нарушений на системном уровне через решения, предлагаемые в Универсальных установках системы Доступа, проиллюстрированных на рисунке 4-1. Кроме того, самое стандартное Какао возражает доступности реализации через NSAccessibility протокол, обеспечивая разумное поведение по умолчанию в большинстве случаев, приложения Какао, созданные со стандартными объектами, автоматически доступен. В целом необходимо явно реализовать NSAccessibility методы протокола, только если Вы разделяете одного на подклассы из них, добавляя новое поведение.

Рисунок 4-1  системное предпочтительное диалоговое окно Доступа Universal

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

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

Для получения дополнительной информации см. Обзор Доступности для OS X.

Обеспечьте пользовательские настройки для настройки

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

NSUserDefaults класс обеспечивает удобные методы для доступа к общим типам, таким как плавания, удваивается, целые числа, булевские переменные и URLs. Объект по умолчанию должен быть списком свойств, т.е. экземпляром (или для наборов комбинация экземпляров): NSData, NSString, NSNumber, NSDate, NSArray, или NSDictionary. Если Вы хотите сохранить какой-либо другой тип объекта, необходимо обычно архивировать его для создания экземпляра NSData.

Пользовательские системные значения по умолчанию групп значений по умолчанию в домены. Два из доменов постоянно сохраняются в пользовательской базе данных значений по умолчанию: домен приложения хранит специфичные для приложения значения по умолчанию, и глобальный домен хранит значения по умолчанию, применимые ко всем приложениям. Кроме того, пользовательская система значений по умолчанию обеспечивает три энергозависимых домена, значения которых длятся только, в то время как существует пользовательский объект значений по умолчанию: домен параметра для набора значений по умолчанию от параметров командной строки, домен языков, содержащий значения по умолчанию для локали, если Вы указаны, и регистрационный домен для «заводских настроек», зарегистрированных приложением.

Ваше приложение использует NSUserDefaults класс для регистрации предпочтений по умолчанию, и обычно это также обеспечивает пользовательский интерфейс (предпочтительная панель), который позволяет пользователю изменить те предпочтения. Предпочтения сохранены в ~/Library/Preferences/ папка в стандартном XML-свойстве-формата перечисляет файл как ряд пар ключ/значение. Специфичный для приложения предпочтительный список свойств идентифицируется идентификатором пакета приложения.

Для получения дополнительной информации см. Руководство по программированию Предпочтений и Настроек.

Интегрируйте свое приложение с поиском центра внимания

Центр внимания является быстрой технологией поиска по компьютеру, позволяющей пользователям организовывать и искать файлы на основе метаданных. Метаданные являются данными о файле, а не фактическим содержанием, сохраненным в файле. Метаданные могут включать знакомую информацию, такую как автор актива и дата модификации, но это могут также быть ключевые слова или другая информация, которая является пользовательской к определенному активу. Например, файл образа мог бы иметь метаданные, описывающие размерности изображения и цветовую модель.

Разработчики приложений, сохраняющих документы на диск, должны рассмотреть поддержку Центра внимания оказания путем реализации средства импорта метаданных. Средство импорта метаданных Центра внимания является маленьким сменным пакетом, который Вы создаете для извлечения информации из файлов, создаваемых приложением. Средства импорта центра внимания используются сервером Центра внимания для сбора информации о новых и существующих файлах, как проиллюстрировано на рисунке 4-2.

  Метаданные извлечения Центра внимания рисунка 4-2

Apple обеспечивает средства импорта для многих стандартных типов файлов, которые система использует, включая RTF, JPEG, Почту, PDF и MP3. Однако при определении пользовательского формата документа необходимо создать средство импорта метаданных для собственного содержания. XCode обеспечивает шаблон для записи плагинов средства импорта Центра внимания. Для получения информации о записи средства импорта Центра внимания см. Руководство по программированию Средства импорта Центра внимания.

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

Для получения дополнительной информации о Центре внимания, см. Обзор Центра внимания.

Используйте службы для увеличения полноценности приложения

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

См. Руководство по внедрению Служб для получения дополнительной информации.

Оптимизируйте для высокого разрешения

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

OS X предоставляет много поддержки для с высокой разрешающей способностью автоматически. Например, стандартные представления AppKit и средства управления автоматически представляют правильно в любом разрешении, основанное на векторе содержание автоматически использует дополнительные пиксели для рендеринга более резких строк и форм, текстовые дисплеи Какао, более резкие в с высокой разрешающей способностью, и AppKit автоматически, загружает варианты с высокой разрешающей способностью изображений.

Необходимо сделать следующие вещи оптимизировать приложение для с высокой разрешающей способностью:

Эти методы описаны в следующих разделах.

Думайте о точках, не пикселях

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

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

  Содержание рисунка 4-3 появляется тот же размер в стандартном разрешении и высоком разрешении

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

Обеспечьте версии с высокой разрешающей способностью графики

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

Графика с высокой разрешающей способностью должна масштабироваться с вдвое большим количеством пикселей в каждой размерности для отображения того же размера в пространстве пользователя. Например, при предоставлении изображения стандартного разрешения, измеренного в 50x50 пикселях версия с высокой разрешающей способностью должна быть измерена в 100x100 пикселях.

Для AppKit, чтобы распознать и загрузить версии с высокой разрешающей способностью Вашей графики в подходящее время, необходимо принять соглашение о присвоении имен добавления @2x к названию картинки. Например, изображение стандартного разрешения называют circle.png назвали бы дубликат с высокой разрешающей способностью circle@2x.png. Идеально, Вы можете версии пакета обе версии образа в единственный файл TIFF. Это наиболее легко сделано путем установки Иллюстраций Высокого разрешения Объединения опции Xcode в Yes в настройках сборки Target при развертывании.

Необходимо создать ряд значков для приложения, состоящего из стандарта - и версий с высокой разрешающей способностью каждого размера значков — 16x16, 32x32, 128x128, 256x256, 512x512 добавление @2x к названию картинки значка, условно, указывающему размер значков в точках пространства пользователя. Например, значок называют icon_16x16.png назвали бы дубликат с высокой разрешающей способностью icon_16x16@2x.png, icon_32x32.png размеру назвали бы версию icon_32x32@2x.png, и т.д.

После создания набора значков приложения разместите их в папку именованное icon.iconset. Тогда можно использовать iconutil инструмент командной строки для преобразования Вашего .iconset папка в сингл, готовый к развертыванию, с высокой разрешающей способностью .icns файл.

Используйте методы загрузки изображения с высокой разрешающей способностью опытные

Если Вы следуете @2x соглашение о присвоении имен, существует два метода, доступные, которые загружают стандарт - и версии с высокой разрешающей способностью изображения в NSImage объект, обеспечиваете ли Вы файл образа мультипредставления:

  • NSImage метод imageNamed: считает ресурсы расположенными в основном комплекте приложений, но не в платформах или плагинах.

  • NSBundle метод imageForResource: ищет ресурсы снаружи, а также в основном пакете. Авторы платформы должны использовать этот метод.

Создать NSImage объект от a CGImageRef тип данных, используйте initWithCGImage:size: метод, указывая размер изображения в точках, не пиксели. Для пользовательских курсоров можно передать мультипредставление TIFF NSCursor метод класса initWithImage:hotSpot:.

Используйте APIs то высокое разрешение поддержки

Приложения какао должны заменить, осудил APIs с их более новыми дубликатами. Приложения, использующие более старые технологии, должны заменить те технологии более новыми. NSImage, NSView, NSWindow, и NSScreen классы имеют методы, поддерживающие высокое разрешение, включая методы для преобразования геометрии, обнаружения масштабирования и выравнивания пикселей. Этот APIs и устаревшие (deprecated) технологии, которых необходимо избежать, описаны в Инструкциях по Высокому разрешению для OS X.

Необходимо также рассмотреть, требует ли приложение дальнейших корректировок к специальным сценариям, таким как использование основанных на пикселе технологий (OpenGL, Кварцевые битовые массивы) или пользовательские Базовые Слои анимации. Эти усовершенствованные методы оптимизации описаны в Инструкциях по Высокому разрешению для OS X, также обеспечивающего много более подробной информации о высоком разрешении.

Подготовитесь к быстрому переключению между пользователями

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

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

В то время как быстрое переключение между пользователями является удобной функцией пользователей, оно действительно обеспечивает несколько проблем для разработчиков приложений. Приложения, полагающиеся на эксклюзивный доступ к определенным ресурсам, возможно, должны изменить свое поведение жить в среде быстрого переключения между пользователями. Например, приложение, хранящее временные данные в /tmp когда второй экземпляр, работающий при различном пользователе, пытается изменить те же файлы в том каталоге, может столкнуться с проблемами.

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

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

Используйте в своих интересах прикрепление

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

Значок панелей приложения является, по умолчанию, значком приложения. В то время как Ваше приложение работает, можно изменить или заменить значок по умолчанию другим изображением, указывающим текущее состояние приложения. Например, значок для Почтовых изменений, когда сообщения ожидают, чтобы быть считанными. Значок — красный круг и число в числе — наложены на значок приложения Почты для указания числа непрочитанных сообщений. Число изменяется каждый раз, когда Почта получает больше сообщений.

Когда пользователь удерживает Клавишу CTRL и щелкает по мозаике Dock, меню появляется. Если Ваше приложение не делает ничего для настройки меню, меню мозаики Прикрепления содержит список открытых документов приложения (если таковые имеются), сопровождаемый стандартными элементами меню Сохраняют в Прикреплении, Открытом при Входе в систему, Показывают в Средстве поиска, Скрываются, и Выход. Можно добавить другие пункты меню к меню Dock, или статически путем обеспечения файла пера пользовательского меню, или динамично путем переопределения делегата приложения applicationDockMenu: метод.

Можно также настроить мозаику прикрепления, когда приложение в настоящее время не работает путем создания плагина мозаики Прикрепления, который может обновить значок мозаики Прикрепления и меню. Например, можно хотеть обновить текст значка, чтобы указать, что новое содержание будет доступно в следующий раз, когда приложение запускается, и можно хотеть настроить меню Dock приложения для контакта с новым содержанием.

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