Interactive Notification — това е push известие с интерактивни елементи, което позволява да се извърши действие без отваряне на приложението. По данни на Apple Human Interface Guidelines (2025), такива известия намаляват броя стъпки до целевото действие с 40%. Бутоните за действия и полетата за въвеждане дават на потребителя възможност да отговори на съобщение, да плати абонамент или да потвърди резервация директно от панела за известия, без да отваря приложението.
Основни точки
Interactive Notification — това е разширен формат на push известие, който съдържа интерактивни елементи за управление: бутони, превключватели и полета за въвеждане на текст. За разлика от стандартното известие, което само информира, интерактивното позволява на потребителя да извърши целево действие директно от панела за известия или от заключения екран. По данни на 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 препоръчва не повече от два основни бутона за удобство на потребителя на заключения екран.
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 препоръчва не повече от два основни бутона за удобство на потребителя на заключения екран.
На iOS се използва UNTextInputNotificationAction, на Android — RemoteInput.Builder с ключ. Потребителят въвежда текст в диалоговия прозорец вътре в известието, а приложението го получава чрез делегат или Intent без стартиране на Activity.
Получаването на push известие изисква интернет връзка, но самата интерактивност (показване на бутони, текстов вход) работи офлайн. Предаването на резултата към сървъра може да бъде отложено до възстановяване на връзката.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също