Interactive Notification je push oznámení s interaktivními prvky, které umožňuje provést akci bez otevření aplikace. Podle Apple Human Interface Guidelines (2025) tato oznámení snižují počet kroků k cílové akci o 40%. Tlačítka akcí a vstupní pole dávají uživateli možnost odpovědět na zprávu, zaplatit předplatné nebo potvrdit rezervaci přímo z notifikační lišty, aniž by otevřel aplikaci.
Hlavní body
Interactive Notification je rozšířený formát push oznámení, který obsahuje interaktivní ovládací prvky: tlačítka, přepínače a vstupní pole pro text. Na rozdíl od standardního oznámení, které pouze informuje, interaktivní umožňuje uživateli provést cílovou akci přímo z lišty nebo uzamčené obrazovky. Podle Google Material Design (2025) jsou interaktivní oznámení zpracovávána operačním systémem bez spuštění hlavního procesu aplikace — šetří baterii a zrychluje odezvu. Vývojář definuje sadu akcí prostřednictvím kategorií na iOS a kanálů na Android a systém je zobrazuje v závislosti na kontextu.
Každé interaktivní oznámení se skládá ze tří úrovní: hlavní obsah (nadpis, tělo), akce (tlačítka) a volitelný textový vstup. Na iOS jsou tyto komponenty spojeny pomocí UNNotificationCategory, na Android pomocí NotificationCompat.Action.Builder. Systém zobrazuje tlačítka pod textem oznámení ve sbalené nebo rozšířené podobě v závislosti na verzi OS a délce textu. Uživatel vidí dostupné akce ihned po obdržení oznámení a může provést jednu z nich bez přechodu do aplikace.
Mechanismus fungování Interactive Notification se dělí na dvě fáze: registrace kategorií při spuštění aplikace a zpracování akce při klepnutí uživatelem. Ve fázi registrace vývojář vytváří objekty kategorií se sadou akcí — každá akce má identifikátor, název a možnosti. Při obdržení push oznámení systém porovná s registrovanou kategorií podle pole categoryIdentifier a automaticky přidá odpovídající tlačítka. Když uživatel klepne na tlačítko, systém zavolá delegáta UNUserNotificationCenter nebo PendingIntent na Android s identifikátorem akce a předá výsledek zpět do aplikace. Podle WWDC 2024 doba zpracování interaktivní akce na iOS nepřesahuje 200 ms při správném nastavení.
Interaktivní oznámení se dělí na tři hlavní typy podle způsobu interakce: tlačítková, textová a multimediální. Každý typ řeší svůj vlastní úkol a používá se v konkrétních scénářích. Výběr typu závisí na kontextu — čím méně kroků uživatel potřebuje, tím vyšší je konverze. Apple a Google doporučují používat tlačítka pro potvrzení, vstupní pole pro odpovědi a média pro náhled obsahu.
Nejrozšířenější typ — oznámení s jedním nebo více tlačítky, z nichž každé provádí předdefinovanou akci. Například tlačítka „Přijmout“ a „Odmítnout“ pro událost v kalendáři, „Like“ a „Odpovědět“ pro zprávu. Na iOS je podporováno až čtyři tlačítka, na Android až tři. Tlačítka lze seskupit podle priority: běžná a destruktivní (s potvrzením). Apple doporučuje ne více než dvě hlavní tlačítka pro pohodlí uživatele na uzamčené obrazovce.
RemoteInput je technologie, která umožňuje uživateli zadat text přímo v oznámení bez otevření aplikace. Na iOS se používá UNTextInputNotificationAction, na Android RemoteInput.Builder s klíčem pro extrakci zadaného textu. Nejčastěji se používá v messengerech pro rychlou odpověď na zprávu. Zadaný text je předán aplikaci prostřednictvím notifikační služby nebo lokálního handleru. Omezení — text nemůže obsahovat formátování, pouze plain string.
Oznámení s multimediálními přílohami umožňují zobrazovat obrázky, audio a video přímo v liště. Na iOS je to implementováno pomocí UNNotificationAttachment, na Android pomocí NotificationCompat.MessagingStyle s BigPictureStyle. Média jsou nahrána serverem push provideru a přenášena spolu s oznámením jako příloha. Velikost přílohy je omezena — Apple doporučuje ne více než 10 MB, Google ne více než 1 MB pro obrázky. Multimediální obsah zvyšuje informační hodnotu oznámení pro zprávy, e-commerce a sociální sítě.
Na iOS je Interactive Notification implementován přes framework UserNotifications s použitím UNNotificationCategory a UNNotificationAction. Aplikace registruje kategorie při spuštění a při obdržení oznámení systém automaticky zobrazí odpovídající tlačítka. Pro zpracování akcí je nutné implementovat metodu userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler. Níže je uveden příklad registrace kategorie s tlačítkem a textovým vstupem ve Swift.
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Odpovědět",
options: [.authenticationRequired],
textInputButtonTitle: "Odeslat",
textInputPlaceholder: "Zadejte zprávu..."
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
Po zavolání setNotificationCategories systém uloží kategorie a používá je pro všechna následující oznámení. Kód by měl být volán při každém spuštění aplikace, aby synchronizoval kategorie s novými verzemi. Zpracování odpovědi probíhá v delegátovi centra oznámení — aplikace obdrží identifikátor akce a zadaný text pro další zpracování.
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()
}
Metoda userNotificationCenter je volána systémem po klepnutí na tlačítko nebo odeslání textu uživatelem. Uvnitř handleru se kontroluje actionIdentifier — pokud odpovídá registrovanému identifikátoru, aplikace extrahuje zadaný text z userText a odešle na server. Pro běžná tlačítka bez textového vstupu se používá UNNotificationResponse bez přetypování.
Na Android jsou interaktivní oznámení vytvářena pomocí třídy NotificationCompat s metodami addAction a RemoteInput. Na rozdíl od iOS Android nevyžaduje předběžnou registraci kategorií — akce se přidávají přímo do každého oznámení přes Builder. To poskytuje větší flexibilitu: každé oznámení může mít jedinečnou sadu tlačítek. Níže je uveden příklad oznámení s tlačítkem odpovědi v Javě pomocí RemoteInput.
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("Odpovědět")
.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,
"Odpovědět", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("Nová zpráva")
.setContentText("Ahoj! Jak se máš?")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
Klíčovým prvkem je RemoteInput, který propojuje vstupní pole s akcí. Když uživatel klepne na tlačítko „Odpovědět“, systém otevře dialog pro zadání textu uvnitř oznámení. Po odeslání je text předán přes Intent do BroadcastReceiver nebo Activity podle zadaného PendingIntent. Pro získání textu v příjemci se používá RemoteInput.getResultsFromIntent(intent) s klíčem „key_reply“.
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
Metoda getResultsFromIntent extrahuje text zadaný uživatelem z Intent, který byl předán systémem při odeslání odpovědi. Výsledek je vrácen jako CharSequence, který je převeden na řetězec pro odeslání na server. Pokud uživatel zavřel dialog zadávání bez odeslání, bude results prázdný — to je třeba vzít v úvahu při zpracování. Tento přístup umožňuje implementovat rychlou odpověď bez spuštění Activity.
Interactive Notification se používá v aplikacích jakéhokoli typu, kde je vyžadována rychlá akce uživatele. Nejefektivnější scénáře — messengery pro odpověď na zprávu, e-commerce pro potvrzení objednávky a kalendáře pro přijetí pozvánky. Podle Localytics (2025) vykazují aplikace s interaktivními oznámeními o 28% vyšší retenci 7. den. Níže je uvedena tabulka s oblíbenými scénáři a platformovými specifiky.
| Scénář | Akce | Platforma |
|---|---|---|
| Messenger | Odpovědět textem, dát Like | iOS + Android |
| E-commerce | Potvrdit, odložit, zrušit | iOS + Android |
| Kalendář | Přijmout, odmítnout, možná | iOS |
| Zprávy | Uložit, sdílet, otevřít | Android |
| Rezervace | Potvrdit, přeplánovat, zrušit | iOS + Android |
Při navrhování interaktivních oznámení je důležité zohlednit omezení — uživatel může provést akci pouze jednou. Po klepnutí na tlačítko oznámení zmizí nebo přejde do stavu „dokončeno“. Každá akce by proto měla být nevratná nebo vyžadovat potvrzení v druhém kroku.
Často kladené otázky
Interactive Notification je push oznámení s tlačítky, vstupním polem nebo multimediální přílohou, které umožňuje uživateli provést akci bez otevření aplikace. Je podporováno na iOS přes UserNotifications a na Android přes NotificationCompat.
Běžné oznámení pouze informuje — uživatel klepne a otevře aplikaci. Interaktivní oznámení obsahuje tlačítka nebo vstupní pole a akce se provádí přímo v liště. To zkracuje cestu k cílové akci a snižuje zátěž aplikace.
Na iOS je podporováno až čtyři tlačítka, na Android až tři. Na Android jsou dvě tlačítka zobrazena na panelu oznámení, třetí je dostupné v rozbalovací nabídce. Apple doporučuje ne více než dvě hlavní tlačítka pro pohodlí uživatele na uzamčené obrazovce.
Na iOS se používá UNTextInputNotificationAction, na Android RemoteInput.Builder s klíčem. Uživatel zadá text do dialogového okna uvnitř oznámení a aplikace jej obdrží přes delegáta nebo Intent bez spuštění Activity.
Příjem push oznámení vyžaduje připojení k internetu, ale samotná interaktivita (zobrazení tlačítek, textový vstup) funguje offline. Předání výsledku na server může být odloženo do obnovení připojení.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také