Rich Notification — istifadəçi təcrübəsini yaxşılaşdırmaq üçün media əlavələri, interaktiv düymələr və fərdi interfeysləri özündə birləşdirən genişləndirilmiş iOS push bildiriş formatıdır. Standart mətn bildirişlərindən fərqli olaraq, Rich Notification şəkilləri, videoları və audionu birbaşa bannerdə və ya bloklama ekranında göstərə bilər. Apple Developer Documentation, 2026-ya görə, UNNotificationAttachment bir bildirişdə 10 fayla qədər dəstəkləyir və onları bütün cihazlarda optimal göstərilmə üçün avtomatik miqyaslandırır.
Əsas məqamlar
Rich Notification — təkcə mətn deyil, həm də media əlavələri, interaktiv elementlər və fərdiləşdirilmiş interfeys ehtiva edən iOS push bildirişidir. "Rich" (zəngin) termini bildirişə şəkillər, videolar, audio, hərəkət düymələri və mətn daxiletməsi əlavə etmək imkanını əks etdirir ki, bu da sadə xəbərdarlığı tam hüquqlu interaktiv elementə çevirir.
Apple Rich Notification dəstəyini iOS 10-da UserNotifications framework ilə birlikdə tətbiq etdi. Bundan əvvəl push bildirişləri yalnız mətn, səs və badge ehtiva edə bilirdi. iOS 10 UNNotificationServiceExtension və UNNotificationContentExtension-i təqdim etdi ki, bunlar məzmunun dəyişdirilməsi və fərdi interfeyslərin yaradılması imkanını açdı. Sonrakı versiyalarda Content Extension-da SwiftUI dəstəyi, animasiya edilmiş GIF və təkmilləşdirilmiş media miqyaslandırması əlavə edildi.
Rich Notification istifadəçi cəlbini əhəmiyyətli dərəcədə artırır. Apple tədqiqatları göstərir ki, şəkilli bildirişlər mətn bildirişləri ilə müqayisədə 30–40% daha çox qarşılıqlı təsir alır. Məhsul şəkli, video önizləməsi və ya sürətli cavab düyməsi istifadəçiyə proqramı açmadan birbaşa bildirişdən qərar qəbul etməyə imkan verir. Bu, hədəf hərəkətə gedən yolu qısaldır və istifadəçi təcrübəsini yaxşılaşdırır.
UNNotificationAttachment üç media kateqoriyasını dəstəkləyir: şəkillər, videolar və audio. Hər bir növün format, ölçü və müddət baxımından öz məhdudiyyətləri var. Sistem performansın optimallaşdırılması üçün şəkilləri bildiriş ölçüsünə avtomatik miqyaslandırır və video müddətini 30 saniyə ilə məhdudlaşdırır.
| Media növü | Dəstəklənən formatlar | Maksimum ölçü |
|---|---|---|
| Şəkillər | JPEG, PNG, GIF, TIFF | 10 MB fayl başına |
| Video | MPEG, MP4, MOV | 10 MB, 30 saniyəyə qədər |
| Audio | MP3, AAC, WAV, CAF | 10 MB |
Şəkillər sistem tərəfindən bildirişin yığcam və genişləndirilmiş görünüşündə göstərilmək üçün avtomatik kəsilir və miqyaslandırılır. Animasiya edilmiş GIF iOS 12-dən etibarən dəstəklənir və bildirişə baxarkən avtomatik oynadılır. Tövsiyə olunan şəkil ölçüsü 1024x1024 pikseldir ki, bu da iPad daxil olmaqla bütün cihazlarda aydın göstərilməni təmin edir.
Rich Notification-da video defolt olaraq səssiz oynadılır — istifadəçi pleyerdəki düymə vasitəsilə səsi yandıra bilər. Maksimum video müddəti 30 saniyədir, bundan sonra oynatma dayandırılır. Audio əlavələr səsli mesajlar və ya səs önizləmələri üçün istifadə edilə bilər və bildirişə genişləndirilmiş görünüşdə toxunduqda oynadılır.
İnteraktiv hərəkətlər istifadəçiyə proqramı açmadan birbaşa bildirişdən əməliyyatlar yerinə yetirməyə imkan verir. Hərəkətlər proqram işə salındıqda UNNotificationCategory və UNNotificationAction vasitəsilə qeydiyyatdan keçirilir. Hər bir hərəkət fon (proqramı açmadan) və ya ön plan (əməliyyatı tamamlamaq üçün proqramı açır) ola bilər.
UNNotificationAction başlıq və requiresAuthentication (Face ID/Touch ID tələb edir) və ya destructive (qırmızı rənglə vurğulanır) kimi opsional modifierlərə malik düymədir. UNTextInputNotificationAction bu imkanı genişləndirərək mətn daxiletmə sahəsi əlavə edir — mesaj və ya şərhə sürətli cavab vermək üçün idealdır. Hərəkətlər bildirişə uzun basmaq və ya aşağı sürüşdürməklə göstərilir.
Bildiriş kateqoriyaları məzmun növünü mövcud hərəkətlər dəsti ilə əlaqələndirir. Qeydiyyat prosesi proqram işə salındıqda AppDelegate-də UNUserNotificationCenter.current().setNotificationCategories vasitəsilə həyata keçirilir. Kateqoriya serverdə JSON payload-un category sahəsində göstərilir və sistem avtomatik olaraq müvafiq hərəkətlər dəstini bildirişə tətbiq edir.
İstifadəçi düyməni kliklədikdə və ya mətn göndərdikdə, sistem didReceive response metodu ilə UNUserNotificationCenterDelegate-i çağırır. UNNotificationResponse hərəkət identifikatorunu və daxil edilmiş mətni (UNTextInputNotificationAction üçün) ehtiva edir. Bu məlumat əsasında proqram müvafiq biznes məntiqini yerinə yetirir: mesaj göndərir, hərəkəti təsdiqləyir və ya müəyyən ekranı açır.
Rich Notification yaratmağın tam dövrünü nəzərdən keçirək: AppDelegate-də kateqoriyaların qeydiyyatından Service Extension-da emal və göstərilməyə qədər. AppDelegate düymələrlə kateqoriyanı qeydiyyatdan keçirir, server şəkil URL-i ilə bildiriş göndərir, Service Extension media yükləyir və Content Extension düymələrlə fərdi interfeys göstərir.
// AppDelegate — kateqoriyaların və hərəkətlərin qeydiyyatı
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Cavab ver",
options: [.authenticationRequired])
let likeAction = UNNotificationAction(
identifier: "like",
title: "Bəyənirəm",
options: [])
let category = UNNotificationCategory(
identifier: "social_post",
actions: [replyAction, likeAction],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([category])
return true
}
"social_post" kateqoriyası və fərdi sahədə şəkil URL-i olan push bildirişi alındıqdan sonra Service Extension aktivləşir. Genişləndirmə şəkli şəbəkə üzərindən yükləyir, unikal identifikatorla UNNotificationAttachment yaradır və onu məzmuna əlavə edir. Yüklənmiş faylın ölçüsünü yoxlamaq vacibdir — əgər 10 MB-ı keçərsə, attachment yaradılmayacaq və sistem media olmadan bildiriş göstərəcək.
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()
}
}
Rich Notification-u server olmadan test etmək üçün iOS simulyatorundan istifadə edin və terminal vasitəsilə xcrun simctl push ilə push göndərin. Payload-da Service Extension-i aktivləşdirmək üçün mutable-content: 1 və hərəkətləri göstərmək üçün category qeyd edilməlidir. Komanda JSON faylından birbaşa seçilmiş simulyatora push göndərir ki, bu da server infrastrukturu qurmadan sürətli iterasiyaya imkan verir.
UNNotificationContentExtension standart bildiriş interfeysini tamamilə ixtiyari UIKit və ya SwiftUI görünüşü ilə əvəz etməyə imkan verir. Genişləndirmə istifadəçi bildirişi genişləndirdikdə (force touch və ya aşağı sürüşdürmə) aktivləşir və düymələr, sürgülər, animasiyalar və digər UI komponentləri ehtiva edə bilər. İnterfeys ölçüsü Auto Layout vasitəsilə məzmuna uyğunlaşır.
Content Extension UIViewController-dən miras alan görünüşlə storyboard-a əsaslanır. SwiftUI View iOS 16-dan etibarən UIHostingController vasitəsilə inteqrasiya edilir ki, bu da interfeys qurmaq üçün müasir yanaşmalardan istifadə etməyə imkan verir. iOS 14–15 ilə geriyə uyğunluq üçün xib faylları ilə UIKit istifadə etmək tövsiyə olunur. İnterfeys Service Extension-dan dəyişdirilmiş məzmunu UNNotificationContent vasitəsilə alır.
Content Extension didReceive response metodu ilə UNNotificationContentExtension protokolunu tətbiq edir. UNNotificationResponse kliklənmiş düymə və ya daxil edilmiş mətn haqqında məlumat ehtiva edir. Genişləndirmə bildirişi bağlamadan interfeysi yeniləyə və ya onu bağlamaq üçün completion handler-i çağıra bilər. Bu, birbaşa bildirişdə vizual geribildirimlə "bəyənmə" kimi sürətli qarşılıqlı təsir ssenariləri yaratmağa imkan verir.
Apple Content Extension-un yığcam və funksional olmasını, lazımsız elementlərdən qaçınmağı tövsiyə edir. Genişləndirilmiş bildirişin maksimum hündürlüyü təxminən 400 nöqtədir, bundan sonra məzmun sürüşdürülür. Digər bildirişlərlə vahidlik üçün sistem şriftlərindən və boşluqlardan istifadə edin. İnterfeysin həm iPhone, həm də iPad-də düzgün göstərildiyinə əmin olmaq üçün müxtəlif ekran ölçülərində test edin.
Tez-tez verilən suallar
Bir media əlavəsinin maksimum ölçüsü 10 MB-dır. Limit aşıldıqda UNNotificationAttachment yaradılmır və bildiriş media olmadan göstərilir. Service Extension-da sürətli yükləmə üçün şəkilləri 1–3 MB-a qədər optimallaşdırmaq tövsiyə olunur.
Rich Notification iOS 10 və daha yuxarı olan bütün cihazlarda, o cümlədən iPhone 5s və daha yenilərində dəstəklənir. Fərdi UI ilə Content Extension iOS 12-dən etibarən mövcuddur. Content Extension-da SwiftUI — iOS 16-dan. Köhnə versiyalarda bildiriş standart formada göstərilir.
Bəli, animasiya edilmiş GIF iOS 12-dən etibarən dəstəklənir. GIF adi şəkil kimi UNNotificationAttachment vasitəsilə yüklənir və bildirişə baxarkən avtomatik oynadılır. GIF-in ölçüsü digər formatlarla eyni 10 MB ilə məhdudlaşdırılıb.
Bir bildiriş üçün kateqoriya qeydiyyatında maksimum 4 hərəkət. Daha çox olduqda sistem ilk 4-ü göstərir, qalanlarını nəzərə almır. Optimal UX üçün 2–3 düymədən istifadə etmək tövsiyə olunur — çox variant interfeysi yükləyir.
Bəli, server fərdi sahədə media faylının URL-i və mutable-content: 1 bayrağı olan JSON payload ilə APNS (Apple Push Notification service) vasitəsilə push göndərməlidir. Server həmçinin Content Extension və hərəkətləri aktivləşdirmək üçün category-ni göstərir.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun