Today Widget iOS genişlənməsidir ki, interaktiv məlumatı birbaşa Bildiriş Mərkəzində və ya “Bu gün” ekranında göstərir. İstifadəçi əsas tətbiqi açmadan aktual məlumatları — hava, valyuta məzənnəsi, təqvim — görür. Apple WWDC (2025) məlumatına görə, iOS 17-də interaktiv vidjetlərin tətbiqindən sonra WidgetKit istifadəsi 40% artıb. Today Widget məlumata sürətli giriş problemini həll edir: ekrana baxış — və istifadəçi tətbiqdə naviqasiya etmədən lazımi məlumatları alır.
Əsas məqamlar
Today Widget (həmçinin Bildiriş Mərkəzi vidjeti kimi tanınır) — tətbiqi işə salmadan ondan sıxılmış məlumat göstərən iOS interfeys elementidir. İstifadəçi vidjeti Kilid ekranında və ya əsas ekranda sola sürüşdürərək görür. Vidjet dinamik məlumatları — valyuta məzənnəsi, son xəbərlər, tapşırıq statusu, cihaz vəziyyətini göstərə bilər.
Tarixən Today Widget iOS 8-də Bildiriş Mərkəzinin genişlənməsi kimi Notification Center freymvorku vasitəsilə peyda olub. iOS 14-də Apple WidgetKit-i təqdim etdi — vidjetləri birbaşa iş masasına yerləşdirməyə imkan verən tamamilə yenidən işlənmiş arxitektura. Müasir mənada Today Widget — “Bu gün” bölməsində (ilk ekranın solundakı vidjet bölməsi) yerləşdirilmiş WidgetKit vidjetidir.
Əsas məqsəd məlumata giriş vaxtını qısaltmaqdır. Tətbiqi açmaq, menyuda naviqasiya etmək və yüklənməni gözləmək əvəzinə, istifadəçi dərhal lazımi məlumatları görür. Apple (2024) məlumatına görə, vidjetləri olan tətbiqlər 27% daha yüksək istifadəçi cəlbi göstərir. Əlavə ssenarilər: sürətli hərəkətlər (tapşırığı yerinə yetirilmiş kimi qeyd etmək), monitorinq (nəbz, aktivlik) və status (batareya doldurulması, bildirişlər).
Today Widget tərtibatçısının iki yanaşması var: müasir WidgetKit (iOS 14+) və köhnə NCWidgetProviding genişlənməsi (iOS 8–13). Seçim dəstəklənən minimum iOS versiyasından asılıdır. WidgetKit yeni layihələr üçün tövsiyə olunur, NCWidgetProviding — köhnə cihazları dəstəkləmək üçün.
| Xüsusiyyət | WidgetKit | NCWidgetProviding |
|---|---|---|
| Minimal iOS | iOS 14 | iOS 8 |
| Yerləşmə | İş masası + “Bu gün” | Yalnız “Bu gün” |
| Ölçülər | Small, Medium, Large | Bir sabit |
| İnteraktivlik | iOS 17+ düymələr və açarlar | Yalnız tətbiqi açmaq |
| Yeniləmə | Timeline Provider | widgetPerformUpdate |
| Dil | SwiftUI | UIKit |
Tətbiqiniz iOS 14 və daha yenisini dəstəkləyirsə — WidgetKit istifadə edin. O, zəngin imkanlar təqdim edir: çoxsaylı ölçülər, intent vasitəsilə konfiqurasiya, iOS 17 ilə yenidən dizayn və dərin keçidlər. SwiftUI deklarativliyi vidjet kodunu yığcam və oxunaqlı edir. Timeline Provider enerji istehlakını nəzərə alaraq yeniləmə cədvəlini avtomatik idarə edir.
Yalnız iOS 9–13 dəstəyi tələb olunarsa. NCWidgetProviding tətbiqi daha sadədir — protokollu adi UIViewController. Lakin o məhduddur: tək ölçü, yalnız UIKit, konfiqurasiya yoxdur. Apple hətta köhnə layihələr üçün də WidgetKit-ə keçməyi tövsiyə edir, availability check istifadə edərək: iOS 14+ üçün WidgetKit, NCWidgetProviding isə fallback kimi.
Müasir iOS-da funksional təyinatına görə üç növ vidjet fərqləndirilir. Hər növ öz vəzifəsini həll edir və məlumatların və interfeysin layihələndirilməsinə fərqli yanaşma tələb edir. Təsnifat tətbiqiniz üçün düzgün arxitekturanı seçməyə kömək edir.
Statik və ya dövri yenilənən məlumatı göstərir: hava, tarix, valyuta məzənnəsi, server statusu. Məlumat Timeline Provider vasitəsilə cədvəl üzrə yenilənir. İstifadəçi vidjetlə qarşılıqlı əlaqədə olmur — yalnız oxuyur. Məlumat vidjetləri tətbiqi ən sadə olanlardır, toxunma hadisələrinin işlənməsini tələb etmir və əlavə icazələr olmadan fon rejimində işləyir.
iOS 17-dən etibarən WidgetKit vidjetlərdə düymələri, açarları və sürgüləri dəstəkləyir. İstifadəçi tətbiqi açmadan hərəkət edə bilər — tapşırığı qeyd etmək, musiqini dayandırmaq, işığı yandırmaq. Interactive Widgets hərəkəti əsas tətbiqə ötürmək üçün App Intents-dən istifadə edir. Məhdudiyyət: yalnız iş masasında, iOS 18-ə qədər “Bu gün” bölməsində deyil.
İstifadəçi sistem interfeysi vasitəsilə göstərilən məlumatı fərdiləşdirir — hava üçün şəhər, maliyyə üçün hesab, xəbərlər üçün kateqoriya seçir. Intents Extension və WidgetBundle-də konfiqurasiya vasitəsilə həyata keçirilir. Konfiqurasiya olunan vidjetlər hər bir istifadəçi üçün fərdiləşdirmə və məlumatın uyğunluğunu artırır.
WidgetKit istifadə edərək SwiftUI-də Today Widget-ın yaradılması prosesini nəzərdən keçirək. Vidjet avtomatik yeniləmə ilə cari valyuta məzənnəsini göstərəcək. WidgetKit üç komponent tələb edir: vidjet strukturu, konfiqurasiyalı Provider və göstərmək üçün 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 göstərilmək üçün məlumatların hazırlanmasına cavabdehdir. getTimeline metodu yeniləmə cədvəlini yaradır: növbəti yeniləmə 15 dəqiqədən sonra. TimelineProvider vidjetin serveri daimi sorğulamadan aktual məlumatları göstərməsinə zəmanət verir.
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-in Today Widget məlumatlarını idarə etmək üçün mərkəzi mexanizmidir. Köhnə NCWidgetProviding-də olduğu kimi dövri taymer yeniləməsi əvəzinə, WidgetKit timeline konsepsiyasından — vaxt damğalı qeydlər ardıcıllığından istifadə edir. Sistem cari qeydi müddəti bitənə qədər göstərir, sonra növbətiyə keçir və ya yenisini tələb edir.
Timeline üç siyasəti dəstəkləyir: .after(date) — növbəti yeniləmə göstərilən tarixdə; .never — vidjet WidgetCenter.reloadAllTimelines-ın açıq çağırışına qədər yenilənmir; .atEnd — son qeyd göstərildikdən sonra yeniləmə. Valyuta məzənnəsi olan Today Widget üçün 15–30 dəqiqə intervalı ilə .after siyasəti optimaldır. Enerji səmərəliliyi — WidgetKit-in əsas üstünlüyü: sistem bütün vidjetlərin yeniləmələrini bir pəncərədə qruplaşdırır.
Məlumat timeline-in müddəti bitmədən dəyişibsə (məsələn, istifadəçi tətbiqdə məzənnəni yeniləyibsə), WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget") çağırın. Bu, Provider-dən yeni timeline tələb edəcək və göstəriləni yeniləyəcək. WidgetCenter həmçinin bir əmrlə tətbiqin bütün vidjetlərini yenidən yükləməyə imkan verir — məlumat sinxronizasiyasından sonra rahatdır.
Apple Today Widget-ın dizaynına ciddi tələblər qoyur: məzmun məsafədən oxunaqlı, lazımsız elementlər olmadan və aydın iyerarxiya ilə olmalıdır. HIG (Human Interface Guidelines) tövsiyələrinin pozulması App Store-da dərc zamanı imtina səbəbidir. Üç prinsip: glanceability, consistency və hierarchy.
İstifadəçi vidjetə bir saniyədən az vaxt sərf edir. 3–4-dən çox məlumat elementi əlavə etməyin. Şrift — etiketlər üçün minimum 11pt, dəyərlər üçün 17pt. Əsas rəqəmlər üçün qalın yazı (Semibold) istifadə edin. Sürüşdürmədən qaçının — Today Widget sürüşdürülmür.
WidgetKit üç ölçünü dəstəkləyir: Small (170×170pt), Medium (364×170pt), Large (364×382pt). “Bu gün” bölməsində Today Widget üçün Medium ən çox yayılmış seçimdir. Adaptiv dizayn EnvironmentValues vasitəsilə: ölçüdən asılı olaraq məlumat sıxlığını dəyişdirin. Small — bir rəqəm, Medium — rəqəm + qrafik, Large — cədvəl.
Vidjet tərtibatçının əlavə hərəkətləri olmadan açıq və tünd temada düzgün göstərilməlidir — WidgetKit sistem rənglərini avtomatik qəbul edir. Vidjetlər üçün Dynamic Type məhduddur: şrift ölçüsü sabitdir, lakin oxunaqlı olmalıdır. UIColor.label və UIColor.systemBackground — hər iki temada mətn və fon üçün əsas rənglər.
Tez-tez verilən suallar
Hal-hazırda bu eyni WidgetKit vidjetidir. Fərq yalnız yerləşmədədir: iş masasında və “Bu gün” bölməsində (ilk ekranın solunda). iOS 14-ə qədər Today Widget yalnız Bildiriş Mərkəzində işləyən ayrıca NCWidgetProviding genişlənməsi idi. İndi bu vahid WidgetKit-dir.
WidgetKit vidjetləri taymerlə yeniləmir. Tərtibatçı Timeline Provider vasitəsilə cədvəl təyin edir: vaxt damğalı qeydlər. Sistem enerjiyə qənaəti nəzərə alaraq göstərilən vaxtda yeniləməyə zəmanət verir — bir neçə dəqiqə gecikdirə bilər. Minimum interval — 15 dəqiqə, lakin Apple saatda 1 dəfədən çox olmamağı tövsiyə edir.
Bəli, iOS 17-dən başlayaraq WidgetKit App Intents vasitəsilə düymələri, açarları və sürgüləri dəstəkləyir. İnteraktiv elementlər iPhone və iPad iş masasında işləyir. “Bu gün” bölməsində dəstək iOS 18-də peyda olub. iOS 16 və daha köhnələri üçün — yalnız vidjetə kliklədikdə tətbiqi açmaq.
Heç bir məhdudiyyət yoxdur. Tətbiq WidgetBundle vasitəsilə istənilən sayda vidjeti qeydiyyatdan keçirə bilər — hər biri öz növü, ölçüsü və konfiqurasiyası ilə. İstifadəçi onları ayrıca əlavə edir. İstifadəçi seçimini çox yükləməmək üçün 3–5 vidjetdən çox olmamaq tövsiyə olunur.
WidgetKit iOS Simulator-da tam dəstəklənir. Xcode-da WidgetKit target sxemini işə salın — vidjet simulyatorun iş masasında görünəcək. Timeline Provider-ı yoxlamaq üçün WidgetKit Debug Profile istifadə edin: Xcode → Product → Profile → WidgetKit Debug. Real davranışı fiziki cihazda yoxlayın.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun