Звук

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

Прочувствуйте Ожидания Пользователей

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

Пользователи ставят свои устройства на бесшумный режим, когда они хотят:

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

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

Переключатель Звонок/Без Звука не заглушает звуки, которые возникают из-за действий пользователя, которые точно и ясно были предприняты для создания звука. Например:

  • Проигрывание медиафайлов в приложениях, созданных для их воспроизведения, не будет беззвучным, так как воспроизведение этих файлов было явно запущено пользователем.
  • Будильник не будет беззвучным, потому что он был явно заведён пользователем.
  • Аудиозапись в приложении для изучения языка не будет беззвучной, потому что пользователь предпринял явное действие, чтобы её услышать.
  • Разговор в приложении аудио-чат не будет беззвучным, потому что пользователь запустил это приложение для конкретной цели — аудио-чата.

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

IPHONE

Когда аудио не воспроизводится, кнопка регулировки громкости, выступает в роли регулятора громкости звонка.

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

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

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

Определите Работу Аудио в Вашем Приложении

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

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

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

Если ваше приложение воспроизводит только звуковые эффекты пользовательского интерфейса, не являющиеся важными для функциональности, используйте Сервисы Звуковой Системы. Сервисы Звуковой Системы — это технология iOS, которая создаёт звуки предупреждений и пользовательского интерфейса, а также запускает вибрацию. Она не подходит ни для какой другой цели. Когда вы используете Сервисы Звуковой Системы для создания звука, вы не можете влиять на то, как ваше аудио будет взаимодействовать с аудио на устройстве, или как оно должно отвечать на прерывания и изменения конфигурации устройства. Чтобы увидеть пример проекта использования этой технологии, см. Audio UI Sounds (SysSound).

Если звук играет важную роль в вашем приложении, используйте Сервисы Аудио Сессии или класс AVAudioSession. Эти программные интерфейсы не производят звук, вместо этого они помогут вам выразить, как ваше аудио должно взаимодействовать с аудио на устройстве и реагировать на прерывания и изменения в конфигурации устройства.

IPHONE

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

В Сервисах Аудио Сессии аудио сессия работает как посредник аудио между вашим приложением и системой. Одним из наиболее важных аспектов аудио сессии является категория, которая определяет работу аудио в вашем приложении.

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

  • Выберите категорию аудио сессии, основанную на семантическом значении, а не на точном наборе функций. Выбрав категорию, цель которой ясна, можно быть уверенным, что ваше приложение будет работать в соответствии с ожиданиями пользователей. Ко всему прочему, это предоставит вашему приложению наилучший шанс качественной работы, если в будущем точный набор функций будет усовершенствован.
  • В редких случаях добавляйте аудио сессии свойство изменять стандартную работу категории. Стандартная работа категории предоставляет то, чего ожидает большинство пользователей, так что вы должны тщательно подумать, прежде чем измените эту работу. Например, вы можете добавить свойство погружения, чтобы убедиться, что ваше аудио громче, чем всё остальное (за исключением аудио звонка), если это то, чего ожидают от вашего приложения пользователи. (Чтобы узнать больше о свойствах аудио сессии см. Fine-Tuning a Category.)
  • Рассмотрите, на чем базируется ваш выбор категории в текущей аудио среде устройства. Это может иметь смысл, если, например, пользователи могут использовать ваше приложение, слушая другое аудио, а не ваш саундтрек. Если вы делаете это, убедитесь, что не заставляете пользователей прекращать прослушивание музыки или делать явный выбор саундтрека при запуске приложения.
  • Как правило, избегайте изменений категорий во время работы вашего приложения. Основная причина изменений категории — это если ваше приложению требуется поддержка записи и воспроизведения в разное время. В таком случае, при необходимости лучше переключиться между категориями Record и Playback, чем выбирать категории Play и Record. Это потому, что выбор категории Record гарантирует, что никакие предупреждения (например, оповещение о входящем текстовом сообщении) не будут звучать, пока идет запись.

Таблица 35-1 отображает список категорий аудиосессий, которые вы можете использовать. Разные категории позволяют приглушить звуки переключателем Звонок/Без Звука (или блокировкой устройства), воспроизводить вместе с другими аудио или воспроизводить их, когда приложение работает в фоновом режиме. (Для получения точных категорий и имён, таких, которые используются в программном интерфейсе, см. Audio Session Programming Guide.)

Таблица 35-1 Категории Аудиосессий и связанные с ними характеристики

Категория Значение Беззвучный Смешанный Фоновый
Индивидуальное Окружение Звуки повышают функциональность приложения и должны приглушать остальное аудио. Да Нет Нет
Окружение Звуки повышают функциональность приложения, но не должны приглушать остальное аудио. Да Да Нет
Воспроизведение Звуки имеют важное значение для функциональности приложения и могут смешиваться с другим аудио. Нет Нет (по умолчанию)

Да (когда добавлено свойство смешивания с остальным)

Да
Запись Аудио записывается пользователем. Нет Нет Да
Воспроизведение и Запись Звуки предоставляют вход и выход, последовательно и одновременно. Нет Нет (по умолчанию)

Да (когда добавлено свойство смешивания с остальным)

Да
Обработка Аудиосигналов Приложение выполняет аппаратную поддержку кодирования аудио (не воспроизведение или запись). Нет данных Нет Да*

* Если вы выбираете категорию аудиообработки и хотите выполнить обработку в фоновом режиме, то вам нужно предотвратить приостановку вашего приложения до того, как закончится обработка. Чтобы узнать, как это сделать, см. Выполнение Долгосрочных Фоновых Задач.

Далее приведено несколько ситуаций, которые демонстрируют, как выбрать категорию аудиосессии, которая предоставит опыт, который оценят пользователи.

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

  • Обратную связь звуков, которые воспроизводятся, если пользователь касается определённых элементов управления
  • Запись слов и фраз, которые воспроизводятся, когда пользователи хотят услышать примеры правильного произношения

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

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

Ситуация 2: Передача голоса по протоколу IP (VoIP) приложения. Вы предоставляете:

  • Способность принимать аудиовход
  • Способность воспроизводить аудио

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

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

Ситуация 3: Игра, позволяющая пользователям вести героя через ряд разных задач. Вы предоставляете:

  • Различные игровые звуковые эффекты
  • Музыкальное сопровождение

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

Лучшая методика — определить, слушают ли пользователи другое аудио, когда запускают ваше приложение. Не предоставляйте пользователям выбор между саундтреком и другим аудио. Вместо этого используйте функцию Сервисов Аудио Сессии AudioSessionGetProperty, чтоfvбы запросить состояние свойства kAudioSessionProperty_OtherAudioIsPlaying. На основании ответа вы сможете выбрать категорию Окружение или Соло (обе категории позволят пользователям играть без звука):

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

Ситуация 4: Приложение, которое обеспечивает точные навигационные инструкции для получения маршрута к месту назначения пользователя в реальном времени. Вы предоставляете:

  • Озвучиваемое направление каждого шага
  • Несколько звуков обратной связи
  • Возможность для пользователей продолжать слушать своё аудио

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

Чтобы позволить людям слушать их аудио во время использования вашего приложения, вы можете добавить свойство kAudioSessionProperty_OverrideCategoryMixWithOthers. Однако, вам также лучше убедиться, что пользователи могут слышать голосовые инструкции поверх воспроизводимого аудио. Чтобы сделать это, вы можете применить к аудио сессии свойство kAudioSessionProperty_OtherMixableAudioShouldDuck, чтобы гарантировать, что ваше аудио громче, чем всё остальное воспроизводимое в текущий момент, за исключением звонка на iPhone. Эти настройки позволяют приложению возобновить аудио сессию во время фоновой работы приложения, что даёт гарантию актуального обновления навигации.

Ситуация 5: Приложение для ведения блога, позволяющее пользователям загружать тексты и изображения на веб-сайт. Вы предоставляете:

  • Короткий звуковой файл запуска
  • Различные короткие звуковые эффекты, сопровождающие действия пользователя (например, звук, который воспроизводится, когда был опубликован пост)
  • Звуковой сигнал, который играет, если загрузка файлов не удаётся

В этом приложении звук улучшает качество пользовательского опыта, но это не является важным. Основная задача приложения никак не связана с аудио, и пользователям не нужно слышать звуки, для успешного использования приложения. В этом случае для воспроизведения звуков вам лучше использовать Сервисы Звуковой Системы. Это потому, что аудио контекст всех звуков приложения соответствует предназначенной цели этой технологии — воспроизводить звуковые эффекты и предупреждения пользовательского интерфейса, которые подчиняются блокировке устройства и переключателю Звук/Без Звука так, как этого ожидают пользователи.

Управление Прерываниями Аудио

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

Чтобы обеспечить использование аудио, которое оценят пользователи, iOS полагается на то, что вы:

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

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

По идее, существует два типа прерываний аудио, основанных на типе аудио, которое осуществляет прерывание, и на ожиданиях пользователей относительно того, как конкретное приложение отреагирует, когда прерывание закончится:

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

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

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

Другие примеры приложений, которые вызывают возобновляемые прерывания — это приложения, которые воспроизводят будильники, голосовые указания (например, направление движения автомобиля) или другие прерывающиеся аудио.

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

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

Рассмотрим пример: пользователь слушает приложение для воспроизведения музыки (музыкальное приложение 1), когда другое приложение воспроизведения музыки (музыкальное приложение 2) прерывает его. В ответ на это пользователь решает послушать музыкальное приложение 2 в течение какого-то промежутка времени. После выхода из музыкального приложения 2 пользователь не ожидает, что музыка приложения 1 автоматически начнет воспроизводиться, потому что музыкальное приложение 2 было преднамеренно выбрано для прослушивания.

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

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

  • Если ваше приложение вызвало возобновляемое прерывание, отключите аудиосессию с помощью метки AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation.
  • Если ваше приложение вызвало не возобновляемое прерывание, отключите ваши аудиосессии без каких-либо меток.

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

Определите, нужно ли возобновлять аудио по окончании прерывания. Основывайте своё решение на опыте использования аудио, которое вы предоставляете в приложении.

  • Если ваше приложение отображает элементы управления воспроизведением медиафайлов, которые нужны пользователям для воспроизведения или остановки аудио, вам нужно проверить метку AVAudioSessionInterruptionFlags_ShouldResume по окончании прерывания аудио.

Если ваше приложение получает сигнал Should Resume (Следует Возобновить), ваше приложение должно:

    • Возобновить воспроизведение аудио, если оно продолжалось до момента прерывания
    • Не возобновлять воспроизведение аудио, если ваше приложение не воспроизводило его до момента прерывания
  • Если ваше приложение не отображает элементы управления воспроизведением медиафайлов, которые нужны пользователям для воспроизведения или остановки аудио, вы должны предусмотреть в вашем приложении возможность всегда возобновлять воспроизведение аудио по окончании прерывания.

Например, игра, воспроизводящая саундтрек, должна возобновлять его воспроизведение после приостановки.

Удалённое Медиауправление в Случае Необходимости

Приложения могут получать удалённое управление, когда люди используют элементы медиауправления iOS или аксессуары управления, такие как элементы управления гарнитуры. Это позволяет вашему приложению принять пользовательский ввод, который не происходит через ваш пользовательский интерфейс, вне зависимости от того, воспроизводит ли ваше приложение аудио на переднем плане или в фоновом режиме.

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

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

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

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

Насколько возможно, используйте элементы управления, предоставленные системой, чтобы обеспечить поддержку AirPlay. Когда вы используете класс MPMoviePlayerController, чтобы обеспечить воспроизведение AirPlay, вы можете воспользоваться преимуществами стандартных элементов управления, которые позволяют пользователям выбрать совместимое с AirPlay устройство, находящееся в пределах досягаемости. Или вы можете использовать класс MPVolumeView, чтобы отобразить совместимые с AirPlay аудио или видео устройства, из которых пользователь может выбрать. Пользователи привыкли к внешнему виду и поведению этих стандартных элементов управления, поэтому они будут знать, как использовать их в вашем приложении.

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

 

Copyright © 2016. iOSManual Все авторские права защищены