Notification Action — интерактивни дугмићи и поља за унос који се приказују директно у push обавештењу и омогућавају кориснику да изврши радњу без отварања апликације. Ово је кључни елемент корисничког искуства који скраћује пут до циљног екрана. Према Android Developers, 2025, Notification Action повећава ангажованост корисника до 40% захваљујући смањењу трења при интеракцији.
Главно
Notification Action — је интерактивни елемент интерфејса који се додаје у push обавештење за извршавање одређене акције. Корисник може да одговори на поруку, потврди задатак или отвори одређени екран без уласка у апликацију. Акције се приказују као дугмићи испод текста обавештења или у проширеном приказу при превлачењу.
Основни циљ Notification Action-а је смањење броја корака за постизање циља корисника. Уместо отварања апликације и навигације до потребног екрана, корисник кликне један дугмић. Истраживања показују да апликације са интерактивним обавештењима имају 25–40% виши ниво ангажовања у поређењу са обичним обавештењима.
На Android-у, Notification Action се приказују као иконице-дугмићи у сажетом приказу и као текстуални дугмићи у проширеном режиму. На iOS-у, акције се појављују при дугом притиску на обавештење или превлачењу улево. Свака платформа има сопствене препоруке за број акција — Android препоручује највише 3, iOS — највише 4.
| Платформа | Макс. акција | Начин приказа | Типови акција |
|---|---|---|---|
| Android | 3 | Иконице + текст | Дугмићи, унос текста |
| iOS | 4 | Дуги притисак / превлачење | Дугмићи, унос текста |
На Android-у, Notification Action се креирају путем NotificationCompat.Builder-а коришћећем методе addAction(). Свака акција садржи иконицу, текст и PendingIntent који се покреће при клику. Почев од Android 7.0 (API 24), подржан је директан унос текста путем RemoteInput-а.
За креирање дугмића у обавештењу, потребно је дефинисати PendingIntent који ће бити покренут при клику. PendingIntent може да отвори Activity, покрене Service или BroadcastReceiver. Иконица акције мора бити монохромна и усклађена са 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("Захтев за потврду")
.setContentText("Потврдите извршење задатка")
.addAction(R.drawable.ic_accept, "Потврди", acceptPendingIntent)
.build()
За сценарије који захтевају унос текста (нпр. одговор на поруку), Android пружа RemoteInput. Корисник уноси текст директно у обавештењу, а апликација га прима без отварања Activity-је. RemoteInput је подржан на Android 7.0+ и захтева експлицитну обраду у BroadcastReceiver-у или Service-у.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Унесите одговор")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Одговори", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
При клику на акцију, систем покреће наведени PendingIntent. За добијање унетог текста из RemoteInput-а, позовите RemoteInput.getResultsFromIntent(intent). Препоручује се обрада акција у IntentService-у или WorkManager-у да се не блокира UI нит.
На iOS-у, Notification Action се имплементирају путем UserNotifications оквира. Развојач креира категорије акција (UNNotificationCategory) и региструје их при покретању апликације. Свака акција је дефинисана објектом UNNotificationAction са јединственим идентификатором.
Да бисте додали акције у push обавештења на iOS-у, потребно је креирати категорију која групише повезане акције. Категорија се наводи у пакету обавештења путем поља category. По пријему обавештења, систем приказује доступне акције из наведене категорије.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Потврди",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Одбиј",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Када корисник кликне на акцију, систем позива методу userNotificationCenter:didReceiveNotificationResponse у делегату UNUserNotificationCenter-а. response.actionIdentifier садржи идентификатор извршене акције. За унос текста користи се UNTextInputNotificationAction који пружа текст који је унео корисник.
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 се класификује према типу интеракције и сценарију коришћења. Правилан избор типа акције директно утиче на корисничко искуство и конверзију у циљну акцију.
Најчешћи тип — дугмић који отвара апликацију на одређеном екрану. На Android-у користи се PendingIntent.getActivity(), на iOS-у — опција .foreground за UNNotificationAction. Примењује се за акције које захтевају пун интерфејс, нпр. преглед детаља поруџбине.
Акције које се извршавају без отварања апликације. На Android-у користи се PendingIntent.getBroadcast() или PendingIntent.getService(). На iOS-у — опција .authenticationRequired или без .foreground. Примјери: ознака задатка као завршеног, лајк објаве, додавање у омиљено.
Омогућава кориснику да унесе текст директно у обавештењу. На Android-у се имплементира путем RemoteInput-а, на iOS-у — путем UNTextInputNotificationAction-а. Користи се за одговоре на поруке, коментаре, унос једнократних кодова за потврду.
Акције које неопозиво мењају податке — брисање, одбијање, блокирање. На Android-у се истичу визуелно (црвена боја у неким системима), на iOS-у захтевају опцију .destructive. Препоручује се тражење потврде за деструктивне акције, нпр. кроз додатни дијалог или други клик.
Посебна класа акција — унос текста из обавештења. На Android-у се имплементира путем RemoteInput-а у комбинацији са PendingIntent-ом. На iOS-у користи се UNTextInputNotificationAction, који насљеђује UNNotificationAction. Овакве акције се користе за брзе одговоре у месенџерима, унос промо кодова, попуњавање образаца за повратну информацију или оцењивање квалитета услуге. Унети текст се преноси апликацији заједно са идентификатором акције. За исправну обраду уноса текста на обе платформе, потребно је имплементирати парсирање унетих података и валидацију пре извршавања циљне акције.
Исправна обрада Notification Action-а је критична за аналитику и корисничко искуство. Сваки клик мора бити логован, а акција мора бити извршена поуздано, чак и ако је апликација била затворена.
Пратите сваки клик на Notification Action кроз аналитички систем. Firebase Analytics, Mixpanel или Yandex.Metrica омогућавају биљежење идентификатора акције, времена клика и контекста обавештења. Ови подаци помажу да оптимизујете стратегију обавештења и повећате ангажовање. A/B тестирање са различитим скуповима акција помаже да се утврде најефикаснији сценарији интеракције са корисником.
Ако је апликација затворена, систем ипак преноси Intent или UNNotificationResponse при клику на акцију. На Android-у користите BroadcastReceiver за гарантовану обраду. На iOS-у, систем покреће апликацију у позадини и преноси одговор делегату. За критичне акције (потврда плаћања, ауторизација) додајте механизам поновног покушаја и обавештење корисника о успешном извршењу.
Почев од Android 7.0, развојач може да утиче на приказ Notification Action-а кроз иконице и боје. Иконице морају бити монохромне (алфа канал), величине 24x24 dp. На iOS-у, прилагодба дугмића је ограничена — користе се системске боје и фонтови. Material Design препоручује груписање акција према приоритету: најважнија акција прва, деструктивне последње.
Често постављана питања
На Android-у се препоручује највише 3 акције, на iOS-у до 4. Прекораћивање лимита доводи да се део акција не приказује или сакрије у подменију.
Иконица се преноси у NotificationCompat.Action.Builder као drawable ресурс. Иконица мора бити монохромна (алфа канал), величине 24x24 dp и усклађена са Material Design препорукама.
Да, ако се обавештење приказује на закључаном екрану и је постављен флаг visibility као VISIBILITY_PUBLIC. На iOS-у је потребна опција .authenticationRequired за акције које захтевају ауторизацију.
На Android-у систем поново креира процес и испоручује Intent. На iOS-у систем покреће апликацију у позадини. Испорука се може гарантовати помоћу BroadcastReceiver-а на Android-у и UNNotificationServiceExtension-а на iOS-у.
На Android-у акције су одмах видљиве испод обавештења као иконице. На iOS-у акције су сакривене иза дугог притиска или превлачења. UX дизајн обавештења мора да узме у обзир ове платформене разлике.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође