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 — 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.
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 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.
| Xususiyat | Content Extension | Service Extension |
|---|---|---|
| Maqsad | Bildirishnomaning moslashtirilgan UI | Ko'rsatishdan oldin kontentni o'zgartirish |
| Bajarilish vaqti | Foydalanuvchi bildirishnomani ko'rgancha | Fon rejimida 30 soniyagacha |
| Interfeys | To'liq UIKit UIView | Interfeys yo'q |
| API | UNNotificationContentExtension | UNNotificationServiceExtension |
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 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.
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.
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.
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 — 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.
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.
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)
}
}
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.
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.
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.
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.
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 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.
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.
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.
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.
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
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.
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.
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.
Media boshqaruvi uchun UNNotificationContentExtensionMediaPlayPauseButtonType bilan didReceive(_:with:) metodidan foydalaning yoki delegat orqali yangilashni so'rang. Yangi bildirishnomasiz kontentni to'liq yangilash mumkin emas.
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
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.