Interactive Notification — это push-уведомление с интерактивными элементами, позволяющее выполнить действие без открытия приложения. По данным Apple Human Interface Guidelines (2025), такие уведомления сокращают количество шагов до целевого действия на 40%. Кнопки действий и поля ввода дают пользователю возможность ответить на сообщение, оплатить подписку или подтвердить бронирование прямо из шторки, не открывая приложение.
Главное
Interactive Notification — это расширенный формат push-уведомления, содержащий интерактивные элементы управления: кнопки, переключатели и поля ввода текста. В отличие от стандартного уведомления, которое только информирует, интерактивное позволяет пользователю совершить целевое действие прямо из шторки или lock screen. По данным Google Material Design (2025), интерактивные уведомления обрабатываются операционной системой без запуска основного процесса приложения — это экономит ресурс батареи и ускоряет отклик. Разработчик определяет набор действий через категории на iOS и каналы на Android, а система отображает их в зависимости от контекста.
Каждое интерактивное уведомление состоит из трёх уровней: основной контент (заголовок, тело), экшены (кнопки) и опциональный текстовый ввод. На iOS эти компоненты объединяются через UNNotificationCategory, а на Android — через NotificationCompat.Action.Builder. Система отображает кнопки под текстом уведомления в сжатом или расширенном виде в зависимости от версии ОС и длины текста. Пользователь видит доступные действия сразу после получения уведомления и может выполнить одно из них без перехода в приложение.
Механизм работы Interactive Notification разделяется на две фазы: регистрация категорий при старте приложения и обработка действия при нажатии пользователем. На этапе регистрации разработчик создаёт объекты категорий с набором экшенов — каждый экшен имеет идентификатор, заголовок и опции. При получении push-уведомления система сопоставляет его с зарегистрированной категорией по полю categoryIdentifier и автоматически добавляет соответствующие кнопки. Когда пользователь нажимает кнопку, система вызывает делегат UNUserNotificationCenter или PendingIntent на Android с идентификатором действия и передаёт результат обратно в приложение. По данным WWDC 2024, время обработки интерактивного действия на iOS не превышает 200 мс при корректной настройке.
Интерактивные уведомления делятся на три основных типа по способу взаимодействия: кнопочные, текстовые и мультимедийные. Каждый тип решает свою задачу и применяется в определённых сценариях. Выбор типа зависит от контекста — чем меньше шагов требуется пользователю, тем выше конверсия. Apple и Google рекомендуют использовать кнопки для подтверждения, поле ввода для ответов и медиа для предпросмотра контента.
Самый распространённый тип — уведомление с одной или несколькими кнопками, каждая из которых выполняет предопределённое действие. Например, кнопки «Принять» и «Отклонить» для календарного события, «Like» и «Reply» для сообщения. На iOS поддерживается до четырёх кнопок, на Android — до трёх. Кнопки можно группировать по приоритету: обычные и деструктивные (с подтверждением). Apple рекомендует не более двух основных кнопок для удобства пользователя на lock screen.
RemoteInput — технология, позволяющая пользователю ввести текст прямо в уведомлении без открытия приложения. На iOS для этого используется UNTextInputNotificationAction, на Android — RemoteInput.Builder с ключом для извлечения введённого текста. Чаще всего применяется в мессенджерах для быстрого ответа на сообщение. Введённый текст передаётся в приложение через сервис уведомлений или локальный обработчик. Ограничение — текст не может содержать форматирование, только plain string.
Уведомления с медиавложениями позволяют показывать изображения, аудио и видео прямо в шторке. На iOS это реализуется через UNNotificationAttachment, на Android — через NotificationCompat.MessagingStyle с BigPictureStyle. Медиа загружается сервером push-провайдера и передаётся вместе с уведомлением как вложение. Размер вложения ограничен — Apple рекомендует не более 10 МБ, Google — не более 1 МБ для изображений. Медиаконтент повышает информативность уведомления для новостей, маркетплейсов и соцсетей.
На iOS Interactive Notification реализуется через фреймворк UserNotifications с использованием UNNotificationCategory и UNNotificationAction. Приложение регистрирует категории при запуске, а при получении уведомления система автоматически отображает соответствующие кнопки. Для обработки действий необходимо реализовать метод userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler. Ниже приведён пример регистрации категории с кнопкой и текстовым вводом на Swift.
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Ответить",
options: [.authenticationRequired],
textInputButtonTitle: "Отправить",
textInputPlaceholder: "Введите сообщение..."
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
После вызова setNotificationCategories система сохраняет категории и использует их для всех последующих уведомлений. Код должен вызываться при каждом запуске приложения, чтобы синхронизировать категории с новыми версиями. Обработка ответа выполняется в делегате центра уведомлений — приложение получает идентификатор действия и введённый текст для дальнейшей обработки.
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completion: @escaping VoidBlock
) {
if response.actionIdentifier == "reply" {
let textResponse = response as! UNTextInputNotificationResponse
let message = textResponse.userText
sendMessage(message)
}
completion()
}
Метод userNotificationCenter вызывается системой после нажатия кнопки или отправки текста пользователем. Внутри обработчика проверяется actionIdentifier — если он совпадает с зарегистрированным идентификатором, приложение извлекает введённый текст из userText и отправляет на сервер. Для обычных кнопок без текстового ввода используется UNNotificationResponse без приведения типа.
На Android интерактивные уведомления создаются через класс NotificationCompat с методами addAction и RemoteInput. В отличие от iOS, Android не требует предварительной регистрации категорий — действия добавляются непосредственно в каждое уведомление через Builder. Это даёт больше гибкости: каждое уведомление может иметь уникальный набор кнопок. Ниже приведён пример уведомления с кнопкой ответа на Java с использованием RemoteInput.
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("Ответить")
.build();
PendingIntent replyIntent = PendingIntent.getBroadcast(
this, 1001,
new Intent("ACTION_REPLY"),
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(
R.drawable.ic_reply,
"Ответить", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("Новое сообщение")
.setContentText("Привет! Как дела?")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
Ключевой элемент — RemoteInput, который связывает поле ввода с действием. При нажатии кнопки «Ответить» система открывает диалог ввода текста внутри уведомления. После отправки текст передаётся через Intent в BroadcastReceiver или Activity по указанному PendingIntent. Для получения текста в получателе используется RemoteInput.getResultsFromIntent(intent) с ключом "key_reply".
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
Метод getResultsFromIntent извлекает введённый пользователем текст из Intent, переданного системой при отправке ответа. Результат возвращается в виде CharSequence, который преобразуется в строку для отправки на сервер. Если пользователь закрыл диалог ввода без отправки, results будет пустым — это следует учитывать при обработке. Такой подход позволяет реализовать быстрый ответ без запуска Activity.
Interactive Notification применяется в приложениях любого типа, где требуется быстрое действие пользователя. Наиболее эффективные сценарии — мессенджеры для ответа на сообщение, e-commerce для подтверждения заказа и календари для принятия приглашения. По данным Localytics (2025), приложения с интерактивными уведомлениями показывают на 28% выше retention на 7-й день. Ниже представлена таблица с популярными сценариями и платформенными особенностями.
| Сценарий | Действия | Платформа |
|---|---|---|
| Мессенджер | Ответить текстом, поставить Like | iOS + Android |
| E-commerce | Подтвердить, отложить, отменить | iOS + Android |
| Календарь | Принять, отклонить, maybe | iOS |
| Новости | Сохранить, поделиться, открыть | Android |
| Бронирование | Подтвердить, перенести, отмена | iOS + Android |
При проектировании интерактивных уведомлений важно учитывать ограничение — пользователь может выполнить действие только один раз. После нажатия кнопки уведомление исчезает или переходит в состояние «выполнено». Поэтому каждое действие должно быть необратимым или иметь подтверждение на втором шаге.
Часто задаваемые вопросы
Interactive Notification — это push-уведомление с кнопками, полем ввода или медиавложением, которое позволяет пользователю выполнить действие без открытия приложения. Поддерживается на iOS через UserNotifications и на Android через NotificationCompat.
Обычное уведомление только информирует — пользователь нажимает и открывает приложение. Интерактивное уведомление содержит кнопки или поле ввода, и действие выполняется прямо в шторке. Это сокращает путь до целевого действия и снижает нагрузку на приложение.
На iOS поддерживается до четырёх кнопок, на Android — до трёх. На Android две кнопки отображаются на панели уведомления, третья доступна в выпадающем меню. Apple рекомендует не более двух основных кнопок для удобства пользователя на lock screen.
На iOS используется UNTextInputNotificationAction, на Android — RemoteInput.Builder с ключом. Пользователь вводит текст в диалоговое окно внутри уведомления, и приложение получает его через делегат или Intent без запуска Activity.
Получение push-уведомления требует подключения к интернету, но сама интерактивность (отображение кнопок, текстовый ввод) работает офлайн. Передача результата на сервер может быть отложена до восстановления соединения.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также