Notification Action — butoane interactive și câmpuri de introducere care se afișează direct în notificarea push și permit utilizatorului să efectueze o acțiune fără a deschide aplicația. Este un element cheie al experienței utilizatorului, scurtând drumul până la ecranul țintă. Potrivit Android Developers, 2025, Notification Action crește implicarea utilizatorilor cu până la 40% prin reducerea frecării în interacțiune.
Principalele puncte
Notification Action — este un element interactiv de interfață adăugat în notificarea push pentru a executa o acțiune specifică. Utilizatorul poate răspunde la un mesaj, poate confirma o sarcină sau poate deschide un ecran specific fără a intra în aplicație. Acțiunile sunt afișate ca butoane sub textul notificării sau în vizualizarea extinsă la glisare.
Scopul principal al Notification Action este de a reduce numărul de pași pentru ca utilizatorul să-și atingă scopul. În loc să deschidă aplicația și să navigheze la ecranul dorit, utilizatorul face clic pe un singur buton. Cercetările arată că aplicațile cu notificări interactive au un nivel de implicare cu 25–40% mai mare comparativ cu notificările simple.
Pe Android, Notification Action se afișează ca butoane-iconițe în vizualizarea compactă și ca butoane text în modul extins. Pe iOS, acțiunile apar la apăsarea lungă pe notificare sau la glisarea spre stânga. Fiecare platformă are propriile recomandări privind numărul de acțiuni — Android recomandă maximum 3, iOS — maximum 4.
| Platforma | Max. acțiuni | Mod de afișare | Tipuri de acțiuni |
|---|---|---|---|
| Android | 3 | Iconițe + text | Butoane, introducere text |
| iOS | 4 | Apăsare lungă / glisare | Butoane, introducere text |
Pe Android, Notification Action se creează prin NotificationCompat.Builder utilizând metoda addAction(). Fiecare acțiune conține o iconiță, un text și un PendingIntent care se declanșează la clic. Începând cu Android 7.0 (API 24), este acceptată introducerea directă de text prin RemoteInput.
Pentru a crea un buton în notificare, trebuie definit un PendingIntent care va fi lansat la clic. PendingIntent poate deschide o Activity, poate porni un Service sau un BroadcastReceiver. Iconița acțiunii trebuie să fie monocromă și conformă cu Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Cerere de confirmare")
.setContentText("Confirmați executarea sarcinii")
.addAction(R.drawable.ic_accept, "Confirmă", acceptPendingIntent)
.build()
Pentru scenarii care necesită introducere de text (de exemplu, răspuns la un mesaj), Android oferă RemoteInput. Utilizatorul introduce textul direct în notificare, iar aplicația îl primește fără a deschide Activity. RemoteInput este acceptat începând cu Android 7.0+ și necesită gestionare explicită în BroadcastReceiver sau Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Introduceți răspunsul")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Răspunde", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
La clic pe o acțiune, sistemul lansează PendingIntent-ul specificat. Pentru a obține textul introdus din RemoteInput, apelați RemoteInput.getResultsFromIntent(intent). Se recomandă gestionarea acțiunilor în IntentService sau WorkManager pentru a nu bloca firul UI.
Pe iOS, Notification Action se implementează prin framework-ul UserNotifications. Dezvoltatorul creează categorii de acțiuni (UNNotificationCategory) și le înregistrează la pornirea aplicației. Fiecare acțiune este definită de un obiect UNNotificationAction cu un identificator unic.
Pentru a adăuga acțiuni în notificările push pe iOS, trebuie creată o categorie care grupează acțiunile conexe. Categoria este specificată în încărcarea notificării prin câmpul category. La primirea notificării, sistemul afișează acțiunile disponibile din categoria specificată.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Confirmă",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Respinge",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Când utilizatorul face clic pe o acțiune, sistemul apelează metoda userNotificationCenter:didReceiveNotificationResponse în delegatul UNUserNotificationCenter. response.actionIdentifier conține identificatorul acțiunii executate. Pentru introducerea de text se utilizează UNTextInputNotificationAction, care furnizează textul introdus de utilizator.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action se clasifică după tipul de interacțiune și scenariul de utilizare. Alegerea corectă a tipului de acțiune influențează direct experiența utilizatorului și conversia în acțiunea țintă.
Cel mai comun tip — buton care deschide aplicația pe un ecran specific. Pe Android se utilizează PendingIntent.getActivity(), pe iOS — opțiunea .foreground pentru UNNotificationAction. Se aplică pentru acțiuni care necesită interfață completă, de exemplu vizualizarea detaliilor comenzii.
Acțiuni care se execută fără a deschide aplicația. Pe Android se utilizează PendingIntent.getBroadcast() sau PendingIntent.getService(). Pe iOS — opțiunea .authenticationRequired sau fără .foreground. Exemple: marcarea sarcinii ca finalizată, aprecierea unui post, adăugarea la favorite.
Permite utilizatorului să introducă text direct în notificare. Pe Android se implementează prin RemoteInput, pe iOS — prin UNTextInputNotificationAction. Se utilizează pentru răspunsuri la mesaje, comentarii, introducerea codurilor de confirmare unice.
Acțiuni care modifică ireversibil datele — ștergere, respingere, blocare. Pe Android se evidențiază vizual (culoare roșie în unele sisteme), pe iOS necesită opțiunea .destructive. Se recomandă solicitarea confirmării pentru acțiunile distructive, de exemplu printr-un dialog suplimentar sau un al doilea clic.
O clasă separată de acțiuni — introducerea textului direct din notificare. Pe Android se implementează prin RemoteInput în combinație cu PendingIntent. Pe iOS se utilizează UNTextInputNotificationAction, care moștenește UNNotificationAction. Astfel de acțiuni sunt folosite pentru răspunsuri rapide în mesagerie, introducerea codurilor promoționale, completarea formularelor de feedback sau evaluarea calității serviciilor. Textul introdus este transmis aplicației împreună cu identificatorul acțiunii. Pentru gestionarea corectă a introducerii textului pe ambele platforme, trebuie implementate analiza datelor introduse și validarea înainte de executarea acțiunii țintă.
Gestionarea corectă a Notification Action este critică pentru analitică și experiența utilizatorului. Fiecare clic trebuie logat, iar acțiunea — executată fiabil, chiar dacă aplicația a fost închisă.
Urmăriți fiecare clic pe Notification Action prin sistemul de analitică. Firebase Analytics, Mixpanel sau Yandex.Metrica permit înregistrarea identificatorului acțiunii, momentului clicului și contextului notificării. Aceste date ajută la optimizarea strategiei de notificări și la creșterea implicării. Testarea A/B cu diferite seturi de acțiuni ajută la determinarea celor mai eficiente scenarii de interacțiune cu utilizatorul.
Dacă aplicația este închisă, sistemul transmite totuși Intent sau UNNotificationResponse la clic pe acțiune. Pe Android, utilizați BroadcastReceiver pentru gestionare garantată. Pe iOS, sistemul lansează aplicația în fundal și transmite răspunsul delegatului. Pentru acțiuni critice (confirmarea plății, autorizare), adăugați un mecanism de reîncercare și o notificare a utilizatorului despre executarea cu succes.
Începând cu Android 7.0, dezvoltatorul poate influența afișarea Notification Action prin iconițe și culori. Iconițele trebuie să fie monocrome (canal alfa), cu dimensiunea de 24x24 dp. Pe iOS, personalizarea butoanelor este limitată — se utilizează culori și fonturi de sistem. Material Design recomandă gruparea acțiunilor după prioritate: cea mai importantă acțiune — prima, cele distructive — ultimele.
întrebări frecvente
Pe Android se recomandă maximum 3 acțiuni, pe iOS — până la 4. Depășirea limitei face ca o parte din acțiuni să nu se afișeze sau să fie ascunse în submeniu.
Iconița este transmisă în NotificationCompat.Action.Builder ca resursă drawable. Iconița trebuie să fie monocromă (canal alfa), cu dimensiunea de 24x24 dp și conformă recomandărilor Material Design.
Da, dacă notificarea este afișată pe ecranul blocat și flag-ul visibility este setat ca VISIBILITY_PUBLIC. Pe iOS este necesară opțiunea .authenticationRequired pentru acțiunile care necesită autorizare.
Pe Android, sistemul recreate procesul și livrează Intent-ul. Pe iOS, sistemul lansează aplicația în fundal. Se poate garanta livrarea cu ajutorul BroadcastReceiver pe Android și UNNotificationServiceExtension pe iOS.
Pe Android, acțiunile sunt vizibile imediat sub notificare sub formă de iconițe. Pe iOS, acțiunile sunt ascunse în spatele apăsării lungi sau glisării. Designul UX al notificărilor trebuie să țină cont de aceste diferențe de platformă.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și