Today Widget: bu nədir, növləri və bildiriş vidjetinin yaradılması

Müəllif: IT Sectr Dərc olunub: 2026-06-15 Oxuma vaxtı: 10 dəq

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 — Bildiriş Mərkəzində məlumat göstərmək üçün iOS genişlənməsi.
  • WidgetKit — vidjetlər yaratmaq üçün müasir freymvork (iOS 14+).
  • NCWidgetProviding — Notification Center genişlənmələri üçün protokol (iOS 8–13).
  • Auto Layout — vidjetin müxtəlif ekran ölçülərinə uyğunlaşması.
  • Timeline Provider — WidgetKit-də məlumat yeniləmə mexanizmi.

Today Widget nədir

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.

Today Widget nəyə lazımdır

Ə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).

WidgetKit vs NCWidgetProviding

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ətWidgetKitNCWidgetProviding
Minimal iOSiOS 14iOS 8
Yerləşməİş masası + “Bu gün”Yalnız “Bu gün”
ÖlçülərSmall, Medium, LargeBir sabit
İnteraktivlikiOS 17+ düymələr və açarlarYalnız tətbiqi açmaq
YeniləməTimeline ProviderwidgetPerformUpdate
DilSwiftUIUIKit

WidgetKit nə vaxt istifadə olunmalı

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.

NCWidgetProviding nə vaxt istifadə olunmalı

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.

Today Widget növləri

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.

Məlumat vidjetləri

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.

İnteraktiv vidjetlər

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.

Konfiqurasiya olunan vidjetlər

İ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 vidjetinin yaradılması

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.

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 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.

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 və məlumat yeniləmə

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.

Yeniləmə siyasətləri

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.

WidgetCenter: proqram yeniləməsi

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.

Vidjet dizaynı üçün tövsiyələ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.

Glanceability — bir baxışda oxunaqlılıq

İ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.

Ölçülərə uyğunlaşma

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.

Tünd tema və Dynamic Type dəstəyi

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.labelUIColor.systemBackground — hər iki temada mətn və fon üçün əsas rənglər.

Tez-tez verilən suallar

Today Widget iş masasındakı adi vidjetdən nə ilə fərqlənir?

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.

Today Widget nə qədər tez-tez yenilənir?

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.

Today Widget-i interaktiv düymələrlə etmək mümkündürmü?

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.

Bir tətbiqdə neçə Today Widget ola bilər?

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.

Today Widget-i simulyatorda necə test etmək olar?

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ə

  • Today Widget — tətbiqi açmadan məlumat göstərmək üçün iOS genişlənməsi.
  • WidgetKit (iOS 14+) — müasir freymvork, NCWidgetProviding — köhnə versiyalar üçün legacy.
  • Üç növ vidjet: məlumat, interaktiv (iOS 17+), Intents vasitəsilə konfiqurasiya olunan.
  • Timeline Provider taymerlər əvəzinə yeniləmə cədvəlini idarə edir.
  • Dizayn glanceable olmalıdır: minimum elementlər, böyük şrift, ölçülərə uyğunlaşma.
  • App Intents vasitəsilə interaktivlik — tətbiqi açmadan düymələr və açarlar.
  • WidgetCenter.shared.reloadTimelines — məlumat dəyişdikdə proqram yeniləməsi.

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.

Layihəni müzakirə et

Həm də oxuyun