Rich Notification: ce este, conținut media și crearea notificărilor

Autor: IT Sectr Publicat: 2026-03-20 Timp de citire: 8 min

Rich Notification este un format extins de notificări push iOS care include atașamente media, butoane interactive și interfețe personalizate pentru îmbunătățirea experienței utilizatorului. Spre deosebire de notificările text standard, Rich Notification poate afișa imagini, video și audio direct în banner sau pe ecranul de blocare. Potrivit Apple Developer Documentation, 2026, UNNotificationAttachment suportă până la 10 fișiere într-o singură notificare și le scalează automat pentru afișare optimă pe toate dispozitivele.

Principalele puncte

  • Atașamente media — Rich Notification suportă imagini (JPEG, PNG, GIF), video (MP4, MOV până la 30 de secunde) și audio (MP3, AAC, WAV) prin UNNotificationAttachment.
  • Interactivitate — butoanele și introducerea textului se adaugă prin UNNotificationAction și UNTextInputNotificationAction, asociate cu categorii de notificări.
  • Service Extension — componentă obligatorie pentru descărcarea media: aceasta descarcă atașamentul din URL din payload și îl adaugă în conținut.
  • Content Extension — creează o interfață de notificare complet personalizată cu UI arbitrar, animații și gestionarea gesturilor.
  • Limite — dimensiunea maximă a atașamentului 10 MB, limita de memorie a extensiei 50 MB, timpul de procesare până la 30 de secunde.

Ce este Rich Notification

Rich Notification este o notificare push iOS care conține nu doar text, ci și atașamente media, elemente interactive și o interfață personalizată. Termenul „rich” (bogat) reflectă posibilitatea de a include în notificare imagini, video, audio, butoane de acțiune și introducere de text, transformând o simplă alertă într-un element interactiv complet.

Evoluția notificărilor în iOS

Apple a introdus suportul pentru Rich Notification în iOS 10 împreună cu framework-ul UserNotifications. Înainte de aceasta, notificările push puteau conține doar text, sunet și badge. iOS 10 a introdus UNNotificationServiceExtension și UNNotificationContentExtension, care au deschis posibilitatea modificării conținutului și creării de interfețe personalizate. În versiunile ulterioare, a fost adăugat suportul pentru SwiftUI în Content Extension, GIF-uri animate și scalarea îmbunătățită a media.

Avantaje față de notificările standard

Rich Notification crește semnificativ implicarea utilizatorilor. Cercetările Apple arată că notificările cu imagini primesc cu 30–40% mai multe interacțiuni comparativ cu cele text. O imagine a produsului, o previzualizare video sau un buton de răspuns rapid permit utilizatorului să ia o decizie direct din notificare, fără a deschide aplicația. Aceasta scurtează calea către acțiunea țintă și îmbunătățește experiența utilizatorului.

Tipuri de atașamente media și formatele lor

UNNotificationAttachment suportă trei categorii de media: imagini, video și audio. Fiecare tip are propriile limitări de format, dimensiune și durată. Sistemul scalează automat imaginile la dimensiunea notificării și limitează durata video la 30 de secunde pentru optimizarea performanței.

Tip mediaFormate suportateDimensiune maximă
ImaginiJPEG, PNG, GIF, TIFF10 MB per fișier
VideoMPEG, MP4, MOV10 MB, până la 30 secunde
AudioMP3, AAC, WAV, CAF10 MB

Imagini și GIF-uri animate

Imaginile sunt decupate și scalate automat de sistem pentru afișarea în vizualizarea compactă și extinsă a notificării. GIF-urile animate sunt suportate începând cu iOS 12 și se redau automat la vizualizarea notificării. Dimensiunea recomandată a imaginii este de 1024x1024 pixeli, ceea ce asigură o afișare clară pe toate dispozitivele, inclusiv pe iPad cu ecran mare.

Atașamente video și audio

Video-ul în Rich Notification se redă implicit fără sunet — utilizatorul poate activa sunetul printr-un buton din player. Durata maximă a video-ului este de 30 de secunde, după care redarea se oprește. Atașamentele audio pot fi utilizate pentru mesaje vocale sau previzualizări audio și se redau la atingerea notificării în vizualizarea extinsă.

Butoane interactive și acțiuni

Acțiunile interactive permit utilizatorului să efectueze operațiuni direct din notificare fără a deschide aplicația. Acțiunile sunt înregistrate prin UNNotificationCategory și UNNotificationAction la pornirea aplicației. Fiecare acțiune poate fi în fundal (fără a deschide aplicația) sau în prim-plan (deschide aplicația pentru finalizarea operațiunii).

UNNotificationAction și UNTextInputNotificationAction

UNNotificationAction reprezintă un buton cu titlu și modificatori opționali, precum requiresAuthentication (necesită Face ID/Touch ID) sau destructive (evidențiat cu roșu). UNTextInputNotificationAction extinde această capacitate adăugând un câmp text pentru introducere — ideal pentru răspuns rapid la un mesaj sau comentariu. Acțiunile se afișează la apăsarea lungă a notificării sau la glisarea în jos.

Înregistrarea categoriilor și acțiunilor

Categoriile de notificări leagă tipul de conținut de setul de acțiuni disponibile. Procesul de înregistrare se execută în AppDelegate la pornirea aplicației prin UNUserNotificationCenter.current().setNotificationCategories. Categoria este specificată pe server în câmpul category al payload-ului JSON, iar sistemul aplică automat setul corespunzător de acțiuni notificării.

Gestionarea clicurilor pe acțiuni

Când utilizatorul face clic pe un buton sau trimite text, sistemul apelează delegatul UNUserNotificationCenterDelegate cu metoda didReceive response. UNNotificationResponse conține identificatorul acțiunii și textul introdus (pentru UNTextInputNotificationAction). Pe baza acestor informații, aplicația execută logica de business corespunzătoare: trimite un mesaj, confirmă acțiunea sau deschide un ecran specific.

Implementarea Rich Notification în Swift

Să analizăm ciclul complet de creare a unei Rich Notification: de la înregistrarea categoriilor în AppDelegate până la procesarea în Service Extension și afișare. AppDelegate înregistrează categoria cu butoane, serverul trimite notificarea cu URL-ul imaginii, Service Extension descarcă media, iar Content Extension afișează interfața personalizată cu butoane.

swift
// AppDelegate — înregistrarea categoriilor și acțiunilor
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

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

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "Îmi place",
        options: [])

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

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

Service Extension pentru descărcarea imaginii

După primirea notificării push cu categoria „social_post” și URL-ul imaginii în câmpul personalizat, Service Extension se activează. Extensia descarcă imaginea prin rețea, creează un UNNotificationAttachment cu un identificator unic și îl adaugă în conținut. Este important să verificați dimensiunea fișierului descărcat — dacă depășește 10 MB, attachment-ul nu va fi creat, iar sistemul va afișa notificarea fără media.

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()
    }
}

Testarea Rich Notification

Pentru testarea Rich Notification fără server, utilizați simulatorul iOS și trimiteți push prin terminal cu xcrun simctl push. În payload, specificați obligatoriu mutable-content: 1 pentru activarea Service Extension și category pentru afișarea acțiunilor. Comanda trimite push dintr-un fișier JSON direct pe simulatorul selectat, permițând iterarea rapidă fără configurarea infrastructurii de server.

Content Extension și interfața personalizată

UNNotificationContentExtension permite înlocuirea completă a interfeței standard de notificare cu o vizualizare UIKit sau SwiftUI personalizată. Extensia se activează când utilizatorul extinde notificarea (force touch sau glisare în jos) și poate conține butoane, glisiere, animații și orice alte componente UI. Dimensiunea interfeței se adaptează la conținut prin Auto Layout.

Storyboard și SwiftUI în Content Extension

Content Extension se bazează pe un storyboard cu o vizualizare care moștenește UIViewController. Vizualizarea SwiftUI este integrată prin UIHostingController începând cu iOS 16, permițând utilizarea abordărilor moderne de construire a interfeței. Pentru compatibilitatea inversă cu iOS 14–15, se recomandă utilizarea UIKit cu fișiere xib. Interfața primește conținutul modificat de la Service Extension prin UNNotificationContent.

Gestionarea acțiunilor utilizatorului

Content Extension implementează protocolul UNNotificationContentExtension cu metoda didReceive response. UNNotificationResponse conține informații despre butonul apăsat sau textul introdus. Extensia poate actualiza interfața fără a închide notificarea sau poate apela un completion handler pentru a o închide. Aceasta permite crearea unor scenarii de interacțiune rapidă, cum ar fi „like” cu feedback vizual direct în notificare.

Recomandări de design

Apple recomandă ca Content Extension să fie concis și funcțional, evitând elementele redundante. Înălțimea maximă a notificării extinse este de aproximativ 400 de puncte, după care conținutul se derulează. Utilizați fonturile și spațierile sistemului pentru uniformitate cu celelalte notificări. Testați pe diferite dimensiuni de ecran pentru a vă asigura că interfața se afișează corect atât pe iPhone, cât și pe iPad.

Întrebări frecvente

Care este dimensiunea maximă a imaginii în Rich Notification?

Dimensiunea maximă a unui atașament media este 10 MB. La depășirea limitei, UNNotificationAttachment nu este creat, iar notificarea se afișează fără media. Se recomandă optimizarea imaginilor la 1–3 MB pentru descărcare rapidă în Service Extension.

Funcționează Rich Notification pe toate modelele de iPhone?

Rich Notification este suportat pe toate dispozitivele cu iOS 10 și mai nou, inclusiv iPhone 5s și mai recent. Content Extension cu UI personalizat este disponibil din iOS 12. SwiftUI în Content Extension — din iOS 16. Pe versiunile mai vechi, notificarea se afișează în forma standard.

Pot folosi GIF în Rich Notification?

Da, GIF-urile animate sunt suportate începând cu iOS 12. GIF-ul este descărcat prin UNNotificationAttachment ca o imagine obișnuită și se redă automat la vizualizarea notificării. Dimensiunea GIF-ului este limitată la aceiași 10 MB ca celelalte formate.

Câte butoane pot fi adăugate la o notificare?

Maximum 4 acțiuni per notificare la înregistrarea categoriei. Dacă sunt mai multe, sistemul afișează primele 4, ignorându-le pe restul. Se recomandă utilizarea a 2–3 butoane pentru UX optim — prea multe opțiuni încarcă interfața.

Este necesar un server pentru trimiterea Rich Notification?

Da, serverul trebuie să trimită push prin APNS (Apple Push Notification service) cu un payload JSON care conține URL-ul fișierului media într-un câmp personalizat și flag-ul mutable-content: 1. Serverul specifică, de asemenea, category pentru activarea Content Extension și a acțiunilor.

Rezumat

  • Rich Notification — notificare push iOS cu atașamente media, butoane interactive și UI personalizat, care crește implicarea utilizatorilor.
  • Media suportate — imagini JPEG/PNG/GIF, video MP4/MOV (până la 30 s), audio MP3/AAC/WAV cu limită de 10 MB per fișier.
  • Service Extension descarcă media de la URL din payload și adaugă UNNotificationAttachment în conținutul notificării.
  • Acțiuni interactive — până la 4 butoane per categorie, inclusiv introducere text prin UNTextInputNotificationAction.
  • Content Extension înlocuiește interfața standard cu o vizualizare personalizată UIKit/SwiftUI cu elemente arbitrare.
  • Content Extension implementează protocolul UNNotificationContentExtension cu metoda didReceive pentru gestionarea clicurilor și actualizarea UI în timp real.
  • Rich Notification necesită configurare la toate nivelurile: server (APNS), Service Extension (descărcare media) și AppDelegate (înregistrare categorii).

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.

Discutați proiectul

Citiți și