A Rich Notification az iOS push értesítések bővített formátuma, amely média mellékleteket, interaktív gombokat és egyedi felületeket tartalmaz a felhasználói élmény javítása érdekében. A szabványos szöveges értesítésekkel ellentétben a Rich Notification képeket, videókat és hangot tud megjeleníteni közvetlenül a bannerben vagy a zárolási képernyőn. A Apple Developer Documentation, 2026 szerint az UNNotificationAttachment akár 10 fájlt is támogat egy értesítésben, és automatikusan méretezi őket az optimális megjelenítéshez az összes eszközön.
Főbb pontok
Rich Notification egy iOS push értesítés, amely nemcsak szöveget, hanem média mellékleteket, interaktív elemeket és testreszabott felületet is tartalmaz. A „rich“ (gazdag) kifejezés azt a képességet tükrözi, hogy az értesítésbe képek, videók, hang, műveleti gombok és szöveges bevitel is belefoglalható, ami az egyszerű figyelmeztetést teljes értékű interaktív elemmé változtatja.
Az Apple az iOS 10-ben vezette be a Rich Notification támogatását a UserNotifications keretrendszerrel együtt. Előtte a push értesítések csak szöveget, hangot és jelvényt tartalmazhattak. Az iOS 10 bemutatta az UNNotificationServiceExtension-t és UNNotificationContentExtension-t, amelyek megnyitották a tartalom módosításának és az egyedi felületek létrehozásának lehetőségét. A későbbi verziókban hozzáadták a SwiftUI támogatást a Content Extension-ben, az animált GIF-eket és a továbbfejlesztett média méretezést.
A Rich Notification jelentősen növeli a felhasználói elköteleződést. Az Apple kutatásai szerint a képeket tartalmazó értesítések 30–40%-kal több interakciót kapnak a szövegesekhez képest. Egy termékkép, videó előnézet vagy gyorsválasz gomb lehetővé teszi a felhasználónak, hogy közvetlenül az értesítésből hozzon döntést anélkül, hogy megnyitná az alkalmazást. Ez lerövidíti a célművelethez vezető utat és javítja a felhasználói élményt.
UNNotificationAttachment három médiakategóriát támogat: képek, videók és hang. Minden típusnak megvannak a saját korlátai formátum, méret és időtartam tekintetében. A rendszer automatikusan méretezi a képeket az értesítés méretére, és 30 másodpercre korlátozza a videó időtartamát a teljesítmény optimalizálása érdekében.
| Média típusa | Támogatott formátumok | Maximális méret |
|---|---|---|
| Képek | JPEG, PNG, GIF, TIFF | 10 MB fájlonként |
| Videó | MPEG, MP4, MOV | 10 MB, akár 30 másodperc |
| Hang | MP3, AAC, WAV, CAF | 10 MB |
A képeket a rendszer automatikusan vágja és méretezi az értesítés kompakt és kibővített nézetében való megjelenítéshez. Animált GIF-ek iOS 12-től támogatottak és automatikusan lejátszódnak az értesítés megtekintésekor. Az ajánlott képméret 1024x1024 pixel, ami tiszta megjelenítést biztosít minden eszközön, beleértve a nagy képernyős iPad-et is.
A videó a Rich Notification-ben alapértelmezetten hang nélkül játszódik le — a felhasználó a lejátszó gombjával kapcsolhatja be a hangot. A videó maximális időtartama 30 másodperc, utána a lejátszás megáll. A hang mellékletek használhatók hangüzenetekhez vagy hang előnézetekhez, és az értesítés kibővített nézetben történő megérintésekor játszódnak le.
Interaktív műveletek lehetővé teszik a felhasználónak, hogy műveleteket hajtson végre közvetlenül az értesítésből anélkül, hogy megnyitná az alkalmazást. A műveletek az UNNotificationCategory és UNNotificationAction segítségével regisztrálódnak az alkalmazás indításakor. Minden művelet lehet háttérben futó (az alkalmazás megnyitása nélkül) vagy előtérben futó (megnyitja az alkalmazást a művelet befejezéséhez).
Az UNNotificationAction egy gomb címmel és opcionális módosítókkal, mint a requiresAuthentication (Face ID/Touch ID szükséges) vagy destructive (piros színnel kiemelve). UNTextInputNotificationAction kibővíti ezt a képességet egy szövegbeviteli mező hozzáadásával — ideális gyors válaszhoz üzenetre vagy megjegyzésre. A műveletek az értesítés hosszú megnyomásával vagy lefelé húzással jelennek meg.
Az értesítési kategóriák összekötik a tartalom típusát a rendelkezésre álló műveletek halmazával. A regisztrációs folyamat az AppDelegate-ben történik az alkalmazás indításakor az UNUserNotificationCenter.current().setNotificationCategories segítségével. A kategória a szerveren a JSON payload category mezőjében kerül megadásra, és a rendszer automatikusan alkalmazza a megfelelő műveletkészletet az értesítésre.
Amikor a felhasználó rákattint egy gombra vagy szöveget küld, a rendszer meghívja az UNUserNotificationCenterDelegate delegáltat a didReceive response metódussal. UNNotificationResponse tartalmazza a művelet azonosítóját és a beírt szöveget (UNTextInputNotificationAction esetén). Ezen információk alapján az alkalmazás végrehajtja a megfelelő üzleti logikát: üzenetet küld, megerősíti a műveletet vagy megnyit egy adott képernyőt.
Nézzük meg a Rich Notification létrehozásának teljes ciklusát: a kategóriák regisztrálásától az AppDelegate-ben a Service Extension-ben történő feldolgozáson át a megjelenítésig. AppDelegate regisztrálja a kategóriát gombokkal, a szerver elküldi az értesítést a kép URL-jével, a Service Extension letölti a médiát, és a Content Extension megjeleníti az egyedi felületet gombokkal.
// AppDelegate — kategóriák és műveletek regisztrálása
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Válasz",
options: [.authenticationRequired])
let likeAction = UNNotificationAction(
identifier: "like",
title: "Tetszik",
options: [])
let category = UNNotificationCategory(
identifier: "social_post",
actions: [replyAction, likeAction],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([category])
return true
}
A „social_post” kategóriájú és az egyedi mezőben kép URL-t tartalmazó push értesítés fogadása után a Service Extension aktiválódik. A bővítmény letölti a képet a hálózaton keresztül, létrehoz egy UNNotificationAttachment-et egyedi azonosítóval, és hozzáadja a tartalomhoz. Fontos ellenőrizni a letöltött fájl méretét — ha meghaladja a 10 MB-ot, a melléklet nem jön létre, és a rendszer média nélkül jeleníti meg az értesítést.
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()
}
}
A Rich Notification szerver nélküli teszteléséhez használja az iOS szimulátort, és küldjön push-t a terminálon keresztül a xcrun simctl push segítségével. A payload-ban kötelező megadni a mutable-content: 1-et a Service Extension aktiválásához és a category-t a műveletek megjelenítéséhez. A parancs egy JSON fájlból közvetlenül a kiválasztott szimulátorra küld push-t, lehetővé téve a gyors iterációt a szerver infrastruktúra beállítása nélkül.
UNNotificationContentExtension lehetővé teszi az értesítés szabványos felületének teljes lecserélését egy tetszőleges UIKit vagy SwiftUI nézetre. A bővítmény akkor aktiválódik, amikor a felhasználó kibontja az értesítést (force touch vagy lefelé húzás), és tartalmazhat gombokat, csúszkákat, animációkat és egyéb UI komponenseket. A felület mérete az Auto Layout segítségével igazodik a tartalomhoz.
A Content Extension egy storyboard-on alapul, egy UIViewController-ből származó nézettel. SwiftUI View iOS 16-tól integrálható az UIHostingController segítségével, ami lehetővé teszi a modern felületépítési megközelítések használatát. Az iOS 14–15-tel való visszafelé kompatibilitáshoz az UIKit használata javasolt xib fájlokkal. A felület a módosított tartalmat a Service Extension-től kapja az UNNotificationContent segítségével.
A Content Extension implementálja az UNNotificationContentExtension protokollt a didReceive response metódussal. UNNotificationResponse információkat tartalmaz a megnyomott gombról vagy a beírt szövegről. A bővítmény frissítheti a felületet az értesítés bezárása nélkül, vagy meghívhat egy completion handler-t a bezáráshoz. Ez lehetővé teszi gyors interakciós forgatókönyvek létrehozását, például „like” vizuális visszajelzéssel közvetlenül az értesítésben.
Az Apple azt javasolja, hogy a Content Extension legyen tömör és funkcionális, kerülve a felesleges elemeket. A kibontott értesítés maximális magassága körülbelül 400 pont, utána a tartalom görgethető. Használja a rendszer betűtípusait és térközeit az egységesség érdekében más értesítésekkel. Tesztelje különböző képernyőméreteken, hogy a felület helyesen jelenjen meg mind iPhone-on, mind iPad-en.
Gyakran Ismételt Kérdések
Egy média melléklet maximális mérete 10 MB. A határ túllépése esetén az UNNotificationAttachment nem jön létre, és az értesítés média nélkül jelenik meg. Javasolt a képek optimalizálása 1–3 MB-ra a gyors letöltés érdekében a Service Extension-ben.
A Rich Notification minden iOS 10 vagy újabb rendszerű eszközön támogatott, beleértve az iPhone 5s és újabb modelleket. A Content Extension egyedi UI-val iOS 12-től érhető el. SwiftUI a Content Extension-ben — iOS 16-tól. Régebbi verziókon az értesítés szabványos formában jelenik meg.
Igen, az animált GIF iOS 12-től támogatott. A GIF egy szokásos képként töltődik le az UNNotificationAttachment segítségével, és automatikusan lejátszódik az értesítés megtekintésekor. A GIF mérete ugyanarra a 10 MB-ra korlátozott, mint a többi formátum.
Maximum 4 művelet értesítésenként a kategória regisztrálásakor. Több esetén a rendszer az első 4-et jeleníti meg, a többit figyelmen kívül hagyja. Optimális UX-hez 2–3 gomb használata javasolt — túl sok opció túlterheli a felületet.
Igen, a szervernek push-t kell küldenie az APNS (Apple Push Notification service) segítségével egy JSON payload-dal, amely tartalmazza a médiafájl URL-jét egy egyedi mezőben és a mutable-content: 1 jelzőt. A szerver megadja a category-t is a Content Extension és a műveletek aktiválásához.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is