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
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.
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.
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.
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 media | Formate suportate | Dimensiune maximă |
|---|---|---|
| Imagini | JPEG, PNG, GIF, TIFF | 10 MB per fișier |
| Video | MPEG, MP4, MOV | 10 MB, până la 30 secunde |
| Audio | MP3, AAC, WAV, CAF | 10 MB |
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.
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ă.
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 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.
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.
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.
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.
// 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
}
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.
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()
}
}
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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.
Citiți și