Today Widget: bu nima, turlari va bildirishnoma vidjetini yaratish

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

Today Widget — bu iOS kengaytmasi bo'lib, u interaktiv ma'lumotlarni to'g'ridan-to'g'ri Bildirishnomalar Markazida yoki “Bugun” ekranida ko'rsatadi. Foydalanuvchi asosiy dasturni ochmasdan dolzarb ma'lumotlarni — ob-havo, valyuta kursi, taqvim — ko'radi. Apple WWDC (2025) ma'lumotlariga ko'ra, iOS 17 da interaktiv vidjetlar joriy etilgandan so'ng WidgetKit dan foydalanish 40% ga oshgan. Today Widget ma'lumotga tezkor kirish muammosini hal qiladi: ekranga qarash — va foydalanuvchi dasturda navigatsiya qilmasdan kerakli ma'lumotlarni oladi.

Asosiy fikrlar

  • Today Widget — Bildirishnomalar Markazida ma'lumot ko'rsatish uchun iOS kengaytmasi.
  • WidgetKit — vidjetlar yaratish uchun zamonaviy freymvork (iOS 14+).
  • NCWidgetProviding — Notification Center kengaytmalari uchun protokol (iOS 8–13).
  • Auto Layout — vidjetni turli ekran o'lchamlariga moslashtirish.
  • Timeline Provider — WidgetKit da ma'lumotlarni yangilash mexanizmi.

Today Widget nima

Today Widget (shuningdek Bildirishnomalar Markazi vidjeti sifatida tanilgan) — dasturni ishga tushirmasdan undan siqilgan ma'lumotni ko'rsatuvchi iOS interfeys elementi. Foydalanuvchi vidjetni Qulf ekranida yoki asosiy ekranda chapga surish orqali ko'radi. Vidjet dinamik ma'lumotlarni — valyuta kursi, so'nggi yangiliklar, topshiriqlar holati, qurilma holatini ko'rsatishi mumkin.

Tarixiy jihatdan, Today Widget iOS 8 da Notification Center freymvorki orqali amalga oshirilgan Bildirishnomalar Markazi kengaytmasi sifatida paydo bo'ldi. iOS 14 da Apple WidgetKit ni taqdim etdi — vidjetlarni to'g'ridan-to'g'ri ish stoliga joylashtirish imkonini beruvchi to'liq qayta ishlangan arxitektura. Zamonaviy ma'noda Today Widget — “Bugun” bo'limida (birinchi ekranning chap tomonidagi vidjetlar bo'limi) joylashtirilgan WidgetKit vidjeti.

Today Widget nima uchun kerak

Asosiy maqsad — ma'lumotga kirish vaqtini qisqartirish. Dasturni ochish, menyuda navigatsiya qilish va yuklanishni kutish o'rniga, foydalanuvchi darhol kerakli ma'lumotlarni ko'radi. Apple (2024) ma'lumotlariga ko'ra, vidjetlari bo'lgan dasturlar 27% yuqori foydalanuvchi jalbini ko'rsatadi. Qo'shimcha stsenariylar: tezkor harakatlar (topshiriqni bajarilgan deb belgilash), monitoring (puls, faollik) va holat (batareya zaryadi, bildirishnomalar).

WidgetKit vs NCWidgetProviding

Today Widget dasturchisi ikkita yondashuvga ega: zamonaviy WidgetKit (iOS 14+) va eski NCWidgetProviding kengaytmasi (iOS 8–13). Tanlov qo'llab-quvvatlanadigan minimal iOS versiyasiga bog'liq. WidgetKit yangi loyihalar uchun tavsiya etiladi, NCWidgetProviding — eski qurilmalarni qo'llab-quvvatlash uchun.

XususiyatWidgetKitNCWidgetProviding
Minimal iOSiOS 14iOS 8
JoylashuvIsh stoli + “Bugun”Faqat “Bugun”
O'lchamlarSmall, Medium, LargeBitta qattiq
InteraktivlikiOS 17+ tugmalar va kalitlarFaqat dasturni ochish
YangilashTimeline ProviderwidgetPerformUpdate
TilSwiftUIUIKit

WidgetKit qachon ishlatiladi

Agar dasturingiz iOS 14 va undan yangisini qo'llab-quvvatlasa — WidgetKit dan foydalaning. U boy imkoniyatlarni taqdim etadi: bir nechta o'lchamlar, intent orqali konfiguratsiya, iOS 17 bilan qayta dizayn va chuqur havolalar. SwiftUI deklarativligi vidjet kodini ixcham va o'qiladigan qiladi. Timeline Provider energiya iste'molini hisobga olgan holda yangilanishlar jadvalini avtomatik boshqaradi.

NCWidgetProviding qachon ishlatiladi

Faqat iOS 9–13 ni qo'llab-quvvatlash talab qilinganda. NCWidgetProviding amalga oshirish osonroq — bu protokolli oddiy UIViewController. Biroq u cheklangan: bitta o'lcham, faqat UIKit, konfiguratsiya yo'q. Apple hatto eski loyihalar uchun ham availability check yordamida WidgetKit ga o'tishni tavsiya qiladi: iOS 14+ uchun WidgetKit, NCWidgetProviding esa fallback sifatida.

Today Widget turlari

Zamonaviy iOS da funksional maqsadiga ko'ra uch turdagi vidjet farqlanadi. Har bir tur o'z vazifasini hal qiladi va ma'lumotlar va interfeysni loyihalashga turlicha yondashishni talab qiladi. Tasniflash dasturingiz uchun to'g'ri arxitekturani tanlashga yordam beradi.

Axborot vidjetlari

Statik yoki davriy yangilanadigan ma'lumotlarni ko'rsatadi: ob-havo, sana, valyuta kursi, server holati. Ma'lumotlar Timeline Provider orqali jadval bo'yicha yangilanadi. Foydalanuvchi vidjet bilan o'zaro aloqada bo'lmaydi — faqat o'qiydi. Axborot vidjetlari — amalga oshirish eng sodda, teginish hodisalarini qayta ishlashni talab qilmaydi va qo'shimcha ruxsatlarsiz fon rejimida ishlaydi.

Interaktiv vidjetlar

iOS 17 dan boshlab WidgetKit vidjetlarda tugmalar, kalitlar va slayderlarni qo'llab-quvvatlaydi. Foydalanuvchi dasturni ochmasdan harakat qilishi mumkin — topshiriqni belgilash, musiqani to'xtatish, chiroqni yoqish. Interactive Widgets harakatni asosiy dasturga uzatish uchun App Intents dan foydalanadi. Cheklov: faqat ish stolida, iOS 18 gacha “Bugun” bo'limida emas.

Konfiguratsiya qilinadigan vidjetlar

Foydalanuvchi tizim interfeysi orqali ko'rsatiladigan ma'lumotlarni sozlaydi — ob-havo uchun shahar, moliya uchun hisob, yangiliklar uchun kategoriya tanlaydi. Intents Extension va WidgetBundle da konfiguratsiya orqali amalga oshiriladi. Konfiguratsiya qilinadigan vidjetlar har bir foydalanuvchi uchun shaxsiylashtirish va ma'lumotning dolzarbligini oshiradi.

WidgetKit vidjetini yaratish

WidgetKit dan foydalanib SwiftUI da Today Widget yaratish jarayonini ko'rib chiqamiz. Vidjet avtomatik yangilanish bilan joriy valyuta kursini ko'rsatadi. WidgetKit uchta komponentni talab qiladi: vidjet strukturasi, konfiguratsiyali Provider va ko'rsatish uchun View.

swift
import WidgetKit
import SwiftUI

@main
struct CurrencyWidget: Widget {
    let kind: String = "CurrencyWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            CurrencyWidgetEntryView(entry: entry)
        }
        .configurationDisplayName("Currency Rate")
        .description("Current USD/RUB exchange rate")
        .supportedFamilies([.systemSmall, .systemMedium])
    }
}

Provider ko'rsatish uchun ma'lumotlarni tayyorlashga javobgardir. getTimeline metodi yangilanish jadvalini yaratadi: keyingi yangilanish 15 daqiqadan so'ng. TimelineProvider vidjetning serverni doimiy so'roq qilmasdan dolzarb ma'lumotlarni ko'rsatishini kafolatlaydi.

swift
struct Provider: TimelineProvider {
    func getSnapshot(in context: Context,
                      completion: @escaping (CurrencyEntry) -> Void) {
        let entry = CurrencyEntry(date: Date(), rate: 92.5)
        completion(entry)
    }

    func getTimeline(in context: Context,
                     completion: @escaping (Timeline<CurrencyEntry>) -> Void) {
        let rate = CurrencyService().fetchRate()
        let entry = CurrencyEntry(date: Date(), rate: rate)
        let nextUpdate = Calendar.current.date(
            byAdding: .minute, value: 15, to: Date()
        ) ?? Date()
        let timeline = Timeline(entries: [entry], policy: .after(nextUpdate))
        completion(timeline)
    }
}

Timeline Provider va ma'lumotlarni yangilash

Timeline Provider — WidgetKit ning Today Widget ma'lumotlarini boshqarish uchun markaziy mexanizmi. Eski NCWidgetProviding dagi kabi davriy taymer yangilanishi o'rniga, WidgetKit timeline tushunchasidan — vaqt tamg'ali yozuvlar ketma-ketligidan foydalanadi. Tizim joriy yozuvni muddati tugaguncha ko'rsatadi, so'ngra keyingisiga o'tadi yoki yangisini so'raydi.

Yangilanish siyosatlari

Timeline uchta siyosatni qo'llab-quvvatlaydi: .after(date) — keyingi yangilanish belgilangan sanada; .never — vidjet WidgetCenter.reloadAllTimelines ning aniq chaqiruvigacha yangilanmaydi; .atEnd — oxirgi yozuv ko'rsatilgandan so'ng yangilanish. Valyuta kursi bilan Today Widget uchun 15–30 daqiqa interval bilan .after siyosati optimaldir. Energiya samaradorligi — WidgetKit ning asosiy ustunligi: tizim barcha vidjetlarning yangilanishlarini bitta oynada guruhlaydi.

WidgetCenter: dasturiy yangilash

Ma'lumot timeline muddati tugashidan oldin o'zgargan bo'lsa (masalan, foydalanuvchi dasturda kursni yangilagan bo'lsa), WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget") ni chaqiring. Bu Provider dan yangi timeline so'raydi va ko'rsatilishni yangilaydi. WidgetCenter shuningdek bir buyruq bilan dasturning barcha vidjetlarini qayta yuklash imkonini beradi — ma'lumotlarni sinxronizatsiya qilishdan keyin qulay.

Vidjet dizayni bo'yicha tavsiyalar

Apple Today Widget dizayniga qattiq talablar qo'yadi: tarkib masofadan o'qiladigan, keraksiz elementlarsiz va aniq iyerarxiya bilan bo'lishi kerak. HIG (Human Interface Guidelines) tavsiyalarini buzish App Store da nashr qilishda rad etish sababidir. Uch prinsip: glanceability, consistency va hierarchy.

Glanceability — bir qarashda o'qiladiganlik

Foydalanuvchi vidjetga bir soniyadan kam vaqt sarflaydi. 3–4 dan ortiq ma'lumot elementi qo'shmang. Shrift — yorliqlar uchun minimum 11pt, qiymatlar uchun 17pt. Asosiy raqamlar uchun qalin yozuv (Semibold) dan foydalaning. Aylantirishdan qoching — Today Widget aylanmaydi.

O'lchamlarga moslashish

WidgetKit uch o'lchamni qo'llab-quvvatlaydi: Small (170×170pt), Medium (364×170pt), Large (364×382pt). “Bugun” bo'limida Today Widget uchun Medium eng keng tarqalgan tanlovdir. Adaptiv dizayn EnvironmentValues orqali: o'lchamga qarab ma'lumot zichligini o'zgartiring. Small — bitta raqam, Medium — raqam + grafik, Large — jadval.

Qorong'u mavzu va Dynamic Type qo'llab-quvvatlash

Vidjet dasturchining qo'shimcha harakatlarisiz yorug' va qorong'u mavzuda to'g'ri ko'rsatilishi kerak — WidgetKit tizim ranglarini avtomatik qabul qiladi. Vidjetlar uchun Dynamic Type cheklangan: shrift o'lchami qattiq, ammo o'qiladigan bo'lishi kerak. UIColor.label va UIColor.systemBackground — ikkala mavzuda matn va fon uchun asosiy ranglar.

Tez-tez so'raladigan savollar

Today Widget ish stolidagi oddiy vidjetdan qanday farq qiladi?

Hozir bu bir xil WidgetKit vidjeti. Farq faqat joylashuvda: ish stolida va “Bugun” bo'limida (birinchi ekranning chap tomonida). iOS 14 gacha Today Widget faqat Bildirishnomalar Markazida ishlaydigan alohida NCWidgetProviding kengaytmasi edi. Hozir bu yagona WidgetKit.

Today Widget qanchalik tez-tez yangilanadi?

WidgetKit vidjetlarni taymer bilan yangilamaydi. Dasturchi Timeline Provider orqali jadvalni belgilaydi: vaqt tamg'ali yozuvlar. Tizim energiyani tejashni hisobga olgan holda belgilangan vaqtda yangilanishni kafolatlaydi — bir necha daqiqa kechiktirishi mumkin. Minimal interval — 15 daqiqa, lekin Apple soatiga 1 martadan ko'p bo'lmasligini tavsiya qiladi.

Today Widget ni interaktiv tugmalar bilan yasash mumkinmi?

Ha, iOS 17 dan boshlab WidgetKit App Intents orqali tugmalar, kalitlar va slayderlarni qo'llab-quvvatlaydi. Interaktiv elementlar iPhone va iPad ish stolida ishlaydi. “Bugun” bo'limida qo'llab-quvvatlash iOS 18 da paydo bo'ldi. iOS 16 va eskilari uchun — faqat vidjetni bosishda dasturni ochish.

Bitta dasturda nechta Today Widget bo'lishi mumkin?

Hech qanday cheklov yo'q. Dastur WidgetBundle orqali istalgan miqdordagi vidjetlarni ro'yxatdan o'tkazishi mumkin — har biri o'z turi, o'lchami va konfiguratsiyasi bilan. Foydalanuvchi ularni alohida qo'shadi. Foydalanuvchi tanlovini ortiqcha yuklamaslik uchun 3–5 vidjetdan ko'p bo'lmasligi tavsiya etiladi.

Today Widget ni simulyatorda qanday test qilish mumkin?

WidgetKit iOS Simulator da to'liq qo'llab-quvvatlanadi. Xcode da WidgetKit target sxemasini ishga tushiring — vidjet simulyatorning ish stolida paydo bo'ladi. Timeline Provider ni tekshirish uchun WidgetKit Debug Profile dan foydalaning: Xcode → Product → Profile → WidgetKit Debug. Haqiqiy xatti-harakatni jismoniy qurilmada tekshiring.

Xulosa

  • Today Widget — dasturni ochmasdan ma'lumot ko'rsatish uchun iOS kengaytmasi.
  • WidgetKit (iOS 14+) — zamonaviy freymvork, NCWidgetProviding — eski versiyalar uchun legacy.
  • Uch turdagi vidjet: axborot, interaktiv (iOS 17+), Intents orqali konfiguratsiya qilinadigan.
  • Timeline Provider taymerlar o'rniga yangilanish jadvalini boshqaradi.
  • Dizayn glanceable bo'lishi kerak: minimal elementlar, katta shrift, o'lchamlarga moslashish.
  • App Intents orqali interaktivlik — dasturni ochmasdan tugmalar va kalitlar.
  • WidgetCenter.shared.reloadTimelines — ma'lumot o'zgarganda dasturiy yangilash.

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