Notification Content Extension — mahiyyəti, fərdi UI və iOS-da konfiqurasiya

Müəllif: IT Sectr Dərc olunub: 2026-06-15 Oxuma vaxtı: 9 dəq

Notification Content Extension — standart push bildiriş şablonunu tamamilə fərdi istifadəçi interfeysi ilə əvəz edən iOS genişləndirmə növüdür. Developer bildiriş daxilində şəkillər, audio pleyer, hərəkət düymələri, gedişat çubuqları və fərdi animasiya göstərmək imkanı əldə edir, standart banneri tam hüquqlu mini-tətbiqə çevirir. WWDC 2025 məlumatlarına görə, genişləndirmə UNNotificationContentExtension istifadə edir və bir bildirişdə 4 media əlavəsinə, həmçinin UNNotificationAction vasitəsilə interaktiv hərəkətlərin işlənməsinə dəstək verir.

Əsas məqamlar

  • Notification Content Extension standart sistem şablonu əvəzinə push bildirişləri üçün fərdi interfeys yaradır
  • Arxitektura didReceive(_:with:) və didReceive(_:withCompletionHandler:) metodları ilə UNNotificationContentExtension protokoluna əsaslanır
  • Genişləndirmə tətbiqi açmadan birbaşa bildiriş daxilində media əlavələrini — şəkillər, audio və video — göstərə bilər
  • İnteraktiv bildirişlər geribildirim və mətn daxil etmə ilə fərdi hərəkətləri dəstəkləyir
  • İnterfeys ölçüsü məhduddur — fərdi bildirişin maksimum hündürlüyü iPhone-da 320 nöqtə, iPad-də 352-dir

Notification Content Extension nədir

Notification Content Extension — iOS-da push bildirişinin göstərilməsini dəyişdirən app extension-dir. Standart başlıq, mesaj gövdəsi və düymələri olan banner əvəzinə Interface Builder-də və ya proqramlı şəkildə UIKit və ya SwiftUI vasitəsilə tam hazırlanmış interfeys göstərilə bilər.

Göstərilmədən əvvəl məzmunu dəyişdirən Notification Service Extension-dən fərqli olaraq, Content Extension yalnız vizual təqdimata cavabdehdir. Genişləndirmə bütün dəyişikliklərdən sonra hazır bildirişi alır və onu necə göstərəcəyinə qərar verir. Bu, iki bildiriş genişləndirmə növü arasındakı əsas fərqdir.

Genişləndirmə istifadəçi genişləndirmə jestini yerinə yetirdikdə — bildirişi aşağı sürüşdürdükdə və ya üzərinə kliklədikdə (cihaz modelindən asılı olaraq) aktivləşir. iOS genişləndirmə prosesini işə salır, göstərilən nib və ya storyboard-dan nəzarətçi yaradır və bildirişi UNNotificationContentExtension vasitəsilə ötürür.

Fərdi bildiriş interfeysinin yaradılması

İş Xcode-da Notification Content Extension şablonu ilə yeni target əlavə etməklə başlayır. Xcode MainInterface.storyboard faylı və UIViewController-dən miras alan, UNNotificationContentExtension protokolunu tətbiq edən sinif yaradır.

İnterfeysin ölçüsü və məhdudiyyətləri

Fərdi sahənin maksimum hündürlüyü — iPhone-da 320 nöqtə (böyük ekranlı modellər üçün) və iPad-də 352 nöqtə. Bu həddən çıxan məzmun kəsilir. Müxtəlif ölçülərə uyğunlaşmaq üçün Auto Layout və sürüşdürülə bilən məzmun üçün UIScrollView istifadə etmək tövsiyə olunur. En həmişə bildirişin eninə bərabərdir və cihaz döndərildikdə avtomatik dəyişir.

Apple Human Interface Guidelines xəbərdarlıq edir: bildiriş interfeysi qısa olmalı və yalnız bir əsas element — şəkil, pleyer, xəritə və ya sürətli daxiletmə formu ehtiva etməlidir. Çoxsaylı interaktiv elementlər istifadəçini yükləyir və qarşılıqlı əlaqəni çətinləşdirir.

Əsas tətbiqlə əlaqə

App Group — genişləndirmə ilə əsas tətbiq arasında məlumat mübadiləsinin yeganə mexanizmidir. App Group-un ümumi kataloqu vasitəsilə keşlənmiş şəkillər, tokenlər və parametrlər ötürülə bilər. Proses izolyasiyası səbəbindən əsas tətbiqin API-nə birbaşa zənglər və ya onun UserDefaults-a giriş mümkün deyil.

swift
class NotificationViewController: UIViewController {

    func didReceive(
        _ notification: UNNotification
    ) {
        guard let attachment = notification
            .request.content.attachments.first()
        else { return }
        if attachment.url.startAccessingSecurityScopedResource() {
            imageView.image = UIImage(contentsOfFile:
                attachment.url.path)
            attachment.url.stopAccessingSecurityScopedResource()
        }
    }
}

UNNotificationContentExtension protokolu

UNNotificationContentExtension — fərdi bildirişin həyat dövrünü təyin edən əsas protokoldur. Protokol məzmunu əldə etmək, hərəkətləri idarə etmək və interfeysi idarə etmək üçün metodlar təqdim edir.

didReceive:with: metodu

didReceive(_:with:) bildiriş alındıqda çağırılır. Genişləndirmə UNNotification obyekti və media pleyerini idarə etmək üçün UNNotificationContentExtensionMediaPlayPauseButtonType alır. Bu metoddakı interfeysi konfiqurasiya etmək — şəkil yükləmək, pleyeri işə salmaq və ya məlumatları göstərmək lazımdır. Sistem real vaxt rejimində bildiriş yeniləndikdə bu metodu hər dəfə çağırır.

Nəzərə almaq vacibdir ki, genişləndirmənin icra üçün məhdud vaxtı var — tam göstərmə dövrü üçün təxminən 30 saniyə. İnterfeys bu müddətdə hazır olmazsa, iOS sistem bildirişini göstərəcək. Ağır resurslar üçün — şəbəkədən şəkil yükləmə, video dekodlaşdırma — App Group vasitəsilə əvvəlcədən keşləmə ilə asinxron əməliyyatlardan istifadə etmək tövsiyə olunur.

Media pleyerinin idarə edilməsi

Protokola play/pause düymələri üçün isteğe bağlı metodlar daxildir: mediaPlay, mediaPausemediaPlayPauseButtonType. Bildiriş audio və ya video məzmunu ehtiva edirsə, genişləndirmə sistem idarəetmə elementi ilə daxili pleyer göstərə bilər. iOS müvafiq düymə növü qaytarıldıqda genişləndirmənin yuxarı sağ küncünə avtomatik olaraq çalma düyməsi əlavə edir.

Media əlavələri və onların işlənməsi

UNNotificationAttachment — bildirişə əlavə edilmiş media məlumatlarını ehtiva edən obyektdir. Şəkillər, audio fayllar və video serverdə bildiriş yaradılarkən və ya UNNotificationAttachment vasitəsilə Notification Service Extension-də əlavə olunur.

Dəstəklənən formatlar

Şəkillər üçün: JPEG, PNG, GIF, HEIF. Audio üçün: MP3, AAC, ALAC, WAV. Video üçün: MPEG-4, H.264, HEVC. Hər əlavənin maksimum ölçüsü — 50 MB, bir bildiriş üçün 4 əlavəyə qədər. Sistem bildiriş göstərilməzdən əvvəl əlavələri fon rejimində avtomatik yükləyir və security-scoped resurslar vasitəsilə genişləndirməyə yerli URL-lərə giriş təmin edir.

Apple-a görə, genişləndirmə media-nı müstəqil yükləməməlidir — UNNotificationAttachment sistem tərəfindən yükləmə tamamlandıqdan sonra artıq yerli URL ehtiva edir. Lakin əlavə vaxtında yüklənməyibsə (məsələn, zəif əlaqədə), genişləndirmə placeholder və ya alternativ mətn göstərə bilər.

Security-scoped resurslarla iş

Hər UNNotificationAttachment security-scoped URL təqdim edir, genişləndirmə startAccessingSecurityScopedResource() vasitəsilə giriş əldə etməli və stopAccessingSecurityScopedResource() vasitəsilə azad etməlidir. Bu metodlar cüt-cüt çağırılmalıdır — əks halda resurs azad edilməyəcək və giriş hüququ sızmasına səbəb olacaq.

swift
let attachment = notification.request.content.attachments.first()
guard attachment.url.startAccessingSecurityScopedResource()
else { return }
defer { attachment.url.stopAccessingSecurityScopedResource() }
let data = try Data(contentsOf: attachment.url)
imageView.image = UIImage(data: data)

İnteraktiv bildirişlər və hərəkətlər

Notification Content Extension fərdi interaktiv hərəkətləri — bildiriş məzmunu altında göstərilən düymələri dəstəkləyir. Hərəkətlər UNNotificationCategory vasitəsilə bildiriş kateqoriyası yaradılarkən qeydə alınır və dağıdıcı, mətnli və ya fon ola bilər.

Hərəkət növləri

UNNotificationAction — başlıq və isteğe bağlı dağıdıcılıq flag-ı olan sadə hərəkət. UNTextInputNotificationAction — məsələn, mesaja tez cavab vermək üçün mətn daxiletmə sahəsi olan hərəkət. Hər iki növ UNNotificationActionOptions.authenticationRequired seçimini dəstəkləyir — yerinə yetirmədən əvvəl cihazın blokdan çıxarılması tələbi.

Genişləndirmə seçilmiş hərəkəti didReceive(_:withCompletionHandler:) metodu vasitəsilə alır, burada hərəkət identifikatoru və isteğe bağlı mətn ilə UNNotificationResponse obyekti ötürülür. Genişləndirmə cavabı müstəqil emal edə və ya App Group-un ümumi konteyneri vasitəsilə əsas tətbiqə ötürə bilər.

swift
let category = UNNotificationCategory(
    identifier: "message",
    actions: [
        UNTextInputNotificationAction(
            identifier: "reply",
            title: "Reply",
            options: .authenticationRequired
        ),
        UNNotificationAction(
            identifier: "mark_read",
            title: "Mark Read",
            options: .foreground
        )
    ],
    intentIdentifiers: []
)

Tez-tez verilən suallar

Notification Content Extension Service Extension-dən nə ilə fərqlənir?

Content Extension bildirişin vizual göstərilməsinə cavabdehdir, Service Extension isə göstərilmədən əvvəl məzmunun dəyişdirilməsinə. Content Extension Service Extension-dən sonra işləyir və bildirişin payload-unu dəyişə bilməz.

Hansı proqramlaşdırma dilləri dəstəklənir?

UIKit üçün Swift və Objective-C. iOS 16-dan etibarən SwiftUI də NotificationContentView vasitəsilə ölçü və konfiqurasiya modifierləri ilə bildiriş interfeysi yaratmaq üçün dəstəklənir.

Notification Content Extension-də SwiftUI istifadə etmək olarmı?

Bəli, iOS 16-dan etibarən genişləndirmə UIHostingController vasitəsilə SwiftUI istifadə edə bilər. Lakin UIKit-in bütün səlahiyyətləri — ölçü, məhdudiyyətlər, security-scoped resurslar — qalır və SwiftUI məzmununa tətbiq olunur.

Bir bildirişə neçə media əlavəsi əlavə etmək olar?

Bir bildiriş üçün 4 əlavəyə qədər. Hər əlavənin ölçüsü 50 MB-a qədər. Şəkillər (JPEG, PNG, HEIF), audio (MP3, AAC) və video (MPEG-4, H.264) dəstəklənir.

Genişləndirmədən əsas tətbiqə məlumatları necə ötürmək olar?

App Group vasitəsilə — diskdə ümumi kataloq. App Group suffix-li UserDefaults da işləyir. Genişləndirmə proseslərinin izolyasiyası səbəbindən əsas tətbiqin API-nə birbaşa zənglər mümkün deyil.

Nəticə

  • Notification Content Extension standart bildiriş interfeysini istənilən vizual elementlərlə fərdi interfeyslə əvəz edir
  • Arxitektura interfeysi yeniləmək üçün didReceive metodları ilə UNNotificationContentExtension protokolundan istifadə edir
  • UNNotificationAttachment avtomatik fon yükləməsi və security-scoped girişi ilə media əlavələrini təmin edir
  • İnteraktiv hərəkətlər UNNotificationAction vasitəsilə mətn daxiletmə və dağıdıcı əməliyyatları dəstəkləyir
  • İnterfeysin maksimum hündürlüyü — iPhone-da 320 nöqtə, məzmunun uyğunlaşdırılması üçün UIScrollView tövsiyə olunur
  • Əsas tətbiqlə məlumat mübadiləsi — yalnız App Group və diskdə ümumi kataloq vasitəsilə

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.

Layihəni müzakirə et

Həm də oxuyun