Rich Notification: co to jest, multimedia i tworzenie powiadomień

Autor: IT Sectr Opublikowano: 2026-03-20 Czas czytania: 8 min

Rich Notification to rozszerzony format powiadomień push iOS, który zawiera załączniki multimedialne, przyciski interaktywne i niestandardowe interfejsy poprawiające doświadczenie użytkownika. W przeciwieństwie do standardowych powiadomień tekstowych, Rich Notification może wyświetlać obrazy, wideo i audio bezpośrednio w banerze lub na ekranie blokady. Według Apple Developer Documentation, 2026, UNNotificationAttachment obsługuje do 10 plików w jednym powiadomieniu i automatycznie skaluje je dla optymalnego wyświetlania na wszystkich urządzeniach.

Najważniejsze

  • Załączniki multimedialne — Rich Notification obsługuje obrazy (JPEG, PNG, GIF), wideo (MP4, MOV do 30 sekund) i audio (MP3, AAC, WAV) przez UNNotificationAttachment.
  • Interaktywność — przyciski i wprowadzanie tekstu dodaje się przez UNNotificationAction i UNTextInputNotificationAction, powiązane z kategoriami powiadomień.
  • Service Extension — obowiązkowy komponent do pobierania multimediów: to on pobiera załącznik z URL z payloadu i dodaje go do treści.
  • Content Extension — tworzy w pełni niestandardowy interfejs powiadomienia z dowolnym UI, animacjami i obsługą gestów.
  • Limity — maksymalny rozmiar załącznika 10 MB, ograniczenie pamięci rozszerzenia 50 MB, czas przetwarzania do 30 sekund.

Co to jest Rich Notification

Rich Notification to powiadomienie push iOS, które zawiera nie tylko tekst, ale także załączniki multimedialne, elementy interaktywne i spersonalizowany interfejs. Termin „rich” (bogaty) odzwierciedla możliwość dołączania do powiadomienia obrazów, wideo, audio, przycisków akcji i wprowadzania tekstu, co zmienia zwykłe powiadomienie w pełnoprawny element interaktywny.

Ewolucja powiadomień w iOS

Apple wprowadziło obsługę Rich Notification w iOS 10 wraz z frameworkiem UserNotifications. Wcześniej powiadomienia push mogły zawierać tylko tekst, dźwięk i badge. iOS 10 przedstawiło UNNotificationServiceExtension i UNNotificationContentExtension, które otworzyły możliwość modyfikacji treści i tworzenia niestandardowych interfejsów. W późniejszych wersjach dodano obsługę SwiftUI w Content Extension, animowanych GIF i ulepszone skalowanie multimediów.

Zalety w porównaniu ze standardowymi powiadomieniami

Rich Notification znacznie zwiększa zaangażowanie użytkowników. Badania Apple pokazują, że powiadomienia z obrazami otrzymują o 30–40% więcej interakcji w porównaniu z tekstowymi. Obraz produktu, podgląd wideo lub przycisk szybkiej odpowiedzi pozwalają użytkownikowi podjąć decyzję bezpośrednio z powiadomienia, bez otwierania aplikacji. Skraca to ścieżkę do docelowej akcji i poprawia doświadczenie użytkownika.

Rodzaje załączników multimedialnych i ich formaty

UNNotificationAttachment obsługuje trzy kategorie multimediów: obrazy, wideo i audio. Każdy typ ma swoje ograniczenia dotyczące formatu, rozmiaru i czasu trwania. System automatycznie skaluje obrazy do rozmiaru powiadomienia i ogranicza czas trwania wideo do 30 sekund w celu optymalizacji wydajności.

Typ multimediówObsługiwane formatyMaksymalny rozmiar
ObrazyJPEG, PNG, GIF, TIFF10 MB na plik
WideoMPEG, MP4, MOV10 MB, do 30 sekund
AudioMP3, AAC, WAV, CAF10 MB

Obrazy i animowane GIF

Obrazy są automatycznie przycinane i skalowane przez system do wyświetlania w kompaktowym i rozszerzonym widoku powiadomienia. Animowane GIF są obsługiwane od iOS 12 i odtwarzają się automatycznie podczas przeglądania powiadomienia. Zalecany rozmiar obrazu to 1024x1024 piksele, co zapewnia wyraźne wyświetlanie na wszystkich urządzeniach, w tym na iPadzie z dużym ekranem.

Załączniki wideo i audio

Wideo w Rich Notification odtwarza się domyślnie bez dźwięku — użytkownik może włączyć dźwięk przez przycisk w odtwarzaczu. Maksymalny czas trwania wideo wynosi 30 sekund, po czym odtwarzanie zostaje zatrzymane. Załączniki audio mogą być używane do wiadomości głosowych lub podglądów dźwiękowych i odtwarzają się po dotknięciu powiadomienia w rozszerzonym widoku.

Przyciski interaktywne i akcje

Akcje interaktywne pozwalają użytkownikowi wykonywać operacje bezpośrednio z powiadomienia bez otwierania aplikacji. Akcje są rejestrowane przez UNNotificationCategory i UNNotificationAction podczas uruchamiania aplikacji. Każda akcja może być w tle (bez otwierania aplikacji) lub pierwszoplanowa (otwiera aplikację w celu dokończenia operacji).

UNNotificationAction i UNTextInputNotificationAction

UNNotificationAction to przycisk z tytułem i opcjonalnymi modyfikatorami, takimi jak requiresAuthentication (wymaga Face ID/Touch ID) lub destructive (podświetlony na czerwono). UNTextInputNotificationAction rozszerza tę możliwość, dodając pole tekstowe do wprowadzania — idealne do szybkiej odpowiedzi na wiadomość lub komentarz. Akcje są wyświetlane po długim naciśnięciu powiadomienia lub przesunięciu w dół.

Rejestracja kategorii i akcji

Kategorie powiadomień łączą typ treści z zestawem dostępnych akcji. Proces rejestracji odbywa się w AppDelegate podczas uruchamiania aplikacji przez UNUserNotificationCenter.current().setNotificationCategories. Kategoria jest określana na serwerze w polu category JSON payloadu, a system automatycznie stosuje odpowiedni zestaw akcji do powiadomienia.

Obsługa kliknięć akcji

Gdy użytkownik kliknie przycisk lub wyśle tekst, system wywołuje delegata UNUserNotificationCenterDelegate z metodą didReceive response. UNNotificationResponse zawiera identyfikator akcji i wprowadzony tekst (dla UNTextInputNotificationAction). Na podstawie tych informacji aplikacja wykonuje odpowiednią logikę biznesową: wysyła wiadomość, potwierdza akcję lub otwiera określony ekran.

Implementacja Rich Notification w Swift

Przeanalizujemy pełny cykl tworzenia Rich Notification: od rejestracji kategorii w AppDelegate po przetwarzanie w Service Extension i wyświetlanie. AppDelegate rejestruje kategorię z przyciskami, serwer wysyła powiadomienie z URL obrazu, Service Extension pobiera multimedia, a Content Extension wyświetla niestandardowy interfejs z przyciskami.

swift
// AppDelegate — rejestracja kategorii i akcji
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

    let replyAction = UNTextInputNotificationAction(
        identifier: "reply",
        title: "Odpowiedz",
        options: [.authenticationRequired])

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "Lubię to",
        options: [])

    let category = UNNotificationCategory(
        identifier: "social_post",
        actions: [replyAction, likeAction],
        intentIdentifiers: [],
        options: [])

    UNUserNotificationCenter.current()
        .setNotificationCategories([category])
    return true
}

Service Extension do pobierania obrazu

Po otrzymaniu powiadomienia push z kategorią „social_post” i URL obrazu w niestandardowym polu, aktywuje się Service Extension. Rozszerzenie pobiera obraz przez sieć, tworzy UNNotificationAttachment z unikalnym identyfikatorem i dodaje go do treści. Ważne jest sprawdzenie rozmiaru pobranego pliku — jeśli przekracza 10 MB, attachment nie zostanie utworzony, a system wyświetli powiadomienie bez multimediów.

swift
class NotificationService: UNNotificationServiceExtension {

    override func didReceive(
        _ request: UNNotificationRequest,
        withContentHandler contentHandler:
        @escaping (UNNotificationContent) -> Void
    ) {
        let content = (request.content.mutableCopy()
            as! UNMutableNotificationContent)
        guard let urlString = content.userInfo["media-url"]
            as? String,
            let url = URL(string: urlString)
        else { contentHandler(request.content); return }

        URLSession.shared.downloadTask(with: url) {
            location, _, _ in
            guard let location = location else {
                contentHandler(content); return }
            let attachment = try! UNNotificationAttachment(
                identifier: "media", url: location,
                options: [UNNotificationAttachmentOptionsTypeHintKey:
                    "jpg"])
            content.attachments = [attachment]
            contentHandler(content)
        }.resume()
    }
}

Testowanie Rich Notification

Do testowania Rich Notification bez serwera użyj symulatora iOS i wysyłaj push przez terminal za pomocą xcrun simctl push. W payloadzie należy określić mutable-content: 1, aby aktywować Service Extension oraz category do wyświetlania akcji. Polecenie uruchamia push z pliku JSON bezpośrednio na wybrany symulator, co pozwala na szybkie iteracje bez konfigurowania infrastruktury serwerowej.

Content Extension i niestandardowy interfejs

UNNotificationContentExtension pozwala całkowicie zastąpić standardowy interfejs powiadomienia dowolnym widokiem UIKit lub SwiftUI. Rozszerzenie aktywuje się, gdy użytkownik rozszerza powiadomienie (force touch lub przesunięcie w dół) i może zawierać przyciski, suwaki, animacje i inne komponenty UI. Rozmiar interfejsu dostosowuje się do treści za pomocą Auto Layout.

Storyboard i SwiftUI w Content Extension

Content Extension opiera się na storyboard z widokiem dziedziczącym po UIViewController. Widok SwiftUI jest integrowany przez UIHostingController od iOS 16, co pozwala na stosowanie nowoczesnych podejść do budowania interfejsu. Dla wstecznej kompatybilności z iOS 14–15 zaleca się używanie UIKit z plikami xib. Interfejs otrzymuje zmodyfikowaną treść z Service Extension przez UNNotificationContent.

Obsługa akcji użytkownika

Content Extension implementuje protokół UNNotificationContentExtension z metodą didReceive response. UNNotificationResponse zawiera informacje o klikniętym przycisku lub wprowadzonym tekście. Rozszerzenie może zaktualizować interfejs bez zamykania powiadomienia lub wywołać completion handler w celu jego zamknięcia. Pozwala to tworzyć scenariusze szybkiej interakcji, na przykład „polubienie” z wizualnym sprzężeniem zwrotnym bezpośrednio w powiadomieniu.

Zalecenia projektowe

Apple zaleca, aby Content Extension był zwięzły i funkcjonalny, unikając zbędnych elementów. Maksymalna wysokość rozszerzonego powiadomienia wynosi około 400 punktów, po czym treść jest przewijana. Używaj systemowych czcionek i odstępów dla spójności z innymi powiadomieniami. Testuj na różnych rozmiarach ekranu, aby upewnić się, że interfejs poprawnie wyświetla się zarówno na iPhone, jak i iPad.

Często zadawane pytania

Jaki jest maksymalny rozmiar obrazu w Rich Notification?

Maksymalny rozmiar jednego załącznika multimedialnego wynosi 10 MB. Po przekroczeniu limitu UNNotificationAttachment nie zostanie utworzony, a powiadomienie wyświetli się bez multimediów. Zaleca się optymalizację obrazów do 1–3 MB dla szybkiego pobierania w Service Extension.

Czy Rich Notification działa na wszystkich modelach iPhone?

Rich Notification jest obsługiwane na wszystkich urządzeniach z iOS 10 i nowszym, w tym iPhone 5s i nowszych. Content Extension z niestandardowym UI jest dostępny od iOS 12. SwiftUI w Content Extension — od iOS 16. Na starszych wersjach powiadomienie wyświetla się w standardowej formie.

Czy można używać GIF w Rich Notification?

Tak, animowane GIF są obsługiwane od iOS 12. GIF jest pobierany przez UNNotificationAttachment jako zwykły obraz i automatycznie odtwarzany podczas przeglądania powiadomienia. Rozmiar GIF jest ograniczony do tych samych 10 MB co inne formaty.

Ile przycisków można dodać do powiadomienia?

Maksymalnie 4 akcje na jedno powiadomienie podczas rejestracji kategorii. Przy większej liczbie system wyświetla pierwsze 4, pozostałe ignoruje. Zaleca się używanie 2–3 przycisków dla optymalnego UX — zbyt wiele opcji przeciąża interfejs.

Czy potrzebny jest serwer do wysyłania Rich Notification?

Tak, serwer musi wysyłać push przez APNS (Apple Push Notification service) z payloadem JSON zawierającym URL pliku multimedialnego w niestandardowym polu i flagą mutable-content: 1. Serwer określa również category do aktywacji Content Extension i akcji.

Podsumowanie

  • Rich Notification — powiadomienie push iOS z załącznikami multimedialnymi, przyciskami interaktywnymi i niestandardowym UI, zwiększające zaangażowanie użytkowników.
  • Obsługiwane multimedia — obrazy JPEG/PNG/GIF, wideo MP4/MOV (do 30 s), audio MP3/AAC/WAV z limitem 10 MB na plik.
  • Service Extension pobiera multimedia z URL z payloadu i dodaje UNNotificationAttachment do treści powiadomienia.
  • Akcje interaktywne — do 4 przycisków na kategorię, w tym wprowadzanie tekstu przez UNTextInputNotificationAction.
  • Content Extension zastępuje standardowy interfejs niestandardowym widokiem UIKit/SwiftUI z dowolnymi elementami.
  • Content Extension implementuje protokół UNNotificationContentExtension z metodą didReceive do obsługi kliknięć i aktualizacji UI w czasie rzeczywistym.
  • Rich Notification wymaga konfiguracji na wszystkich poziomach: serwer (APNS), Service Extension (pobieranie multimediów) i AppDelegate (rejestracja kategorii).

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.

Omów projekt

Przeczytaj również