summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/ru/design/patterns/notifications.jd
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html-intl/intl/ru/design/patterns/notifications.jd')
-rw-r--r--docs/html-intl/intl/ru/design/patterns/notifications.jd872
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>Разработчик может выбрать степень подробности уведомлений, генерируемых его
+приложением. Уведомление может содержать первые
+несколько строк сообщения или миниатюру изображения. В качестве дополнительной
+информации можно предоставлять пользователю
+контекст и, &mdash;в некоторых случаях, &mdash;давать ему возможность прочитать сообщение
+целиком. Чтобы переключаться
+ между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или
+провести пальцем по экрану.
+ Для уведомлений о единичных событиях 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="" />