diff options
Diffstat (limited to 'docs/html-intl/intl/ru/design/patterns/notifications.jd')
-rw-r--r-- | docs/html-intl/intl/ru/design/patterns/notifications.jd | 872 |
1 files changed, 872 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ru/design/patterns/notifications.jd b/docs/html-intl/intl/ru/design/patterns/notifications.jd new file mode 100644 index 0000000..db46ad5 --- /dev/null +++ b/docs/html-intl/intl/ru/design/patterns/notifications.jd @@ -0,0 +1,872 @@ +page.title=Уведомления +page.tags="notifications","design","L" +@jd:body + + <a class="notice-developers" href="{@docRoot}training/notify-user/index.html"> + <div> + <h3>Документация для разработчиков</h3> + <p>Уведомление пользователя</p> + </div> +</a> + +<a class="notice-designers" href="notifications_k.html"> + <div> + <h3>Уведомления в Android версии 4.4 и ниже</h3> + </div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY"> +<div> + <h3>Видеоролик</h3> + <p>DevBytes: Уведомления в Android L Developer Preview</p> +</div> +</a> + +<style> + .col-5, .col-6, .col-7 { + margin-left:0px; + } +</style> + +<p>Уведомления позволяют извещать пользователя о релевантных и +периодически возникающих +событиях в приложении, таких как новые сообщения в чате или события в календаре. +Систему уведомлений можно рассматривать как канал новостей, извещающий пользователя о важных +событиях по мере +их возникновения, или как журнал, ведущий хронику событий, пока пользователь не обращает на них +внимания, и синхронизируемый должным образом на всех устройствах Android этого пользователя.</p> + +<h4 id="New"><strong>Новые возможности Android 5.0</strong></h4> + +<p>В Android 5.0 уведомления были существенно обновлены структурно, +визуально, и функционально:</p> + +<ul> + <li>был изменен внешний вид уведомлений в соответствии с новой +темой Material Design;</li> + <li> теперь уведомления доступны на экране блокировки, в то время как +конфиденциальная информация по-прежнему + может быть скрыта;</li> + <li>уведомления с высоким приоритетом, полученные при включенном устройстве, теперь имеют новый формат и называются + уведомлениями Heads-up;</li> + <li>уведомления синхронизируются с облаком: если удалить уведомление на одном из устройств +Android, оно будет удалено + и на остальных устройствах.</li> +</ul> + +<p class="note"><strong>Примечание.</strong> Разработка уведомлений в этой версии +Android значительно +отличается от их разработки в предыдущих версиях. Информацию о разработке уведомлений в предыдущих +версиях можно найти в разделе <a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p> + +<h2 id="Anatomy">Структура уведомления</h2> + +<p>В этом разделе описываются основные компоненты уведомления и их +отображение на устройствах различных типов.</p> + +<h3 id="BaseLayout">Базовая компоновка</h3> + +<p>Все уведомления имеют, как минимум, базовую компоновку, которую составляют следующие элементы.</p> + +<ul> + <li> <strong>Значок</strong> уведомления. Значок символизирует +инициирующее приложение. Он также может + указывать на тип уведомления, если приложение генерирует уведомления нескольких +типов.</li> + <li> <strong>Заголовок</strong> уведомления и дополнительный +<strong>текст</strong>.</li> + <li> <strong>Временная метка</strong>.</li> +</ul> + +<p>Уведомления, созданные с помощью {@link android.app.Notification.Builder Notification.Builder} +для предыдущих версий платформы, выглядят и функционируют в Android +5.0 так же, как и прежде, за исключением незначительных стилистических отличий, вносимых +системой. Дополнительную информацию о внешнем виде и функциональности уведомлений в предыдущих версиях +Android можно найти в разделе +<a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p></p> + + + <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" /> + + +<div style="clear:both;margin-top:20px"> + <p class="img-caption"> + Уведомление в базовой компоновке на мобильном устройстве (слева) и то же уведомление на носимом устройстве (справа) + с фотографией пользователя и значком уведомления + </p> + </div> + +<h3 id="ExpandedLayouts">Расширенная компоновка</h3> + + +<p>Разработчик может выбрать степень подробности уведомлений, генерируемых его +приложением. Уведомление может содержать первые +несколько строк сообщения или миниатюру изображения. В качестве дополнительной +информации можно предоставлять пользователю +контекст и, —в некоторых случаях, —давать ему возможность прочитать сообщение +целиком. Чтобы переключаться + между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или +провести пальцем по экрану. + Для уведомлений о единичных событиях Android предоставляет + разработчику приложения три шаблона расширенной компоновки +(текст, входящая почта и изображения). Ниже приведены скриншоты уведомлений о единичных +событиях на мобильных устройствах (слева) + и на носимых устройствах (справа).</p> + +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/stack_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png" + alt="" width="311px" height;="450px" /> + +<h3 id="actions" style="clear:both; margin-top:40px">Действия</h3> + +<p>Android поддерживает дополнительные действия, отображаемые в нижней части +уведомления. +Благодаря этому пользователи могут выполнять операции, типичные для данного +уведомления, непосредственно из него, не открывая +само приложение. +Это ускоряет взаимодействие и, вместе с операцией "провести пальцем, чтобы удалить", позволяет пользователю сосредоточиться на +важных для него уведомлениях.</p> + + + <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" /> + + + +<p style="clear:both">При определении количества действий в уведомлении следует проявлять +благоразумие. Чем больше +действий предоставлено пользователю, тем выше когнитивная сложность приложения. Ограничьтесь +минимальным количеством +действий, предоставив пользователю наиболее важные и +значимые.</p> + +<p>В уведомлениях отдавайте предпочтение действиям</p> + +<ul> + <li> важным, выполняемым наиболее часто и типичным для отображаемого +содержимого; + <li> позволяющим пользователю быстрее решить задачу. +</ul> + +<p>Избегайте действий</p> + +<ul> + <li> неоднозначных; + <li> совпадающих с действиями, выполняемыми для данного уведомления по умолчанию (например, "Прочитать" или +"Открыть"). +</ul> + + + +<p>Следует предоставлять не более трех действий, указав для каждого +значок и название. + Добавление действий в базовую компоновку делает уведомление расширяемым, +даже если + оно не имеет расширенной компоновки. Поскольку действия отображаются только у +расширенных + уведомлений, необходимо, чтобы любое действие, +которое пользователь может выполнить из + уведомления, было доступно и в соответствующем +приложении.</p> + +<h2 style="clear:left">Уведомления heads-up</h2> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" /> + <p class="img-caption"> + Пример уведомления heads-up (входящий телефонный звонок, высокий приоритет), +появляющегося поверх + приложения с эффектом присутствия + </p> +</div> + +<p>Когда поступает уведомление с высоким приоритетом (см. изображение справа), оно в течение короткого времени +отображается +в расширенной компоновке, позволяя выполнить допустимые действия.</p> +<p> Затем уведомление принимает обычный +вид. Если для уведомления установлен высокий, максимальный или полноэкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a> +, оно становится уведомлением heads-up.</p> + +<p><b>Хорошими примерами событий для уведомлений heads-up являются</b></p> + +<ul> + <li> входящий телефонный звонок, во время использования устройства;</li> + <li> сигнал будильника во время использования устройства;</li> + <li> новое SMS-сообщение;</li> + <li> низкий уровень заряда аккумулятора.</li> +</ul> + +<h2 style="clear:both" id="guidelines">Основные рекомендации</h2> + + +<h3 id="MakeItPersonal">Персонализируете уведомление</h3> + +<p>Уведомление о событии, инициированном другим пользователем (например, сообщение или +обновление статуса), должно содержать изображение пользователя, добавленное с помощью +{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Кроме того, в метаданные уведомления необходимо включить информацию о +пользователе (см. {@link android.app.Notification#EXTRA_PEOPLE}).</p> + +<p>Главный значок уведомления будет по-прежнему отображаться, чтобы пользователь мог связать +его со значком +на строке состояния.</p> + + +<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" /> +<p style="margin-top:10px" class="img-caption"> + Уведомление, идентифицирующее пользователя-инициатора, и отображающее отправленное содержимое. +</p> + + +<h3 id="navigate_to_the_right_place">Выполняйте переход в нужное место</h3> + +<p>Когда пользователь касается тела уведомления (за пределами кнопок +с действиями), должен осуществляться переход в то место приложения, +где пользователь сможет просмотреть информацию, о которой извещает уведомление, и действовать в соответствии +с нею. В большинстве случаев там будет находиться подробное представление одного элемента данных, например, сообщения, +но возможно и +сокращенное представление, если накопилось несколько уведомлений. Если приложение переводит +пользователя на какой-либо уровень, отличный от верхнего, реализуйте навигацию в стеке переходов назад в приложении, чтобы +пользователь мог нажать системную кнопку "Назад" и вернуться на верхний уровень. Дополнительную информацию можно найти в разделе +<em>Навигация внутрь приложения с помощью виджетов и уведомлений главного экрана</em> в шаблоне проектирования +<a href="{@docRoot}design/patterns/navigation.html#into-your-app">Навигация</a>.</p> + +<h3 id="correctly_set_and_manage_notification_priority">Правильно выполняйте расстановку приоритетов уведомлений и +управление ими +</h3> + +<p>Android поддерживает флаг приоритета для уведомлений. Это флаг позволяет +влиять на позицию уведомления среди других уведомлений и +гарантировать, +что пользователь в первую очередь увидит самые важные уведомления. При отправке уведомления можно выбрать один +из +следующих уровней приоритета:</p> +<table> + <tr> + <td class="tab0"> +<p><strong>Приоритет</strong></p> +</td> + <td class="tab0"> +<p><strong>Использование</strong></p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MAX</code></p> +</td> + <td class="tab1"> +<p>Применяйте для наиболее важных и неотложных уведомлений, извещающих пользователя +о ситуации, +критичной по времени или такой, на которую необходимо отреагировать, чтобы продолжить +выполнение задачи.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>HIGH</code></p> +</td> + <td class="tab1"> +<p>Применяйте, в основном, для передачи важной информации, например, о сообщениях или событиях +в чате с содержимым, представляющим особый интерес для пользователя. +Уведомления с высоким приоритетом отображаются как уведомления heads-up.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>DEFAULT</code></p> +</td> + <td class="tab1"> +<p>Применяйте для всех уведомлений, не входящих ни в одну из описанных здесь категорий.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>LOW</code></p> +</td> + <td class="tab1"> +<p>Применяйте для уведомлений, которые должны быть переданы пользователю, но +не являются неотложными. Низкоприоритетные уведомления обычно появляются в конце списка, +что позволяет использовать их +для передачи информации, представляющей всеобщий интерес и не имеющей конкретной направленности. Например, если пользователь подписался +на новости, + эта информация не должна иметь преимущество перед неотложными или адресными +сообщениями.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MIN</code></p> +</td> + <td class="tab1"> +<p>Применяйте для уведомлений, с контекстной или фоновой информацией, такой как прогноз погоды, или с информацией, +связанной с местоположением пользователя. +Уведомления с минимальным приоритетом не отображаются в строке состояния. Пользователь +обнаруживает их при раскрытии панели уведомления.</p> +</td> + </tr> +</table> + + +<h4 id="how_to_choose_an_appropriate_priority"><strong>Как выбрать +подходящий +приоритет</strong></h4> + +<p>При выдаче уведомлений с приоритетами <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> существует риск, что деятельность +пользователя будет прервана +в самом разгаре. Чтобы не раздражать пользователей вашего приложения, применяйте приоритеты этих уровней для +уведомлений,</p> + +<ul> + <li> имеющих отношение к другим пользователям;</li> + <li> быстро теряющих актуальность;</li> + <li> способных немедленно повлиять на поведение пользователя в реальном мире.</li> +</ul> + +<p>Уведомления с приоритетом <code>LOW</code> и <code>MIN</code> могут представлять определенную ценность +для пользователя. Значительное количество, если не большинство, уведомлений не требует немедленной +реакции пользователя, но, тем не менее, содержит информацию, которую пользователь сочтет +ценной, когда решит +просмотреть поступившие уведомления. Приоритеты уровней <code>LOW</code> и <code>MIN</code> + следует присваивать уведомлениям,</p> + +<ul> + <li> не имеющим прямого отношения к другим пользователям;</li> + <li> долго не теряющим актуальность;</li> + <li> содержащим информацию, способную заинтересовать пользователя, если он решит +просмотреть их в свободное время.</li> +</ul> + + + <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" /> + + +<h3 style="clear:both" id="set_a_notification_category">Определите категорию +уведомления</h3> + +<p>Если уведомление попадает в одну из заранее определенных категорий (см. +ниже), укажите его +категорию. Процессы системного пользовательского интерфейса, например, панель уведомления (или любой +другой процесс-слушатель +уведомлений) могут воспользоваться этой информацией при классификации и фильтрации уведомлений.</p> +<table> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p> +</td> + <td> +<p>Входящий звонок (голосовой или по видеосвязи) или алогичный запрос синхронной +связи</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p> +</td> + <td> +<p>Входящее личное сообщение (SMS-сообщение, мгновенное сообщение и т. д.)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p> +</td> + <td> +<p>Асинхронное массовое сообщение (по электронной почте)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p> +</td> + <td> +<p>Событие в календаре</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p> +</td> + <td> +<p>Промоакция или реклама</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p> +</td> + <td> +<p>Сигнал будильника или таймера</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p> +</td> + <td> +<p>Информация о ходе выполнения длительной фоновой операции</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p> +</td> + <td> +<p>Новости, поступившие из социальной сети или касающиеся совместного использования ресурсов</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p> +</td> + <td> +<p>Ошибка в фоновой операции или статусе аутентификации</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p> +</td> + <td> +<p>Управление передачей медиаданных для воспроизведения</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p> +</td> + <td> +<p>Обновление статуса системы или устройства. Зарезервировано для использования системой.</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p> +</td> + <td> +<p>Индикация работающей фоновой службы</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p> +</td> + <td> +<p>Конкретная и привязанная ко времени рекомендация относительно одного объекта. Например, приложение +новостей может +порекомендовать пользователю, какую новость читать следующей.</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p> +</td> + <td> +<p>Текущая информация о статусе устройства или контекста</p> +</td> + </tr> +</table> + +<h3 id="summarize_your_notifications">Суммируйте уведомления</h3> + +<p>Если при наличии ожидающего уведомления определенного типа приложение пытается отправить новое +уведомление того же типа, объедините их в одно сводное уведомление от этого приложения. Не +создавайте новый объект.</p> + +<p>Сводное уведомление формирует сводное описание и дает пользователю возможность +понять, сколько +имеется ожидающих уведомлений того или иного типа.</p> + +<div class="col-6"> + +<p><strong>Неправильно</strong></p> + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" /> +</div> + +<div> +<p><strong>Правильно</strong></p> + + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" /> +</div> + +<p style="clear:left; padding-top:30px; padding-bottom:20px">Разработчик может сообщить +подробности об отдельных уведомлениях, образующих + сводное, используя расширенную компоновку для резюме. Такой подход позволит пользователям +лучше разобраться, какие +уведомления ожидают прочтения, и достаточно ли они интересны, чтобы ознакомиться с ними +более подробно в + соответствующем приложении.</p> +<div class="col-6"> + <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" /> + <p class="img-caption"> + Расширенное и сжатое сводное уведомление (с использованием <code>InboxStyle</code>) + </p> +</div> + +<h3 style="clear:both" id="make_notifications_optional">Сделайте уведомления +необязательными</h3> + +<p>В распоряжении пользователей всегда должен быть метод управления уведомлениями. Предоставьте пользователю возможность +отключать уведомления, поступающие от вашего приложения, +или изменять способы оповещения, такие как звуковой сигнал и +вибрация. + С этой целью следует предусмотреть пункт настройки уведомлений в настройках приложения.</p> + +<h3 id="use_distinct_icons">Используйте отчетливые значки</h3> +<p>Беглого взгляда на область уведомлений должно быть достаточно, чтобы распознать +типы +ожидающих уведомлений.</p> + +<div class="figure"> + <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" /> +</div> + + <div><p><strong>Правильно</strong></p> + <p>Рассмотрите уже существующие значки уведомлений от приложений Android и создайте +собственные, + достаточно уникальные.</p> + + <p><strong>Правильно</strong></p> + <p>Придерживайтесь подходящего <a href="/design/style/iconography.html#notification">стиля значков уведомления</a> + для мелких значков, и + <a href="/design/style/iconography.html#action-bar">стиля строки +действий</a> Material Light для значков + действий.</p> +<p ><strong>Правильно</strong></p> +<p >Стремитесь к визуальной простоте значков, избегайте излишних трудноразличимых +деталей.</p> + + <div><p><strong>Неправильно</strong></p> + <p>Применяйте к мелким значкам и значкам действий дополнительные альфа-эффекты +(постепенное появление/исчезание). + К их краям может быть применено сглаживание, но, поскольку в Android эти значки +служат масками (то есть, + используется только альфа-канал), изображение, как правило, должно отображаться полностью +непрозрачным.</p> + +</div> +<p style="clear:both"><strong>Неправильно</strong></p> + +<p>Чтобы ваше приложение отличалось от других, используйте цвет. Значки уведомлений должны +представлять собой изображение белого цвета на прозрачном фоне.</p> + + +<h3 id="pulse_the_notification_led_appropriately">Правильно используйте индикатор +уведомлений</h3> + +<p>На многих устройствах Android имеется светодиодный индикатор уведомлений, +информирующий пользователя о +событиях, когда экран выключен. Уведомления с приоритетом <code>MAX</code>, +<code>HIGH</code> или <code>DEFAULT</code> должны +вызывать свечение индикатора, а уведомления с низким приоритетом (<code>LOW</code> и +<code>MIN</code>) не должны.</p> + +<p>Возможности пользователя управлять уведомлениями должны распространяться на светодиодный индикатор. Когда разработчик использует +DEFAULT_LIGHTS, +индикатор светится белым цветом. Ваши уведомления не должны вызывать свечение другим +цветом, если +пользователь не указал этого явным образом.</p> + +<h2 id="building_notifications_that_users_care_about">Создание уведомлений, + важных для пользователя</h2> + +<p>Чтобы пользователям понравилось ваше приложение, необходимо тщательно +продумать его уведомления. +Уведомления — это голос приложения. Они определяют его +индивидуальность. Ненужные или +несущественные уведомления раздражают пользователя и заставляют его возмущаться тем, как много +внимания требует от него +приложение. Поэтому необходимо применять уведомления взвешенно.</p> + +<h3 id="when_to_display_a_notification">Ситуации, в которых следует показывать уведомления</h3> + +<p>Чтобы создать приложение, от работы с которым пользователи получат удовольствие, необходимо +осознать, что внимание пользователя + является ресурсом, требующим бережного обращения. Система уведомлений +Android была разработана +так, чтобы как можно меньше отвлекать пользователя. +Однако +вы должны отдавать себе отчет в том, что уведомления прерывают +деятельность пользователя. +Планируя уведомления, спрашивайте себя, достаточно ли они важны, чтобы +послужить основанием для такого прерывания. В случае сомнений предоставьте пользователю возможность запросить +в настройках приложения получение уведомления или измените +приоритет уведомления на <code>LOW</code> или <code>MIN</code>, чтобы +не отвлекать пользователя от +текущих занятий.</p> + + <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" /> + <p style="margin-top:10px" class="img-caption"> + Примеры уведомлений, быстро теряющих актуальность + </p> + +<p>Хотя правильно работающие приложения ведут себя неназойливо, бывают ситуации, +заслуживающие того, чтобы приложение по своей инициативе прервало деятельность пользователя уведомлением.</p> + +<p>Отправляйте уведомления только в случае <strong>событий, требующих неотложной реакции</strong>, особенно + если эти синхронные события <strong>имеют прямое отношение к другим пользователям</strong>. Например, +чат + представляет собой форму синхронного общения в реальном времени, — другой пользователь +с нетерпением ожидает вашего ответа. События в календаре являются еще одним хорошим примером ситуации, в которой следует выдать +уведомление и завладеть + вниманием пользователя, потому что в приближающееся календарное событие часто +вовлечены другие люди.</p> + +<h3 style="clear:both" id="when_not_to_display_a_notification">Ситуации, +в которых не следует показывать уведомления</h3> + +<div class="figure" style="margin-top:60px"> + <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" /> +</div> + +<p>В большинстве остальных случаев уведомления неуместны.</p> + +<ul> + <li> Не следует извещать пользователя о событиях, не имеющих отношения +к нему конкретно, или + не теряющих актуальность со временем. Например, асинхронные +и безадресные новости, + циркулирующие в социальных сетях, как правило, не требуют немедленного +привлечения внимания. Пользователям, + действительно интересующимся таким новостями, предоставьте возможность запросить соответствующие уведомления.</li> + <li> Не генерируйте уведомление, если релевантная свежая информация уже находится +на экране. Вместо этого + воспользуйтесь интерфейсом самого приложения, чтобы донести до пользователя новую информацию +непосредственно в контексте. + Например, приложение-чат не должно генерировать системные уведомления, +пока пользователь активно общается с собеседником.</li> + <li> Не отвлекайте пользователя ради низкоуровневых технических действий, такие как сохранение +или синхронизация информации или обновление приложения, если приложение или система способны выполнить задачу +без вмешательства пользователя.</li> + <li> Не отвлекайте пользователя, чтобы проинформировать его об ошибке, если +приложение может восстановиться после нее самостоятельно, не требуя от пользователя +никаких действий.</li> + <li> Не создавайте уведомления, не имеющие осмысленного содержимого и +всего лишь рекламирующие ваше +приложение. Уведомление должно нести полезную, актуальную и новую информацию. Не следует +использовать его + исключительно для презентации приложения.</li> + <li> Не создавайте избыточные уведомления только для того, чтобы продемонстрировать свой бренд +пользователям. + Такие уведомления раздражают и отталкивают аудиторию. Лучший +способ сообщать + новую информацию небольшими порциями и поддерживать связь пользователей +с вашим + приложением заключается в том, чтобы разработать виджет, который они смогут поместить на + главный экран.</li> +</ul> + +<h2 style="clear:left" id="interacting_with_notifications">Взаимодействие с +уведомлениями</h2> + +<p>Уведомления обозначаются значками в строке состояния. Чтобы получить к ним доступ, +следует открыть +панель уведомлений.</p> + +<p>Если коснуться уведомления, откроется соответствующее приложение с подробным содержимым, +связанным с эти уведомлением. +Если провести пальцем по уведомлению влево или вправо, оно будет удалено из панели.</p> + +<h3 id="ongoing_notifications">Постоянные уведомления</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" /> + <p class="img-caption"> + Постоянные уведомления при воспроизведении музыки + </p> +</div> +<p>Постоянные уведомления информируют пользователя о текущих фоновых +процессах. +Например, плееры сообщают через систему уведомлений информацию о дорожке, +воспроизводимой в данный момент, и +это продолжается, пока пользователь не остановит воспроизведение. Кроме того, постоянные уведомления могут +информировать пользователя +о ходе выполнения длительных задач, таких как загрузка файла или кодирование видеоданных. Пользователь не может вручную +удалить постоянное уведомление из панели уведомлений.</p> + +<h3 id="ongoing_notifications">Воспроизведение медиаданных</h3> +<p>В Android 5.0 на экране блокировки не отображаются элементы управления воспроизведением от устаревшего +класса {@link android.media.RemoteControlClient}. Однако на нем <em>отображаются</em> уведомления, так что теперь каждое +уведомление приложения о воспроизведении является для пользователей основным +способом управления воспроизведением в заблокированном состоянии. В результате у приложения появляется больше возможностей +управлять тем, какие +кнопки отображать, и каким образом. При этом с точки зрения пользователя система ведет себя непротиворечиво, +независимо от того, заблокирован ли экран.</p> + +<h3 style="clear:both" +id="dialogs_and_toasts_are_for_feedback_not_notification">Диалоговые окна +и всплывающие уведомления</h3> + +<p>Приложение, не отображаемое на экране, не должно генерировать диалоговое окно или всплывающее +уведомление. Диалоговое окно или всплывающее уведомление + должно появляться исключительно в качестве немедленной реакции на действия пользователя +в приложении. +Более подробные рекомендации по использованию диалоговых окон и всплывающих уведомлений см. в разделе +<a href="/design/patterns/confirming-acknowledging.html">Подтверждение и уведомление</a>.</p> + +<h3>Упорядочение уведомлений по степени важности</h3> + +<p>По своей сути уведомления — это новости, и поэтому они принципиально отображаются в +обратном хронологическом порядке. +При этом обязательно принимается во внимание +<a href="#correctly_set_and_manage_notification_priority">приоритет</a>, установленный приложением.</p> + +<p>Уведомления являются важной составляющей экрана блокировки и отображаются на видном месте +каждый +раз, когда включается дисплей устройства. На экране блокировки мало свободного места, поэтому +исключительно важно +выявлять неотложные или наиболее релевантные уведомления. По этой +причине Android применяет +сложный алгоритм сортировки уведомлений, в котором учитываются</p> + +<ul> + <li> временная метка и приоритет, установленный приложением;</li> + <li> тот факт, что уведомление только что оповестило пользователя звуковым сигналом +или вибрацией (иными словами, + если телефон издает звуки, и пользователь хочет узнать, в чем +дело, то на экране блокировки + должен находиться ответ, понятный с первого взгляда);</li> + <li> пользователи, связанные с уведомлением при помощи {@link android.app.Notification#EXTRA_PEOPLE}, + и, в частности, присутствие их в списке помеченных контактов.</li> +</ul> + +<p>Чтобы воспользоваться преимуществами этой сортировки наилучшим образом, думайте в первую очередь о создании +удобных условий для +пользователя, и не нацеливайтесь на конкретное место в рейтинге.</p> + + <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" /> + + <p class="img-caption" style="margin-top:10px">Уведомления от Gmail имеют +приоритет DEFAULT, поэтому они + обычно оказываются ниже уведомлений от приложений мгновенного обмена сообщениями, таких как Hangouts, но +поднимаются в списке + на некоторое время, когда поступают новые сообщения. + </p> + + +<h3>Уведомления на экране блокировки</h3> + +<p>Поскольку уведомления видны на экране блокировки, защита конфиденциальной информации пользователей приобретает +особо +важное значение. Уведомления нередко содержат частную информацию, и они +не должны быть доступны +каждому, кто взял в руки устройство и включил дисплей.</p> + +<ul> + <li> У устройств, экран блокировки которых защищен (при помощи PIN-кода, графического ключа или пароля), интерфейс имеет + общедоступную и закрытую части. Элементы общедоступного интерфейса отображаются на защищенном экране блокировки и + следовательно, видны всем. Закрытый интерфейс находится "позади" экрана блокировки и + доступен только пользователю, выполнившему вход в устройство.</li> +</ul> + +<h3>Возможности пользователя контролировать информацию, отображаемую на экране блокировки</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" /> + <p class="img-caption"> + Уведомления на экране блокировки с содержимым, отображаемым после того, как пользователь разблокирует устройство. + </p> +</div> + +<p>При настройке защиты экрана блокировки пользователь может предпочесть, + чтобы конфиденциальные данные не отображались на защищенном экране блокировки. В этом случае системный пользовательский интерфейс +учитывает <em>уровень видимости</em> уведомления, чтобы выяснить, какую информацию +можно отображать без риска.</p> +<p> Чтобы установить уровень видимости, вызовите +<code><a +href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code> +и укажите одно из следующих значений:</p> + +<ul> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>. +Содержимое уведомления отображается полностью. + Это значение принимается системой по умолчанию, если уровень видимости не указан.</li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>. +На экране блокировки отображается основная информация о наличии уведомления, включая его +значок и название приложения, отправившего его. Прочие данные уведомления скрыты. +Здесь уместно дать разработчику пару рекомендаций. + <ul> + <li> Если вы хотите реализовать отдельную общедоступную версию уведомления, +которую система будет отображать на экране блокировки, создайте замещающий +объект Notification в поле<code><a +href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>. + + <li> Этот параметр предоставляет приложению возможность создавать "цензурированную" версию +содержимого, достаточно информативную, но скрывающую личную информацию. Рассмотрим в качестве примера приложение для отправки +SMS-сообщений. Его уведомления содержат текст SMS-сообщения и имя и контактный значок отправителя. +Такое уведомление должно иметь атрибут <code>VISIBILITY_PRIVATE</code>, но его версия <code>publicVersion</code> может +содержать полезную информацию, например, "3 новых сообщения", без уточняющих +подробностей. + </ul> + </li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. Отображается минимум информации, +даже без значка уведомления.</li> +</ul> +<h2 style="clear:both" id="notifications_on_android_wear">Уведомления на +Android Wear</h2> + +<p>По умолчанию уведомления и их <em>действия</em> передаются на носимые устройства. +Разработчики могут управлять тем, какие уведомления следует передавать с +телефона на часы, +и наоборот. У разработчиков также есть возможность управлять передачей действий. Если +приложение включает в себя +действия, которые невозможно выполнить одним касанием, нужно либо скрывать их +в уведомлениях, отображаемых на носимом +устройстве, либо обеспечить их привязку к приложению под управлением Android Wear, позволив пользователю +совершать действие +на часах.</p> + +<h4>Передача уведомлений и действий на другое устройство</h4> + +<p>Подключенное устройство, например, телефон, может передавать уведомления на носимое устройство, +чтобы они отображались и на нем. Аналогичным образом можно передавать действия, чтобы пользователь мог реагировать +на уведомления непосредственно на носимом устройстве.</p> + +<p><strong>Передавайте</strong></p> + +<ul> + <li> новые мгновенные сообщения;</li> + <li> действия, выполняемые одним касанием, например, "+1", "Лайк", "Сердечко".</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" /> + +<p><strong>Не передавайте</strong></p> + +<ul> + <li> уведомления о новых подкастах;</li> + <li> действия, соответствующие функциям, недоступным на часах.</li> +</ul> + + + +<p><h4>Уникальные действия, определяемые для носимых устройств</h4></p> + +<p>Некоторые действия можно выполнить только на носимых устройствах, например:</p> + +<ul> + <li> выбор из списка шаблонных ответов, например, "Скоро вернусь"</li> + <li> действие "Открыть на телефоне";</li> + <li> действия "Прокомментировать" или "Ответить", открывающие окно речевого ввода;</li> + <li> действия, запускающие приложения, специфичные для Android Wear.</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" /> |