Notification Content Extension — bu nima, iOS uchun moslashtirilgan interfeysni qanday yaratish kerak

Muallif: IT Sectr Nashr etilgan: 2026-03-21 O'qish vaqti: 8 daq

Notification Content Extension — bu push bildirishnomasining standart interfeysini moslashtirilgan UIView bilan almashtirish imkonini beruvchi iOS kengaytmasi. Dasturchi kontentni ko'rsatish ustidan to'liq nazoratga ega bo'ladi: tasvirlar, videolar, animatsiyalar, moslashtirilgan shriftlar va interaktiv elementlar. Apple Developer, 2025 ma'lumotlariga ko'ra, Notification Content Extension bildirishnomaning cheklangan maydonida istalgan UIKit interfeysini qo'llab-quvvatlaydi.

Asosiy fikrlar

  • Notification Content Extension — push bildirishnomalari uchun moslashtirilgan UI uchun iOS kengaytmasi.
  • Kengaytma majburiy didReceive metodi bilan UNNotificationContentExtension protokolini amalga oshiradi.
  • Moslashtirilgan interfeys Storyboard da yaratiladi va istalgan UIKit komponentlarini o'z ichiga olishi mumkin.
  • Kengaytmaning maksimal hajmi — 50 MB va siqilgan holatda 12 MB dan oshmasligi kerak.
  • Kengaytma belgilangan categoryIdentifier bilan bildirishnomalar uchun faollashadi.

Notification Content Extension nima

Notification Content Extension — bu iOS dagi app kengaytmasi bo'lib, push bildirishnomasining standart ko'rsatish shablonini moslashtirilgan UIView bilan almashtiradi. Oddiy bildirishnomadan farqli o'laroq, kontent sarlavha, pastki sarlavha va matn bilan cheklangan, kengaytma esa istalgan UIKit interfeysini ko'rsatish imkonini beradi: koordinatali xarita, grafik, tasvirlar galereyasi yoki kiritish formasi.

Bu qanday ishlaydi

iOS belgilangan categoryIdentifier bilan push bildirishnomasini olganida, tizim ushbu kategoriya uchun kengaytma ro'yxatdan o'tganligini tekshiradi. Agar shunday bo'lsa — tizim kengaytmani alohida jarayonda ishga tushiradi va unga bildirishnoma kontentini uzatadi. Kengaytma standart interfeys o'rniga o'z interfeysini ko'rsatadi. Foydalanuvchi asosiy ilovani ochmasdan moslashtirilgan interfeys bilan o'zaro aloqada bo'ladi.

Notification Service Extension dan farqi

Notification Content Extension ni Notification Service Extension bilan aralashtirmaslik muhim. Service Extension bildirishnoma ko'rsatilishidan oldin kontentni qayta ishlaydi (qo'shimchalarni yuklab olish, shifrni ochish). Content Extension tayyor kontentni olgandan so'ng interfeysni almashtiradi. Ikkala kengaytma tandemda ishlashi mumkin: Service Extension ma'lumotlarni tayyorlaydi, Content Extension ularni ko'rsatadi.

XususiyatContent ExtensionService Extension
MaqsadBildirishnomaning moslashtirilgan UIKo'rsatishdan oldin kontentni o'zgartirish
Bajarilish vaqtiFoydalanuvchi bildirishnomani ko'rganchaFon rejimida 30 soniyagacha
InterfeysTo'liq UIKit UIViewInterfeys yo'q
APIUNNotificationContentExtensionUNNotificationServiceExtension

Kengaytmaning cheklovlari

Notification Content Extension cheklangan resurslar bilan izolyatsiya qilingan jarayonda ishlaydi. Kengaytma App Group dan tashqari, NSUserDefaults orqali asosiy ilova xotirasiga kirish imkoniga ega emas. Kengaytmaning hajmi ochilgan holatda 50 MB bilan cheklangan. Kontentni ko'rsatish vaqti ham cheklangan — agar kengaytma yangilanishni o'z vaqtida tugatmasa, tizim uni yopadi.

Xcode da Notification Content Extension yaratish

Xcode da kengaytma yaratish uchun Notification Content Extension turidagi yangi target qo'shish kerak. Xcode avtomatik ravishda UIViewController dan meros oladigan va UNNotificationContentExtension ni amalga oshiradigan kontroller bilan MainInterface.storyboard yaratadi.

Target-kengaytmani qo'shish

Xcode da File → New → Target → Notification Content Extension ni tanlang. Kengaytma nomini, tilini (Swift yoki Objective-C) belgilang va loyiha bir xil dasturchilar jamoasiga ulanganligiga ishonch hosil qiling. Target yaratilgandan so'ng, uchta faylli papka paydo bo'ladi: MainInterface.storyboard, Info.plist va kontroller fayli.

Info.plist ni sozlash

Kengaytmaning Info.plist da majburiy ravishda UNNotificationExtensionCategory kaliti bilan NSExtensionAttributes massivi ko'rsatiladi. Ushbu massiv kengaytma faollashadigan bildirishnoma kategoriyalarining identifikatorlarini o'z ichiga oladi. Ixtiyoriy UNNotificationExtensionInitialContentSizeRatio kaliti to'g'ri joylashtirish uchun moslashtirilgan interfeysning dastlabki tomon nisbatini belgilaydi.

Kengaytma papkalarining arxitekturasi

Target-kengaytmada toza arxitekturani saqlash tavsiya etiladi: kontrollerlar uchun alohida papka, moslashtirilgan ko'rinishlar uchun alohida. Kengaytma alohida binar fayl bo'lgani uchun, asosiy ilova kodi to'g'ridan-to'g'ri mavjud emas. Kodni ulashish uchun alohida framework yarating yoki ma'lumotlar uchun App Group dan foydalaning.

UNNotificationContentExtension protokolini amalga oshirish

UNNotificationContentExtension — Notification Content Extension dagi kontroller amalga oshirishi kerak bo'lgan protokol. Yagona majburiy metod bildirishnoma qabul qilinganda chaqiriladigan didReceive(_:with:). Kontroller bildirishnomani va ma'lumotlar bilan yangilanishi kerak bo'lgan tayyor view controller ni oladi.

Kontrollerning asosiy amalga oshirilishi

Kengaytmaning kontrolleri UIViewController dan meros olishi va UNNotificationContentExtension ni amalga oshirishi kerak. Storyboard yoki xib ushbu kontroller bilan bog'lanadi. Bildirishnoma qabul qilinganda, didReceive metodi kontentni uzatadi va kontroller o'z ko'rinishlarini yangilaydi.

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)
    }
}

Interfeys hajmini boshqarish

Tizim Info.plist dagi UNNotificationExtensionInitialContentSizeRatio kaliti va joriy kontent asosida moslashtirilgan interfeysning hajmini aniqlaydi. Minimal boshlang'ich hajm uchun ushbu kalitni 0.1 qiymatiga o'rnatish, so'ngra kontent yuklangandan keyin preferredContentSize orqali hajmini o'zgartirish tavsiya etiladi.

Interfeysni moslashtirish va interaktivlik

Notification Content Extension interfeys yaratishda to'liq erkinlik beradi. Istalgan UIKit komponentlaridan foydalanish mumkin: UITableView, MKMapView, WKWebView, UIStackView. Biroq, bildirishnomaning cheklangan maydonini hisobga olish va ishlashni optimallashtirish muhim.

Bildirishnomaga xarita qo'shish

Ommabop stsenariylardan biri bu joylashuv bilan xaritani ko'rsatishdir. Buning uchun kengaytmaning Storyboard iga MKMapView qo'shiladi va kontroller bildirishnoma kontentidan koordinatalarni uzatadi. Kengaytma target iga MapKit qo'shishni unutmaslik muhim. Xaritadan foydalanganda kengaytma xotira cheklovini hisobga oling — murakkab plitkalarni yuklash mavjud resurslardan oshib ketishi mumkin.

Animatsiyalar va o'tishlar

Notification Content Extension UIView animatsiyalarini qo'llab-quvvatlaydi, jumladan hajm o'zgartirish, harakatlantirish va elementlarning shaffofligi. Bildirishnomaning kengaytirilgan rejimiga kirganda kontentning paydo bo'lish animatsiyasini ishga tushirish mumkin. Animatsiyalar qisqa bo'lishi kerak (0.5 soniyagacha) va foydalanuvchining bildirishnoma bilan o'zaro aloqasiga xalaqit bermasligi kerak. Cheksiz animatsiyalardan saqlaning — ular batareyani sarflaydi va ishlashni pasaytiradi.

Moslashtirilgan interfeysda teginishlarni boshqarish

Kengaytma to'liq huquqli UIViewController bo'lgani uchun, jestlar va teginish boshqaruvchilarini qo'shishingiz mumkin. UIKit jestlari (UITapGestureRecognizer, UIButton) standart tarzda ishlaydi. Ilovani ochishni talab qiladigan harakatlar uchun kengaytma delegatidan yoki userNotificationCenter dan foydalaning. Interaktiv elementlar cheklangan maydonda qulay teginish uchun etarlicha katta bo'lishi kerak — Apple tavsiyalariga ko'ra minimum touch target hajmi 44x44 nuqtani tashkil qiladi.

Media va qo'shimchalar bilan ishlash

Media kontenti — Notification Content Extension ning asosiy imkoniyati. Bildirishnoma moslashtirilgan interfeysda ko'rsatiladigan tasvirlar, GIF, audio va video ni o'z ichiga olishi mumkin. Qo'shimchalar UNNotificationAttachment orqali yetkaziladi, u ham server tomonidan payload orqali, ham Notification Service Extension tomonidan yuklab olingandan so'ng qo'shilishi mumkin. JPEG, PNG, MPEG-4 va MP3 formatlari qo'llab-quvvatlanadi.

Kengaytmada mediani ko'rsatish

Tasvirni ko'rsatish uchun bildirishnoma kontentidan UNNotificationAttachment olish va uni mahalliy URL dan yuklash kifoya. Kengaytma faqat mahalliy fayllarga kirish imkoniga ega ekanligini yodda tutish muhim — uzoq resurslar oldindan Service Extension tomonidan yuklab olinishi kerak. Maksimal hajm — iOS 15+ da 50 MB, cheklov har bir keyingi yangilanish bilan oshiriladi. Bir nechta tasvirni qo'llab-quvvatlash uchun turli identifikatorlar bilan UNNotificationAttachment dan foydalaning va ularni UIPageViewController orqali ko'rsating.

Tasvirlarni yuklash va ko'rsatish

Moslashtirilgan interfeysda tasvirni ko'rsatish uchun kengaytma bildirishnoma kontentidan UNNotificationAttachment oladi va uni mahalliy URL dan yuklaydi. Qo'shimcha oldindan Notification Service Extension tomonidan yuklab olinishi kerak — Content Extension tarmoqqa kira olmaydi. Media qo'shimchasining maksimal hajmi — iOS 15+ da 50 MB, avvalgi versiyalarda cheklov 10 MB edi. Kengaytma qo'shimchaning yo'qligini to'g'ri boshqarishi va fallback-interfeysni ko'rsatishi kerak. Past rezolyutsiyali tasvirlarni oldindan yuklash uchun Service Extension tomonidan biriktirishdan oldin yaratilgan kichik versiyalardan foydalaning.

Bildirishnomada videoni ijro etish

iOS AVPlayerLayer orqali Notification Content Extension da video ijro etishni qo'llab-quvvatlaydi. Kengaytma to'g'ridan-to'g'ri bildirishnomada boshqaruv tugmalari bilan video pleyerni ko'rsatishi mumkin. Bu, ayniqsa, video kuzatish, striming yoki kontentni oldindan ko'rish ilovalari uchun foydali. Avtomatik ijro ovozsiz holda ruxsat etiladi, agar foydalanuvchi ushbu bildirishnomada media kontentni kutayotgan bo'lsa. Video pleyerni amalga oshirishda boshqaruv elementlarini qo'shing: play/pause, taraqqiyot paneli va yopish tugmasi. Videoning ovoz bilan avtomatik boshlanmasligiga ishonch hosil qiling — bu Apple ning foydalanuvchi tajribasi bo'yicha tavsiyalarini buzadi. Bir nechta tasvirdan iborat slayd-shou uchun UIView.transition orqali sahifa o'girish o'tish opsiyasi bilan animatsiyali o'tishdan foydalaning.

Kengaytma ishlashini optimallashtirish

Notification Content Extension taxminan 50 MB xotira limiti bilan cheklangan muhitda ishlaydi. Ishlashni optimallashtirish uchun tasvirlarni kech yuklashdan foydalaning, asosiy oqimda og'ir hisob-kitoblardan saqlaning va oddiy cheklovlar bilan Auto Layout ni qo'llang. Tasvirlarni qayta ishlash yoki ma'lumotlarni tahlil qilish kabi og'ir operatsiyalarni fon oqimlarida bajaring (DispatchQueue.global). Xotira limiti oshib ketganda tizim kengaytmani yopadi va foydalanuvchi standart bildirishnomani ko'radi. Nashr qilishdan oldin kengaytmani Instruments (Allocations va Time Profiler) orqali profillash, shuningdek, turli iOS versiyalaridagi haqiqiy qurilmalarda xotira sarfini tekshirish tavsiya etiladi.

Tez-tez beriladigan savollar

Notification Content Extension da SwiftUI dan foydalanish mumkinmi?

Ha, iOS 16 dan boshlab Notification Content Extension UIHostingController orqali SwiftUI ni qo'llab-quvvatlaydi. Biroq, UIKit kengaytmalarda SwiftUI ning cheklangan qo'llab-quvvatlanishi tufayli murakkab interfeyslar uchun barqarorroq tanlov bo'lib qolmoqda.

Nima uchun kengaytma mening bildirishnomam uchun faollashmaydi?

Bildirishnoma payload idagi categoryIdentifier kengaytmaning Info.plist idagi UNNotificationExtensionCategory bilan mos kelishini tekshiring. Shuningdek, kengaytmaning asosiy ilova target iga qo'shilgani va to'g'ri imzolanganiga ishonch hosil qiling.

Ma'lumotlarni asosiy ilovadan kengaytmaga qanday uzatish mumkin?

App Group dan foydalaning — umumiy saqlash (UserDefaults suite) yoki fayl konteyneri. Asosiy ilova va kengaytma bir xil dasturchilar guruhida bo'lishi va App Groups imkoniyati yoqilgan bo'lishi kerak.

Yangi bildirishnomasiz kengaytma kontentini qanday yangilash mumkin?

Media boshqaruvi uchun UNNotificationContentExtensionMediaPlayPauseButtonType bilan didReceive(_:with:) metodidan foydalaning yoki delegat orqali yangilashni so'rang. Yangi bildirishnomasiz kontentni to'liq yangilash mumkin emas.

Notification Content Extension ni qanday tuzatish mumkin?

Xcode da kengaytma target ini tanlang va simulyatorda ishga tushiring. Oddiy ilovadagi kabi lldb va breakpoint lardan foydalaning. Sinash uchun Firebase Console orqali push bildirishnomasini yuboring yoki mahalliy Pusher orqali.

Xulosa

  • Notification Content Extension — push bildirishnomalarini moslashtirilgan ko'rsatish uchun iOS kengaytmasi.
  • Kengaytma UNNotificationContentExtension ni amalga oshiradi va to'liq UIKit interfeysini taqdim etadi.
  • Mos keladigan categoryIdentifier bilan bildirishnomalar uchun faollashadi.
  • Istalgan UI komponentlarini qo'llab-quvvatlaydi: xaritalar, tasvirlar, videolar, animatsiyalar.
  • App Group orqali kirish bilan izolyatsiya qilingan jarayonda ishlaydi.
  • Hajm cheklovi — ochilgan kengaytma uchun 50 MB.
  • Media kontenti uchun Service Extension tomonidan tayyorlangan UNNotificationAttachment dan foydalaning.

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