Notification Content Extension — bu nədir, iOS üçün fərdi interfeys necə yaradılır

Müəllif: IT Sectr Dərc olunub: 2026-03-21 Oxuma vaxtı: 8 dəq

Notification Content Extension — push bildirişinin standart interfeysini fərdi UIView ilə əvəz etməyə imkan verən iOS genişlənməsidir. Tərtibatçı məzmunun göstərilməsinə tam nəzarət əldə edir: şəkillər, videolar, animasiyalar, fərdi şriftlər və interaktiv elementlər. Apple Developer, 2025-ə görə, Notification Content Extension məhdud bildiriş sahəsində istənilən UIKit interfeysini dəstəkləyir.

Əsas məqamlar

  • Notification Content Extension — push bildirişləri üçün fərdi UI təmin edən iOS genişlənməsi.
  • Genişlənmə məcburi didReceive metodu ilə UNNotificationContentExtension protokolunu tətbiq edir.
  • Fərdi interfeys Storyboard-da yaradılır və istənilən UIKit komponentlərini ehtiva edə bilər.
  • Genişlənmənin maksimum ölçüsü — 50 MB və sıxılmış formada 12 MB-dan çox olmamalıdır.
  • Genişlənmə müəyyən edilmiş categoryIdentifier ilə bildirişlər üçün aktivləşir.

Notification Content Extension nədir

Notification Content Extension — iOS-da push bildirişinin standart göstərilmə şablonunu fərdi UIView ilə əvəz edən app extension-dır. Adi bildirişdən fərqli olaraq, məzmun başlıq, alt başlıq və gövdə ilə məhdudlaşır, genişlənmə isə istənilən UIKit interfeysini göstərməyə imkan verir: koordinatları olan xəritə, qrafik, şəkil qalereyası və ya giriş forması.

Bu necə işləyir

iOS müəyyən edilmiş categoryIdentifier ilə push bildirişi aldıqda, sistem bu kateqoriya üçün genişlənmənin qeydiyyatdan keçib-keçmədiyini yoxlayır. Əgər keçibsə — sistem genişlənməni ayrıca prosesdə işə salır və ona bildirişin məzmununu ötürür. Genişlənmə standart interfeys əvəzinə öz interfeysini göstərir. İstifadəçi əsas tətbiqi açmadan fərdi interfeyslə qarşılıqlı əlaqə qurur.

Notification Service Extension-dən fərqi

Notification Content Extension-i Notification Service Extension ilə qarışdırmamaq vacibdir. Service Extension bildiriş göstərilməzdən əvvəl məzmunu emal edir (əlavələri endirmə, deşifrə). Content Extension hazır məzmunu aldıqdan sonra interfeysi əvəz edir. Hər iki genişlənmə tandemdə işləyə bilər: Service Extension məlumatları hazırlayır, Content Extension onları göstərir.

XüsusiyyətContent ExtensionService Extension
TəyinatBildirişin fərdi UIGöstərilməzdən əvvəl məzmunun dəyişdirilməsi
İcra müddətiİstifadəçi bildirişi gördükcəArxa planda 30 saniyəyə qədər
İnterfeysTam UIKit UIViewİnterfeys yoxdur
APIUNNotificationContentExtensionUNNotificationServiceExtension

Genişlənmənin məhdudiyyətləri

Notification Content Extension məhdud resurslarla təcrid olunmuş prosesdə işləyir. Genişlənmənin App Group istisna olmaqla, NSUserDefaults vasitəsilə əsas tətbiq yaddaşına girişi yoxdur. Genişlənmənin ölçüsü açılmış formada 50 MB ilə məhdudlaşır. Məzmunun göstərilməsi üçün vaxt da məhduddur — genişlənmə ağlabatan müddətdə yenilənməni tamamlamazsa, sistem onu bağlayır.

Xcode-da Notification Content Extension yaradılması

Xcode-da genişlənmə yaratmaq üçün Notification Content Extension tipli yeni target əlavə etmək lazımdır. Xcode avtomatik olaraq UIViewController-dən miras alan və UNNotificationContentExtension-i tətbiq edən kontrollerlə MainInterface.storyboard yaradacaq.

Target-genişlənmənin əlavə edilməsi

Xcode-da File → New → Target → Notification Content Extension seçin. Genişlənmənin adını, dilini (Swift və ya Objective-C) qeyd edin və layihənin eyni tərtibatçı komandasına qoşulduğundan əmin olun. Target yaradıldıqdan sonra üç faylı olan qovluq görünəcək: MainInterface.storyboard, Info.plist və kontroller faylı.

Info.plist-in konfiqurasiyası

Genişlənmənin Info.plist-də mütləq UNNotificationExtensionCategory açarı ilə NSExtensionAttributes massivi göstərilir. Bu massiv genişlənmənin aktivləşəcəyi bildiriş kateqoriyalarının identifikatorlarını ehtiva edir. İstəyə bağlı UNNotificationExtensionInitialContentSizeRatio açarı düzgün yerləşdirmə üçün fərdi interfeysin ilkin aspekt nisbətini təyin edir.

Genişlənmə qovluqlarının arxitekturası

Target-genişlənmədə təmiz arxitektura saxlamaq tövsiyə olunur: kontrollerlər üçün ayrıca qovluq, fərdi görünüşlər üçün ayrıca. Genişlənmə ayrıca binar fayl olduğundan, əsas tətbiqin kodu birbaşa əlçatan deyil. Kodu paylaşmaq üçün ayrıca framework yaradın və ya məlumatlar üçün App Group istifadə edin.

UNNotificationContentExtension protokolunun tətbiqi

UNNotificationContentExtension — Notification Content Extension-da kontrollerin tətbiq etməli olduğu protokoldur. Yeganə məcburi metod bildiriş qəbul edildikdə çağrılan didReceive(_:with:)-dir. Kontroller bildirişi və məlumatlarla yenilənməli olan hazır view controller-i alır.

Kontrollerin əsas tətbiqi

Genişlənmənin kontrolleri UIViewController-dən miras almalı və UNNotificationContentExtension-i tətbiq etməlidir. Storyboard və ya xib bu kontrollerlə əlaqələndirilir. Bildiriş qəbul edildikdə didReceive metodu məzmunu ötürür və kontroller öz görünüşlərini yeniləyir.

swift
import UIKit
import UserNotifications
import UserNotificationsUI

class CustomNotificationViewController: UIViewController {

    @IBOutlet var titleLabel: UILabel!
    @IBOutlet var customImageView: UIImageView!

    func didReceive(
        notification: UNNotification
    ) {
        let content = notification.request.content
        titleLabel.text = content.title
        loadAttachment(content.attachments.first)
    }

    private func loadAttachment(attachment: UNNotificationAttachment?) {
        guard let url = attachment?.URL else { return }
        if let image = UIImage(contentsOfFile: url.path) {
            customImageView.image = image
        }
    }
}

extension CustomNotificationViewController: UNNotificationContentExtension {
    func didReceive(
        notification: UNNotification
    ) {
        didReceive(notification: notification)
    }
}

İnterfeys ölçüsünün idarə edilməsi

Sistem Info.plist-də UNNotificationExtensionInitialContentSizeRatio açarı və cari məzmun əsasında fərdi interfeysin ölçüsünü müəyyən edir. Minimal ilkin ölçü üçün bu açarı 0.1 dəyərinə təyin etmək, sonra isə məzmun yükləndikdən sonra preferredContentSize vasitəsilə ölçüsünü dəyişmək tövsiyə olunur.

İnterfeysin fərdiləşdirilməsi və interaktivlik

Notification Content Extension interfeys yaratmada tam sərbəstlik verir. İstənilən UIKit komponentlərindən istifadə etmək olar: UITableView, MKMapView, WKWebView, UIStackView. Bununla belə, bildirişin məhdud sahəsini nəzərə almaq və performansı optimallaşdırmaq vacibdir.

Bildirişə xəritə əlavə edilməsi

Populyar ssenarilərdən biri yerləşmə ilə xəritənin göstərilməsidir. Bunun üçün genişlənmənin Storyboard-na MKMapView əlavə edilir, kontroller isə bildirişin məzmunundan koordinatları ötürür. Genişlənmənin target-ına MapKit əlavə etməyi unutmamaq vacibdir. Xəritədən istifadə edərkən genişlənmənin yaddaş limitini nəzərə alın — mürəkkəb mozaikaların yüklənməsi mövcud resursları aşa bilər.

Animasiyalar və keçidlər

Notification Content Extension UIView animasiyalarını dəstəkləyir, o cümlədən ölçü dəyişdirmə, hərəkət və elementlərin şəffaflığı. Bildirişin genişləndirilmiş rejiminə daxil olduqda məzmunun görünmə animasiyasını işə salmaq olar. Animasiyalar qısa olmalıdır (0.5 saniyəyə qədər) və istifadəçinin bildirişlə qarşılıqlı əlaqəsinə mane olmamalıdır. Sonsuz animasiyalardan çəkinin — onlar batareyanı boşaldır və performansı azaldır.

Fərdi interfeysdə toxunuşların idarə edilməsi

Genişlənmə tam hüquqlu UIViewController olduğundan, jestlər və toxunuş idarəediciləri əlavə edə bilərsiniz. UIKit jestləri (UITapGestureRecognizer, UIButton) standart şəkildə işləyir. Tətbiqin açılmasını tələb edən əməliyyatlar üçün genişlənmənin nümayəndəsindən və ya userNotificationCenter-dan istifadə edin. İnteraktiv elementlər məhdud sahədə rahat toxunma üçün kifayət qədər böyük olmalıdır — Apple tövsiyələrinə görə minimum touch target ölçüsü 44x44 nöqtədir.

Media və əlavələrlə iş

Media məzmunu — Notification Content Extension-ın əsas imkanıdır. Bildiriş fərdi interfeysdə göstərilən şəkillər, GIF, audio və video ehtiva edə bilər. Əlavələr UNNotificationAttachment vasitəsilə çatdırılır, o, həm server tərəfindən payload vasitəsilə, həm də Notification Service Extension tərəfindən endirildikdən sonra əlavə edilə bilər. JPEG, PNG, MPEG-4 və MP3 formatları dəstəklənir.

Genişlənmədə medianın göstərilməsi

Şəkli göstərmək üçün bildirişin məzmunundan UNNotificationAttachment əldə etmək və onu yerli URL-dən yükləmək kifayətdir. Yadda saxlamaq vacibdir ki, genişlənmə yalnız yerli fayllara çıxış imkanına malikdir — uzaq resurslar əvvəlcədən Service Extension tərəfindən endirilməlidir. Maksimum ölçü — iOS 15+-də 50 MB, məhdudiyyət hər sonrakı yeniləmə ilə artırılır. Bir neçə şəkli dəstəkləmək üçün müxtəlif identifikatorlarla UNNotificationAttachment istifadə edin və onları UIPageViewController vasitəsilə göstərin.

Şəkillərin yüklənməsi və göstərilməsi

Fərdi interfeysdə şəkli göstərmək üçün genişlənmə bildirişin məzmunundan UNNotificationAttachment əldə edir və onu yerli URL-dən yükləyir. Əlavə əvvəlcədən Notification Service Extension tərəfindən endirilməlidir — Content Extension-ın şəbəkəyə çıxışı yoxdur. Media əlavəsinin maksimum ölçüsü — iOS 15+-də 50 MB, daha əvvəlki versiyalarda məhdudiyyət 10 MB idi. Genişlənmə əlavənin olmamasını düzgün idarə etməli və fallback-interfeys göstərməlidir. Aşağı rezolyusiyalı şəkillərin ilkin yüklənməsi üçün Service Extension tərəfindən əlavə etmədən əvvəl yaradılmış miniatür versiyalardan istifadə edin.

Bildirişdə videonun oxudulması

iOS AVPlayerLayer vasitəsilə Notification Content Extension-da video oxudulmasını dəstəkləyir. Genişlənmə birbaşa bildirişdə idarəetmə düymələri olan video pleyeri göstərə bilər. Bu, xüsusilə videomüşahidə, streaming və ya məzmun önbaxış tətbiqləri üçün faydalıdır. Avtomatik oxutma səssiz olaraq icazəlidir, ancaq istifadəçinin bu bildirişdə media məzmunu gözləməsi şərtilə. Video pleyer tətbiq edərkən idarəetmə elementləri əlavə edin: play/pause, gedişat çubuğu və bağlama düyməsi. Videonun səslə avtomatik başlamadığından əmin olun — bu, Apple-ın istifadəçi təcrübəsi tövsiyələrini pozur. Bir neçə şəkildən ibarət slayd-şou üçün UIView.transition vasitəsilə səhifə çevirmə keçidi ilə animasiyalı keçid istifadə edin.

Genişlənmənin performans optimallaşdırılması

Notification Content Extension təxminən 50 MB yaddaş limiti ilə məhdud mühitdə işləyir. Performansı optimallaşdırmaq üçün şəkillərin gec yüklənməsindən istifadə edin, əsas thread-də ağır hesablamalardan çəkinin və sadə constraint-lərlə Auto Layout tətbiq edin. Şəkillərin emalı və ya məlumatların pars edilməsi kimi ağır əməliyyatları fon thread-lərində yerinə yetirin (DispatchQueue.global). Yaddaş limiti aşıldıqda sistem genişlənməni bağlayacaq və istifadəçi standart bildiriş görəcək. Nəşrdən əvvəl genişlənməni Instruments (Allocations və Time Profiler) vasitəsilə profilləşdirmək, həmçinin müxtəlif iOS versiyaları olan real cihazlarda yaddaş istehlakını yoxlamaq tövsiyə olunur.

Tez-tez verilən suallar

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

Bəli, iOS 16-dan etibarən Notification Content Extension UIHostingController vasitəsilə SwiftUI-ni dəstəkləyir. Bununla belə, UIKit genişlənmələrdə SwiftUI-nin məhdud dəstəyi səbəbindən mürəkkəb interfeyslər üçün daha sabit seçim olaraq qalır.

Niyə genişlənmə mənim bildirişim üçün aktivləşmir?

Bildirişin payload-dakı categoryIdentifier-in genişlənmənin Info.plist-dəki UNNotificationExtensionCategory ilə uyğun olduğunu yoxlayın. Həmçinin genişlənmənin əsas tətbiq target-ına əlavə edildiyindən və düzgün imzalandığından əmin olun.

Məlumatları əsas tətbiqdən genişlənməyə necə ötürmək olar?

App Group — ümumi yaddaş (UserDefaults suite) və ya fayl konteynerindən istifadə edin. Əsas tətbiq və genişlənmə eyni tərtibatçı qrupunda olmalı və App Groups imkanı aktiv edilməlidir.

Yeni bildiriş olmadan genişlənmənin məzmununu necə yeniləmək olar?

Media idarəetməsi üçün UNNotificationContentExtensionMediaPlayPauseButtonType ilə didReceive(_:with:) metodundan istifadə edin və ya nümayəndə vasitəsilə yeniləmə tələb edin. Yeni bildiriş olmadan məzmunun tam yenilənməsi mümkün deyil.

Notification Content Extension-ı necə debug etmək olar?

Xcode-da genişlənmə target-ını seçin və simulyatorda işə salın. Adi tətbiqdə olduğu kimi lldb və breakpoint-lərdən istifadə edin. Test etmək üçün Firebase Console vasitəsilə push bildirişi göndərin və ya yerli olaraq Pusher vasitəsilə.

Nəticə

  • Notification Content Extension — push bildirişlərinin fərdi göstərilməsi üçün iOS genişlənməsi.
  • Genişlənmə UNNotificationContentExtension-i tətbiq edir və tam UIKit interfeysi təmin edir.
  • Uyğun categoryIdentifier olan bildirişlər üçün aktivləşir.
  • İstənilən UI komponentlərini dəstəkləyir: xəritələr, şəkillər, videolar, animasiyalar.
  • App Group vasitəsilə girişlə təcrid olunmuş prosesdə işləyir.
  • Ölçü məhdudiyyəti — açılmış genişlənmə üçün 50 MB.
  • Media məzmunu üçün Service Extension tərəfindən hazırlanmış UNNotificationAttachment istifadə edin.

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