Interactive Notification — to powiadomienie push z interaktywnymi elementami, umożliwiające wykonanie działania bez otwierania aplikacji. Według Apple Human Interface Guidelines (2025), takie powiadomienia skracają liczbę kroów do docelowego działania o 40%. Przyciski akcji i pola wprowadzania dają użytkownikowi możliwość odpowiedzi na wiadomość, opłacenia subskrypcji lub potwierdzenia rezerwacji bezpośrednio z panelu powiadomień, bez otwierania aplikacji.
Najważniejsze
Interactive Notification — to rozszerzony format powiadomienia push zawierający interaktywne elementy sterowania: przyciski, przełączniki i pola wprowadzania tekstu. W przeciwieństwie do standardowego powiadomienia, które tylko informuje, interaktywne pozwala użytkownikowi wykonać docelowe działanie bezpośrednio z panelu lub ekranu blokady. Według Google Material Design (2025), interaktywne powiadomienia są przetwarzane przez system operacyjny bez uruchamiania głównego procesu aplikacji — oszczędza to baterię i przyspiesza reakcję. Deweloper określa zestaw akcji przez kategorie na iOS i kanały na Android, a system wyświetla je w zależności od kontekstu.
Każde interaktywne powiadomienie składa się z trzech poziomów: głównej treści (tytuł, treść), akcji (przyciski) i opcjonalnego wprowadzania tekstu. Na iOS te komponenty są łączone przez UNNotificationCategory, a na Android — przez NotificationCompat.Action.Builder. System wyświetla przyciski pod tekstem powiadomienia w formie zwiniętej lub rozszerzonej w zależności od wersji systemu operacyjnego i długości tekstu. Użytkownik widzi dostępne akcje natychmiast po otrzymaniu powiadomienia i może wykonać jedną z nich bez przechodzenia do aplikacji.
Mechanizm działania Interactive Notification dzieli się na dwie fazy: rejestrację kategorii przy uruchomieniu aplikacji i obsługę akcji po naciśnięciu przez użytkownika. Na etapie rejestracji deweloper tworzy obiekty kategorii z zestawem akcji — każda akcja ma identyfikator, tytuł i opcje. Po otrzymaniu powiadomienia push system dopasowuje je do zarejestrowanej kategorii według pola categoryIdentifier i automatycznie dodaje odpowiednie przyciski. Gdy użytkownik naciska przycisk, system wywołuje delegata UNUserNotificationCenter lub PendingIntent na Android z identyfikatorem akcji i przekazuje wynik z powrotem do aplikacji. Według WWDC 2024, czas przetwarzania interaktywnej akcji na iOS nie przekracza 200 ms przy prawidłowej konfiguracji.
Interaktywne powiadomienia dzielą się na trzy główne typy według sposobu interakcji: przyciskowe, tekstowe i multimedialne. Każdy typ rozwiązuje swoje zadanie i jest stosowany w określonych scenariuszach. Wybór typu zależy od kontekstu — im mniej kroków wymaga użytkownik, tym wyższa konwersja. Apple i Google zalecają używanie przycisków do potwierdzeń, pola wprowadzania do odpowiedzi i mediów do podglądu treści.
Najbardziej popularny typ — powiadomienie z jednym lub kilkoma przyciskami, z których każdy wykonuje określoną akcję. Na przykład przyciski «Akceptuj» i «Odrzuć» dla wydarzenia w kalendarzu, «Like» i «Odpowiedz» dla wiadomości. Na iOS obsługiwane są do czterech przycisków, na Android — do trzech. Przyciski można grupować według priorytetu: zwykłe i destrukcyjne (z potwierdzeniem). Apple zaleca nie więcej niż dwa główne przyciski dla wygody użytkownika na ekranie blokady.
RemoteInput — technologia umożliwiająca użytkownikowi wpisanie tekstu bezpośrednio w powiadomieniu bez otwierania aplikacji. Na iOS używa się do tego UNTextInputNotificationAction, na Android — RemoteInput.Builder z kluczem do wyodrębnienia wprowadzonego tekstu. Najczęściej stosowana w komunikatorach do szybkiej odpowiedzi na wiadomość. Wprowadzony tekst jest przekazywany do aplikacji przez serwis powiadomień lub lokalny handler. Ograniczenie — tekst nie może zawierać formatowania, tylko zwykły string.
Powiadomienia z załącznikami multimedialnymi pozwalają wyświetlać obrazy, audio i wideo bezpośrednio w panelu. Na iOS realizuje się to przez UNNotificationAttachment, na Android — przez NotificationCompat.MessagingStyle z BigPictureStyle. Multimedia są pobierane przez serwer push i przesyłane wraz z powiadomieniem jako załącznik. Rozmiar załącznika jest ograniczony — Apple zaleca nie więcej niż 10 MB, Google — nie więcej niż 1 MB dla obrazów. Treści multimedialne zwiększają informacyjność powiadomień dla wiadomości, marketplaceów i mediów społecznościowych.
Na iOS Interactive Notification jest implementowane przez framework UserNotifications z użyciem UNNotificationCategory i UNNotificationAction. Aplikacja rejestruje kategorie przy uruchomieniu, a po otrzymaniu powiadomienia system automatycznie wyświetla odpowiednie przyciski. Do obsługi akcji należy zaimplementować metodę userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler. Poniżej znajduje się przykład rejestracji kategorii z przyciskiem i wprowadzaniem tekstu w Swift.
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Odpowiedz",
options: [.authenticationRequired],
textInputButtonTitle: "Wyślij",
textInputPlaceholder: "Wpisz wiadomość..."
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
Po wywołaniu setNotificationCategories system zapisuje kategorie i używa ich dla wszystkich kolejnych powiadomień. Kod powinien być wywoływany przy każdym uruchomieniu aplikacji, aby zsynchronizować kategorie z nowymi wersjami. Obsługa odpowiedzi jest wykonywana w delegacie centrum powiadomień — aplikacja otrzymuje identyfikator akcji i wprowadzony tekst do dalszego przetwarzania.
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 jest wywoływana przez system po naciśnięciu przycisku lub wysłaniu tekstu przez użytkownika. Wewnątrz handlera sprawdzany jest actionIdentifier — jeśli zgadza się z zarejestrowanym identyfikatorem, aplikacja wyodrębnia wprowadzony tekst z userText i wysyła go na serwer. Dla zwykłych przycisków bez wprowadzania tekstu używa się UNNotificationResponse bez rzutowania.
Na Android interaktywne powiadomienia są tworzone przez klasę NotificationCompat z metodami addAction i RemoteInput. W przeciwieństwie do iOS, Android nie wymaga wcześniejszej rejestracji kategorii — akcje są dodawane bezpośrednio do każdego powiadomienia przez Builder. Daje to większą elastyczność: każde powiadomienie może mieć unikalny zestaw przycisków. Poniżej znajduje się przykład powiadomienia z przyciskiem odpowiedzi w Java z użyciem RemoteInput.
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("Odpowiedz")
.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,
"Odpowiedz", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("Nowa wiadomość")
.setContentText("Cześć! Jak się masz?")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
Kluczowym elementem jest RemoteInput, który łączy pole wprowadzania z akcją. Po naciśnięciu przycisku «Odpowiedz» system otwiera okno dialogowe wprowadzania tekstu w powiadomieniu. Po wysłaniu tekst jest przekazywany przez Intent do BroadcastReceiver lub Activity według określonego PendingIntent. Aby uzyskać tekst w odbiorcy, używa się RemoteInput.getResultsFromIntent(intent) z kluczem «key_reply».
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
Metoda getResultsFromIntent wyodrębnia tekst wprowadzony przez użytkownika z Intent przekazanego przez system przy wysyłaniu odpowiedzi. Wynik jest zwracany jako CharSequence, który jest konwertowany na string do wysłania na serwer. Jeśli użytkownik zamknął okno dialogowe bez wysłania, results będzie puste — należy to uwzględnić podczas przetwarzania. Takie podejście umożliwia szybką odpowiedź bez uruchamiania Activity.
Interactive Notification jest stosowane w aplikacjach dowolnego typu, gdzie wymagane jest szybkie działanie użytkownika. Najbardziej efektywne scenariusze — komunikatory do odpowiedzi na wiadomość, e-commerce do potwierdzenia zamówienia i kalendarze do przyjęcia zaproszenia. Według Localytics (2025), aplikacje z interaktywnymi powiadomieniami wykazują o 28% wyższy retention w 7. dniu. Poniżej przedstawiono tabelę z popularnymi scenariuszami i różnicami platformowymi.
| Scenariusz | Akcje | Platforma |
|---|---|---|
| Komunikator | Odpowiedz tekstem, daj Like | iOS + Android |
| E-commerce | Potwierdź, odłóż, anuluj | iOS + Android |
| Kalendarz | Przyjmij, odrzuć, może | iOS |
| Wiadomości | Zapisz, udostępnij, otwórz | Android |
| Rezerwacja | Potwierdź, przełóż, anuluj | iOS + Android |
Przy projektowaniu interaktywnych powiadomień ważne jest uwzględnienie ograniczenia — użytkownik może wykonać akcję tylko raz. Po naciśnięciu przycisku powiadomienie znika lub przechodzi w stan «wykonane». Dlatego każda akcja powinna być nieodwracalna lub wymagać potwierdzenia w drugim kroku.
Często zadawane pytania
Interactive Notification — to powiadomienie push z przyciskami, polem wprowadzania lub załącznikiem multimedialnym, które pozwala użytkownikowi wykonać działanie bez otwierania aplikacji. Obsługiwane na iOS przez UserNotifications i na Android przez NotificationCompat.
Zwykłe powiadomienie tylko informuje — użytkownik naciska i otwiera aplikację. Interaktywne powiadomienie zawiera przyciski lub pole wprowadzania, a akcja jest wykonywana bezpośrednio w panelu. Skraca to drogę do docelowego działania i zmniejsza obciążenie aplikacji.
Na iOS obsługiwane są do czterech przycisków, na Android — do trzech. Na Android dwa przyciski są wyświetlane na panelu powiadomień, trzeci jest dostępny w menu rozwijanym. Apple zaleca nie więcej niż dwa główne przyciski dla wygody użytkownika na ekranie blokady.
Na iOS używa się UNTextInputNotificationAction, na Android — RemoteInput.Builder z kluczem. Użytkownik wpisuje tekst w oknie dialogowym wewnątrz powiadomienia, a aplikacja otrzymuje go przez delegata lub Intent bez uruchamiania Activity.
Otrzymanie powiadomienia push wymaga połączenia z internetem, ale sama interaktywność (wyświetlanie przycisków, wprowadzanie tekstu) działa offline. Przekazanie wyniku na serwer może być opóźnione do przywrócenia połączenia.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również