Notification Content Extension — mohiyati, maxsus UI va iOS-da sozlash

Muallif: IT Sectr Nashr etilgan: 2026-06-15 O'qish vaqti: 9 daq

Notification Content Extension — standart push bildirishnoma shablonini to'liq maxsus foydalanuvchi interfeysi bilan almashtiradigan iOS kengaytma turi. Dasturchi bildirishnoma ichida rasmlar, audio pleyer, amal tugmalari, progress satrlari va maxsus animatsiyani ko'rsatish imkoniyatiga ega bo'lib, standart bannerni to'liq mini-ilovaga aylantiradi. WWDC 2025 ma'lumotlariga ko'ra, kengaytma UNNotificationContentExtension dan foydalanadi va bitta bildirishnomada 4 tagacha media qo'shimchani, shuningdek UNNotificationAction orqali interaktiv amallarni qayta ishlashni qo'llab-quvvatlaydi.

Asosiy ma'lumotlar

  • Notification Content Extension standart tizim shabloni o'rniga push bildirishnomalari uchun maxsus interfeys yaratadi
  • Arxitektura didReceive(_:with:) va didReceive(_:withCompletionHandler:) metodlari bilan UNNotificationContentExtension protokoliga asoslanadi
  • Kengaytma ilovani ochmasdan to'g'ridan-to'g'ri bildirishnoma ichida media qo'shimchalarni — rasmlar, audio va video — ko'rsatishi mumkin
  • Interaktiv bildirishnomalar qayta aloqa va matn kiritish bilan maxsus amallarni qo'llab-quvvatlaydi
  • Interfeys o'lchami cheklangan — maxsus bildirishnomaning maksimal balandligi iPhone-da 320 nuqta, iPad-da 352

Notification Content Extension nima

Notification Content Extension — iOS-da push bildirishnomasining ko'rinishini o'zgartiruvchi app extension. Standart sarlavha, xabar matni va tugmalari bo'lgan banner o'rniga Interface Builder-da yoki dasturiy ravishda UIKit yoki SwiftUI orqali to'liq ishlab chiqilgan interfeysni ko'rsatish mumkin.

Ko'rsatishdan oldin tarkibni o'zgartiruvchi Notification Service Extension dan farqli o'laroq, Content Extension faqat vizual taqdimot uchun javobgardir. Kengaytma barcha o'zgartirishlardan so'ng tayyor bildirishnomani oladi va uni qanday ko'rsatishni hal qiladi. Bu ikki turdagi bildirishnoma kengaytmalari orasidagi asosiy farqdir.

Kengaytma foydalanuvchi kengaytma jestini bajarganida — bildirishnomani pastga siljitganda yoki uni bosganda (qurilma modeliga qarab) faollashadi. iOS kengaytma jarayonini ishga tushiradi, ko'rsatilgan nib yoki storyboard dan boshqaruvchi yaratadi va bildirishnomani UNNotificationContentExtension orqali uzatadi.

Maxsus bildirishnoma interfeysini yaratish

Ish Xcode-da Notification Content Extension shabloni bilan yangi target qo'shish bilan boshlanadi. Xcode MainInterface.storyboard fayli va UIViewController dan meros olgan, UNNotificationContentExtension protokolini amalga oshiradigan sinf yaratadi.

Interfeys o'lchami va cheklovlari

Maxsus maydonning maksimal balandligi — iPhone-da 320 nuqta (katta ekranli modellar uchun) va iPad-da 352 nuqta. Bu chegaralardan chiqadigan tarkib kesiladi. Turli o'lchamlarga moslashish uchun Auto Layout va aylantiriladigan tarkib uchun UIScrollView dan foydalanish tavsiya etiladi. Kenglik har doim bildirishnomaning kengligiga teng va qurilma aylantirilganda avtomatik o'zgaradi.

Apple Human Interface Guidelines ogohlantiradi: bildirishnoma interfeysi qisqa bo'lishi va faqat bitta asosiy element — rasm, pleyer, xarita yoki tezkor kiritish formasini o'z ichiga olishi kerak. Ko'p sonli interaktiv elementlar foydalanuvchini charchatadi va o'zaro aloqani qiyinlashtiradi.

Asosiy ilova bilan aloqa

App Group — kengaytma va asosiy ilova o'rtasidagi yagona ma'lumot almashish mexanizmi. App Group ning umumiy katalogi orqali keshlangan rasmlar, tokenlar va sozlamalar uzatilishi mumkin. Jarayon izolyatsiyasi tufayli asosiy ilova API-siga to'g'ridan-to'g'ri qo'ng'iroqlar yoki uning UserDefaults ga kirish mumkin emas.

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 protokoli

UNNotificationContentExtension — maxsus bildirishnomaning hayot aylanishini belgilaydigan asosiy protokol. Protokol tarkibni olish, amallarni boshqarish va interfeysni boshqarish uchun metodlarni taqdim etadi.

didReceive:with: metodi

didReceive(_:with:) bildirishnoma olinganda chaqiriladi. Kengaytma UNNotification obyekti va media pleyerni boshqarish uchun UNNotificationContentExtensionMediaPlayPauseButtonType oladi. Bu metodda interfeysni sozlash — rasmni yuklash, pleyerni ishga tushirish yoki ma'lumotlarni ko'rsatish kerak. Tizim real vaqtda bildirishnoma yangilanganda bu metodni har safar chaqiradi.

Kengaytmaning bajarish uchun cheklangan vaqti borligini hisobga olish muhim — to'liq ko'rsatish sikli uchun taxminan 30 soniya. Agar interfeys bu vaqt ichida tayyor bo'lmasa, iOS tizim bildirishnomasini ko'rsatadi. Og'ir resurslar uchun — tarmoqdan rasmlarni yuklash, videoni dekodlash — App Group orqali oldindan keshlash bilan asinxron operatsiyalardan foydalanish tavsiya etiladi.

Media pleyerni boshqarish

Protokol play/pause tugmalari uchun ixtiyoriy metodlarni o'z ichiga oladi: mediaPlay, mediaPause va mediaPlayPauseButtonType. Agar bildirishnoma audio yoki video tarkibni o'z ichiga olgan bo'lsa, kengaytma tizim boshqaruv elementi bilan o'rnatilgan pleyerni ko'rsatishi mumkin. Tegishli tugma turi qaytarilganda iOS avtomatik ravishda kengaytmaning yuqori o'ng burchagiga ijro etish tugmasini qo'shadi.

Media qo'shimchalar va ularni qayta ishlash

UNNotificationAttachment — bildirishnomaga biriktirilgan media ma'lumotlarini o'z ichiga olgan obyekt. Rasmlar, audio fayllar va video serverda bildirishnoma yaratish bosqichida yoki UNNotificationAttachment orqali Notification Service Extension da qo'shiladi.

Qo'llab-quvvatlanadigan formatlar

Rasmlar uchun: JPEG, PNG, GIF, HEIF. Audio uchun: MP3, AAC, ALAC, WAV. Video uchun: MPEG-4, H.264, HEVC. Har bir qo'shimchaning maksimal hajmi — 50 MB, bitta bildirishnoma uchun 4 tagacha qo'shimcha. Tizim bildirishnoma ko'rsatilishidan oldin qo'shimchalarni fonda avtomatik yuklaydi va security-scoped resurslar orqali kengaytmaga mahalliy URL larga kirishni ta'minlaydi.

Apple ga ko'ra, kengaytma mediani mustaqil ravishda yuklamasligi kerak — UNNotificationAttachment tizim tomonidan yuklab olish tugagandan so'ng allaqachon mahalliy URL ni o'z ichiga oladi. Biroq, qo'shimcha o'z vaqtida yuklanmagan bo'lsa (masalan, zaif aloqada), kengaytma placeholder yoki muqobil matnni ko'rsatishi mumkin.

Security-scoped resurslar bilan ishlash

Har bir UNNotificationAttachment security-scoped URL ni taqdim etadi, kengaytma startAccessingSecurityScopedResource() orqali kirish olishi va stopAccessingSecurityScopedResource() orqali bo'shatishi kerak. Bu metodlar juft bo'lib chaqirilishi kerak — aks holda resurs bo'shatilmaydi va kirish huquqi oqishiga sabab bo'ladi.

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)

Interaktiv bildirishnomalar va amallar

Notification Content Extension maxsus interaktiv amallarni — bildirishnoma tarkibi ostida ko'rsatiladigan tugmalarni qo'llab-quvvatlaydi. Amallar UNNotificationCategory orqali bildirishnoma kategoriyasini yaratishda ro'yxatdan o'tkaziladi va buzuvchi, matnli yoki fon bo'lishi mumkin.

Amal turlari

UNNotificationAction — sarlavha va ixtiyoriy buzuvchanlik flagi bilan oddiy amal. UNTextInputNotificationAction — masalan, xabarga tez javob berish uchun matn kiritish maydoni bilan amal. Ikkala tur UNNotificationActionOptions.authenticationRequired opsiyasini qo'llab-quvvatlaydi — bajarishdan oldin qurilmani blokdan chiqarish talabi.

Kengaytma tanlangan amalni didReceive(_:withCompletionHandler:) metodi orqali oladi, bu yerda amal identifikatori va ixtiyoriy matn bilan UNNotificationResponse obyekti uzatiladi. Kengaytma javobni mustaqil qayta ishlashi yoki App Group ning umumiy konteyneri orqali asosiy ilovaga uzatishi mumkin.

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 beriladigan savollar

Notification Content Extension Service Extension dan qanday farq qiladi?

Content Extension bildirishnomaning vizual ko'rinishi uchun javobgar, Service Extension esa ko'rsatishdan oldin tarkibni o'zgartirish uchun. Content Extension Service Extension dan keyin ishlaydi va bildirishnomaning payload ini o'zgartira olmaydi.

Qaysi dasturlash tillari qo'llab-quvvatlanadi?

UIKit uchun Swift va Objective-C. iOS 16 dan boshlab SwiftUI ham NotificationContentView orqali o'lcham va konfiguratsiya modifikatorlari bilan bildirishnoma interfeysini yaratish uchun qo'llab-quvvatlanadi.

Notification Content Extension da SwiftUI ishlatish mumkinmi?

Ha, iOS 16 dan boshlab kengaytma UIHostingController orqali SwiftUI dan foydalanishi mumkin. Biroq, UIKit ning barcha vakolatlari — o'lcham, cheklovlar, security-scoped resurslar — saqlanib qoladi va SwiftUI tarkibiga qo'llaniladi.

Bitta bildirishnomaga nechta media qo'shimcha biriktirish mumkin?

Bitta bildirishnoma uchun 4 tagacha qo'shimcha. Har bir qo'shimcha 50 MB gacha. Rasmlar (JPEG, PNG, HEIF), audio (MP3, AAC) va video (MPEG-4, H.264) qo'llab-quvvatlanadi.

Kengaytmadan asosiy ilovaga ma'lumotlarni qanday uzatish mumkin?

App Group orqali — diskdagi umumiy katalog. App Group suffix li UserDefaults ham ishlaydi. Kengaytma jarayonlarining izolyatsiyasi tufayli asosiy ilova API siga to'g'ridan-to'g'ri qo'ng'iroqlar mumkin emas.

Xulosa

  • Notification Content Extension standart bildirishnoma interfeysini istalgan vizual elementlar bilan maxsus interfeysga almashtiradi
  • Arxitektura interfeysni yangilash uchun didReceive metodlari bilan UNNotificationContentExtension protokolidan foydalanadi
  • UNNotificationAttachment avtomatik fon yuklash va security-scoped kirish bilan media qo'shimchalarni ta'minlaydi
  • Interaktiv amallar UNNotificationAction orqali matn kiritish va buzuvchi operatsiyalarni qo'llab-quvvatlaydi
  • Interfeysning maksimal balandligi — iPhone-da 320 nuqta, tarkibni moslashtirish uchun UIScrollView tavsiya etiladi
  • Asosiy ilova bilan ma'lumot almashish — faqat App Group va diskdagi umumiy katalog orqali

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing