Поддержка способов поведения распространенного приложения
В течение фазы проектирования создания Вашего приложения необходимо думать о том, как реализовать определенные опции, которые пользователи ожидают в правильно построенных приложениях 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 (перечисленный в Сочетаниях клавиш) и к связанным с доступностью сочетаниям клавиш (перечисленный в Сочетаниях клавиш Доступности). Как правило Вы никогда не должны переопределять зарезервированные сочетания клавиш. В частности необходимо заботиться для не переопределения связанных с доступностью сочетаний клавиш, или приложение не будет доступно для пользователей, включающих полный доступ клавиатуры.
Заключение к этому принципу должно избежать создавать слишком много новых сочетаний клавиш, которые являются определенными для Вашего приложения. Пользователям не придется запомнить новый набор команд клавиатуры для каждого приложения, которое они используют.
Обеспечьте альтернативы для операций перетаскивания. Если Ваше приложение полагается на операции перетаскивания в своем потоке операций, необходимо обеспечить альтернативные способы выполнить те же задачи. Это может не быть просто; фактически, это может потребовать проекта альтернативного интерфейса для приложений, в большой степени зависящих от перетаскивания.
Удостоверьтесь, что всегда существует выход из потока операций Вашего приложения. Это важно для всех пользователей, конечно, но это важно для пользователей вспомогательных технологий. У пользователя, полагающегося на вспомогательное приложение для использования приложение, может быть несколько более узкое представление пользовательского интерфейса приложения. Поэтому особенно важно сделать операции отмены и возвращение той же дорогой простыми.
В дополнение к принципам базовой конструкции необходимо рассмотреть требования определенных нарушений и получающихся конструктивных решений и адаптации, которую можно реализовать. Основная тема этих предложений должна обеспечить как можно больше альтернативных режимов довольных дисплей, так, чтобы пользователи могли найти путь, удовлетворяющий их потребностям лучше всего. Рассмотрите следующие категории нарушений:
Ограниченные возможности зрения. Ограниченные возможности зрения включают слепоту, дальтонизм и плохое зрение. Сделайте свое приложение доступным для вспомогательных приложений, таких как программы экранного доступа. Гарантируйте, что цвет не является единственным источником прибывшей определенной информации в Вашем пользовательском интерфейсе. Предоставьте аудио возможность для всех визуальных индикаторов и обратной связи, а также сжатых описаний изображений и анимированного контента.
Нарушения слуха. При разработке аудиовыхода приложения помните, что некоторые пользователи могут не быть в состоянии услышать звуковые эффекты приложения хорошо или вообще. И, конечно, существуют ситуации, в которых любой пользователь не мог использовать аудиовыход эффективно, такой как в библиотеке. Обеспечение избыточного аудио и визуального вывода может помочь пониманию для пользователей с другими типами нарушений также, такими как познавательные и проблемы с обучаемостью.
Моторные и Познавательные Нарушения. Люди с моторными ограниченными возможностями, возможно, должны использовать альтернативы стандартной мыши и устройствам ввода с клавиатуры. Другие пользователи могут испытать трудности с управлением мелкой моторикой, требуемым дважды щелкнуть мышью или нажать сочетания клавиш на клавиатуре. Пользователям с познавательными или проблемами с обучаемостью, возможно, понадобится дополнительное время, чтобы выполнить задачи или реагировать на предупреждения.
OS X предоставляет поддержку для многих типов нарушений на системном уровне через решения, предлагаемые в Универсальных установках системы Доступа, проиллюстрированных на рисунке 4-1. Кроме того, самое стандартное Какао возражает доступности реализации через NSAccessibility
протокол, обеспечивая разумное поведение по умолчанию в большинстве случаев, приложения Какао, созданные со стандартными объектами, автоматически доступен. В целом необходимо явно реализовать NSAccessibility
методы протокола, только если Вы разделяете одного на подклассы из них, добавляя новое поведение.
NSAccessibility
неофициальный протокол определяет методы, которые классы Какао должны реализовать для предоставления доступа к себе доступными для внешнего вспомогательного приложения. Вспомогательное приложение взаимодействует с Вашим приложением, чтобы позволить людям с ограниченными возможностями использовать Ваше приложение. Например, лицо с ухудшением зрения могло использовать приложение, чтобы преобразовать пункты меню и названия кнопок в речь и затем выполнить действия словесной командой.
Доступный объект описан рядом атрибутов, определяющих характеристики, такие как тип объекта, его значение, его размер и позиция на экране и его место в иерархии доступности. Для некоторых объектов набор атрибутов может включать параметризованные атрибуты. Параметризованные атрибуты ведут себя подобные функции, позволяя Вам передать параметр при запросе значения атрибута.
Для получения дополнительной информации см. Обзор Доступности для OS X.
Обеспечьте пользовательские настройки для настройки
Предпочтения являются настройками, позволяющими пользователям настроить появление или поведение Вашего программного обеспечения. Пользовательская система значений по умолчанию OS X позволяет Вам доступ, и управляйте пользовательскими настройками. Можно использовать систему значений по умолчанию, чтобы обеспечить разумные начальные значения для настроек приложения, а также сохранить и получить собственные предпочтительные выборы пользователя через сеансы. Какао NSUserDefaults
класс обеспечивает программируемый доступ к пользовательской системе значений по умолчанию.
NSUserDefaults
класс обеспечивает удобные методы для доступа к общим типам, таким как плавания, удваивается, целые числа, булевские переменные и URLs. Объект по умолчанию должен быть списком свойств, т.е. экземпляром (или для наборов комбинация экземпляров): NSData
, NSString
, NSNumber
, NSDate
, NSArray
, или NSDictionary
. Если Вы хотите сохранить какой-либо другой тип объекта, необходимо обычно архивировать его для создания экземпляра NSData
.
Пользовательские системные значения по умолчанию групп значений по умолчанию в домены. Два из доменов постоянно сохраняются в пользовательской базе данных значений по умолчанию: домен приложения хранит специфичные для приложения значения по умолчанию, и глобальный домен хранит значения по умолчанию, применимые ко всем приложениям. Кроме того, пользовательская система значений по умолчанию обеспечивает три энергозависимых домена, значения которых длятся только, в то время как существует пользовательский объект значений по умолчанию: домен параметра для набора значений по умолчанию от параметров командной строки, домен языков, содержащий значения по умолчанию для локали, если Вы указаны, и регистрационный домен для «заводских настроек», зарегистрированных приложением.
Ваше приложение использует NSUserDefaults
класс для регистрации предпочтений по умолчанию, и обычно это также обеспечивает пользовательский интерфейс (предпочтительная панель), который позволяет пользователю изменить те предпочтения. Предпочтения сохранены в ~/Library/Preferences/
папка в стандартном XML-свойстве-формата перечисляет файл как ряд пар ключ/значение. Специфичный для приложения предпочтительный список свойств идентифицируется идентификатором пакета приложения.
Для получения дополнительной информации см. Руководство по программированию Предпочтений и Настроек.
Интегрируйте свое приложение с поиском центра внимания
Центр внимания является быстрой технологией поиска по компьютеру, позволяющей пользователям организовывать и искать файлы на основе метаданных. Метаданные являются данными о файле, а не фактическим содержанием, сохраненным в файле. Метаданные могут включать знакомую информацию, такую как автор актива и дата модификации, но это могут также быть ключевые слова или другая информация, которая является пользовательской к определенному активу. Например, файл образа мог бы иметь метаданные, описывающие размерности изображения и цветовую модель.
Разработчики приложений, сохраняющих документы на диск, должны рассмотреть поддержку Центра внимания оказания путем реализации средства импорта метаданных. Средство импорта метаданных Центра внимания является маленьким сменным пакетом, который Вы создаете для извлечения информации из файлов, создаваемых приложением. Средства импорта центра внимания используются сервером Центра внимания для сбора информации о новых и существующих файлах, как проиллюстрировано на рисунке 4-2.
Apple обеспечивает средства импорта для многих стандартных типов файлов, которые система использует, включая RTF, JPEG, Почту, PDF и MP3. Однако при определении пользовательского формата документа необходимо создать средство импорта метаданных для собственного содержания. XCode обеспечивает шаблон для записи плагинов средства импорта Центра внимания. Для получения информации о записи средства импорта Центра внимания см. Руководство по программированию Средства импорта Центра внимания.
Кроме того, можно хотеть обеспечить возможность поиска метаданных в приложении. Какао обеспечивает NSMetadataQuery
класс, позволяющий Вам создать запросы с помощью подмножества NSPredicate
классы и выполняют запросы асинхронно. Для получения информации об обеспечении возможности поиска Центра внимания в Вашем приложении см. Руководство по программированию Поиска Метаданных Файла.
Для получения дополнительной информации о Центре внимания, см. Обзор Центра внимания.
Используйте службы для увеличения полноценности приложения
Службы позволяют пользователю получать доступ к функциональности одного приложения из другого приложения. Приложение, предоставляющее услугу, распространяет операции, которые оно может выполнить на определенном типе данных — например, шифрование текста, оптическое распознавание символов растрового изображения или генерирующийся текст, такой как сообщение дня. Когда пользователь управляет тем определенным типом данных в некотором приложении, пользователь может выбрать надлежащий элемент в меню Services, чтобы воздействовать на текущий выбор данных (или просто вставить новые данные в документ).
См. Руководство по внедрению Служб для получения дополнительной информации.
Оптимизируйте для высокого разрешения
Дисплеи с высокой разрешающей способностью обеспечивают богатый визуальный опыт, позволяя пользователям видеть более резкий текст и больше подробных данных в фотографиях, чем на дисплеях стандартного разрешения. Модель с высокой разрешающей способностью для OS X позволяет Вашему приложению вовлечь абстрактное пространство вызываемого пользователя координатного пространства, не принимая во внимание характеристики заключительного места назначения получения — принтер, экран дисплея, битовый массив, или PDF — и вне зависимости от разрешения дисплея.
OS X предоставляет много поддержки для с высокой разрешающей способностью автоматически. Например, стандартные представления AppKit и средства управления автоматически представляют правильно в любом разрешении, основанное на векторе содержание автоматически использует дополнительные пиксели для рендеринга более резких строк и форм, текстовые дисплеи Какао, более резкие в с высокой разрешающей способностью, и AppKit автоматически, загружает варианты с высокой разрешающей способностью изображений.
Необходимо сделать следующие вещи оптимизировать приложение для с высокой разрешающей способностью:
Обеспечьте должным образом названные версии с высокой разрешающей способностью своих растровых изображений.
Используйте методы загрузки изображения с высокой разрешающей способностью опытные.
Используйте новый APIs то высокое разрешение поддержки.
Эти методы описаны в следующих разделах.
Думайте о точках, не пикселях
OS X относится к размеру экрана в точках, не пикселям. Точка является одним модулем в пространстве пользователя до любых трансформаций на пространстве. Поскольку на дисплее с высокой разрешающей способностью существует четыре экранных пикселя для каждой точки, точки могут быть выражены как значения с плавающей точкой. Значения, которые являются целыми числами в стандартном разрешении, такими как координаты мыши, являются значениями с плавающей точкой на дисплее с высокой разрешающей способностью, допуская большую точность для таких вещей как графическое выравнивание.
Ваше приложение рисует к представлению с помощью точек в пространстве пользователя. Сервер окна составляет композит, операции рисования к внеэкранному буферу вызвали запоминающее устройство. Когда это прибывает время для отображения содержания запоминающего устройства на экране, сервер окна масштабирует содержание соответственно, отображая точки на экранные пиксели. Результат состоит в том, что, если Вы рисуете то же содержание на двух аналогичных устройствах, и у только одного из них есть экран с высокой разрешающей способностью, содержание, кажется, о том же размере на обоих устройствах, как показано на рисунке 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
когда второй экземпляр, работающий при различном пользователе, пытается изменить те же файлы в том каталоге, может столкнуться с проблемами.
Для поддержки быстрого переключения между пользователями существуют определенные инструкции, за которыми необходимо следовать в разработке приложений, большинство которых описывает безопасные способы идентифицировать и совместно использовать системные ресурсы. Сводка этих инструкций следующие:
Включите сеанс информация о ID на имя любого объекта, появляющегося в глобальном пространстве имен, включая имена файлов, области общей памяти, семафоры и именованные каналы.
При тегировании таких специфичных для приложения ресурсов с сеансом ID необходим для различения их от подобных ресурсов, создаваемых приложениями в различном сеансе. Уровень безопасности системы присваивает уникальный идентификатор каждому сеансу входа в систему. Слияние этого ID в файл кэша или временные имена каталогов может предотвратить конфликты пространства имен при создании этих файлов. Посмотрите Быстрое переключение между пользователями Поддержки на информацию о том, как получить сеанс ID.
Не предполагайте, что у Вас есть эксклюзивный доступ к любому ресурсу, особенно порты TCP/IP и устройства.
Не предполагайте, что существует только один экземпляр выполнения службы в расчете на пользователя.
Используйте блокировки уровня файла или уровня диапазона при доступе к файлам.
Примите и обработайте пользовательские уведомления переключателя. См. Пользовательские Уведомления Переключателя для получения дополнительной информации.
Для получения дополнительной информации о пользователе, переключающемся, посмотрите, что Многопользовательская Среда Программирует Темы.
Используйте в своих интересах прикрепление
Прикрепление является настольным приложением, разработанным, чтобы сократить настольную помеху, предоставить пользователям обратную связь о приложении и позволить пользователям переключаться легко между задачами. Можно настроить приложение мозаика Прикрепления путем изменения Значка панелей и добавления элементов к меню, выведенному на экран для приложения, и можно настроить Значок панелей минимизируемого окна.
Значок панелей приложения является, по умолчанию, значком приложения. В то время как Ваше приложение работает, можно изменить или заменить значок по умолчанию другим изображением, указывающим текущее состояние приложения. Например, значок для Почтовых изменений, когда сообщения ожидают, чтобы быть считанными. Значок — красный круг и число в числе — наложены на значок приложения Почты для указания числа непрочитанных сообщений. Число изменяется каждый раз, когда Почта получает больше сообщений.
Когда пользователь удерживает Клавишу CTRL и щелкает по мозаике Dock, меню появляется. Если Ваше приложение не делает ничего для настройки меню, меню мозаики Прикрепления содержит список открытых документов приложения (если таковые имеются), сопровождаемый стандартными элементами меню Сохраняют в Прикреплении, Открытом при Входе в систему, Показывают в Средстве поиска, Скрываются, и Выход. Можно добавить другие пункты меню к меню Dock, или статически путем обеспечения файла пера пользовательского меню, или динамично путем переопределения делегата приложения applicationDockMenu:
метод.
Можно также настроить мозаику прикрепления, когда приложение в настоящее время не работает путем создания плагина мозаики Прикрепления, который может обновить значок мозаики Прикрепления и меню. Например, можно хотеть обновить текст значка, чтобы указать, что новое содержание будет доступно в следующий раз, когда приложение запускается, и можно хотеть настроить меню Dock приложения для контакта с новым содержанием.
Для получения информации объясняя, как настроить Значок панелей и меню Вашего приложения, см. Руководство по программированию Мозаики Прикрепления.