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 (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.
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).
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.
| Xususiyat | WidgetKit | NCWidgetProviding |
|---|---|---|
| Minimal iOS | iOS 14 | iOS 8 |
| Joylashuv | Ish stoli + “Bugun” | Faqat “Bugun” |
| O'lchamlar | Small, Medium, Large | Bitta qattiq |
| Interaktivlik | iOS 17+ tugmalar va kalitlar | Faqat dasturni ochish |
| Yangilash | Timeline Provider | widgetPerformUpdate |
| Til | SwiftUI | UIKit |
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.
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.
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.
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.
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.
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 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.
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.
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 — 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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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.
Shuningdek o'qing