System-wide event notifications
Алан Дэй (Allan Day)
aday@gnome.org

# Уведомления

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

# Когда использовать

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

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

# Элементы уведомлений

В GNOME 3 в уведомлениях применяются стандартные компоненты:

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

## Заголовки

Заголовок содержит краткое описание события, которое вызвало уведомление. Тело уведомления может отсутствовать, поэтому смысл уведомления должен быть понятен по одному заголовку.

## Действия по умолчанию

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

## Действия уведомлений

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

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

Используйте действия в уведомлениях, когда они действительно необходимы.

Actions should not replace user interface controls elsewhere — it should be possible to take the same actions from your application’s windows.

Необязательно всегда использовать действия в уведомлениях, многим уведомлениях не нужны действия.

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

# Общие рекомендации

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

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

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

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

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

# API reference

GNotification