Today Widget: mi ez, típusai és értesítési widget létrehozása

Szerző: IT Sectr Megjelenés: 2026-06-15 Olvasási idő: 10 perc

A Today Widget egy iOS-bővítmény, amely interaktív információkat jelenít meg közvetlenül az Értesítési Központban vagy a „Ma” képernyőn. A felhasználó aktuális adatokat lát — időjárást, árfolyamot, naptárat — anélkül, hogy megnyitná a főalkalmazást. Az Apple WWDC (2025) adatai szerint a WidgetKit használata 40%-kal nőtt az interaktív widgetek iOS 17-ben történő bevezetése után. Today Widget megoldja a gyors információhoz jutás problémáját: egy pillantás a képernyőre — és a felhasználó megkapja a szükséges adatokat az alkalmazásban való navigáció nélkül.

Főbb pontok

  • Today Widget — iOS-bővítmény információk megjelenítéséhez az Értesítési Központban.
  • WidgetKit — modern keretrendszer widgetek létrehozásához (iOS 14+).
  • NCWidgetProviding — protokoll az Értesítési Központ bővítményeihez (iOS 8–13).
  • Auto Layout — a widget adaptálása különböző képernyőméretekhez.
  • Timeline Provider — adatfrissítési mechanizmus a WidgetKit-ben.

Mi az a Today Widget

Today Widget (más néven Értesítési Központ widget) — egy iOS interfészelem, amely tömörített információkat jelenít meg az alkalmazásból annak elindítása nélkül. A felhasználó a widgetet a képernyő balra húzásával látja a zárolási képernyőn vagy a kezdőképernyőn. A widget dinamikus adatokat jeleníthet meg — árfolyamot, legfrissebb híreket, feladatok állapotát, eszköz állapotát.

Történetileg a Today Widget az iOS 8-ban jelent meg az Értesítési Központ bővítményeként, a Notification Center keretrendszeren keresztül implementálva. Az iOS 14-gyel az Apple bemutatta a WidgetKit-et — egy teljesen áttervezett architektúrát, amely lehetővé teszi a widgetek közvetlenül az asztalra helyezését. A Today Widget modern értelemben — egy WidgetKit widget, amely a „Ma” szakaszban (a widgetek szakasza az első képernyőtől balra) található.

Miért van szükség a Today Widget-re

A fő cél az információhoz való hozzáférés idejének csökkentése. Ahelyett, hogy a felhasználó megnyitná az alkalmazást, navigálna a menüben és várna a betöltésre, azonnal látja a szükséges adatokat. Az Apple (2024) szerint a widgetekkel rendelkező alkalmazások 27%-kal magasabb felhasználói elköteleződést mutatnak. További forgatókönyvek: gyors műveletek (feladat befejezettként jelölése), monitorozás (pulzus, aktivitás) és állapot (akkumulátortöltés, értesítések).

WidgetKit kontra NCWidgetProviding

A Today Widget fejlesztőjének két megközelítése van: modern WidgetKit (iOS 14+) és a régi NCWidgetProviding bővítmény (iOS 8–13). A választás a támogatott minimális iOS-verziótól függ. WidgetKit új projektekhez ajánlott, NCWidgetProviding — régi eszközök támogatásához.

JellemzőWidgetKitNCWidgetProviding
Minimális iOSiOS 14iOS 8
ElhelyezésAsztal + „Ma”Csak „Ma”
MéretekSmall, Medium, LargeEgy rögzített
InteraktivitásiOS 17+ gombok és kapcsolókCsak alkalmazás megnyitása
FrissítésTimeline ProviderwidgetPerformUpdate
NyelvSwiftUIUIKit

Mikor használjuk a WidgetKit-et

Ha az alkalmazása támogatja az iOS 14-et és újabbat — használja a WidgetKit-et. Gazdag lehetőségeket kínál: több méret, konfiguráció intenten keresztül, újratervezés iOS 17-tel és mély linkek. A SwiftUI deklaratív jellege kompakt és olvasható kódot eredményez. A Timeline Provider automatikusan kezeli a frissítési ütemezést az energiafogyasztás figyelembevételével.

Mikor használjuk az NCWidgetProviding-et

Csak ha iOS 9–13 támogatása szükséges. Az NCWidgetProviding egyszerűbben implementálható — egy szokásos UIViewController protokollal. Azonban korlátozott: egy méret, csak UIKit, konfiguráció nélkül. Az Apple még a régi projektek esetében is a WidgetKit-re való áttérést ajánlja availability check használatával: WidgetKit iOS 14+, NCWidgetProviding fallbackként.

A Today Widget típusai

A modern iOS-ben három widgettípust különböztetünk meg funkcionális cél szerint. Minden típus megoldja a saját feladatát, és eltérő megközelítést igényel az adatok és az interfész tervezésében. Osztályozás segít kiválasztani a megfelelő architektúrát az alkalmazásához.

Információs widgetek

Statikus vagy időszakosan frissülő információkat jelenítenek meg: időjárás, dátum, árfolyam, szerver állapota. Az adatok a Timeline Provideren keresztül ütemezés szerint frissülnek. A felhasználó nem lép interakcióba a widgettel — csak olvassa. Az információs widgetek a legegyszerűbbek implementálni, nem igényelnek érintési események feldolgozását, és a háttérben működnek további engedélyek nélkül.

Interaktív widgetek

Az iOS 17-től kezdve a WidgetKit támogatja a gombokat, kapcsolókat és csúszkákat a widgetekben. A felhasználó műveletet hajthat végre — feladatot jelölhet, zenét szüneteltethet, lámpát kapcsolhat — az alkalmazás megnyitása nélkül. Interactive Widgets az App Intents használatával továbbítja a műveletet a főalkalmazásba. Korlátozás: csak az asztalon, nem a „Ma” szakaszban iOS 18-ig.

Konfigurálható widgetek

A felhasználó a rendszerinterfészen keresztül testreszabja a megjelenített adatokat — várost választ az időjáráshoz, számlát a pénzügyekhez, kategóriát a hírekhez. Intents Extension és konfiguráció a WidgetBundle-ben keresztül implementálható. A konfigurálható widgetek növelik a személyre szabottságot és az információk relevanciáját minden felhasználó számára.

WidgetKit widget létrehozása

Tekintsük át a Today Widget létrehozásának folyamatát SwiftUI-ben a WidgetKit használatával. A widget az aktuális árfolyamot jeleníti meg automatikus frissítéssel. WidgetKit három összetevőt igényel: a widget struktúráját, a Provider-t konfigurációval és a View-t a megjelenítéshez.

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])
    }
}

A Provider felelős az adatok megjelenítésre való előkészítéséért. A getTimeline metódus létrehozza a frissítési ütemezést: a következő frissítés 15 perc múlva. TimelineProvider garantálja, hogy a widget aktuális adatokat jelenítsen meg a szerver állandó lekérdezése nélkül.

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 és adatfrissítés

Timeline Provider — a WidgetKit központi mechanizmusa a Today Widget adatainak kezelésére. Az időszakos időzítős frissítés helyett (mint a régi NCWidgetProviding esetében), a WidgetKit a timeline koncepcióját használja — időbélyegzővel ellátott rekordok sorozatát. A rendszer az aktuális rekordot annak lejártáig jeleníti meg, majd átvált a következőre vagy újat kér.

Frissítési irányelvek

A timeline három irányelvet támogat: .after(date) — következő frissítés a megadott dátumon; .never — a widget nem frissül a WidgetCenter.reloadAllTimelines explicit meghívásáig; .atEnd — frissítés az utolsó rekord megjelenítése után. Árfolyamot megjelenítő Today Widget esetében a .after irányelv 15–30 perces intervallummal optimális. Energiahatékonyság — a WidgetKit kulcsfontosságú előnye: a rendszer az összes widget frissítését egyetlen ablakba csoportosítja.

WidgetCenter: programozott frissítés

Ha az adatok a timeline lejárta előtt megváltoztak (pl. a felhasználó frissítette az árfolyamot az alkalmazásban), hívja a WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget") metódust. Ez új timeline-t kér a Provider-től és frissíti a megjelenítést. WidgetCenter lehetővé teszi az alkalmazás összes widgetjének egyetlen paranccsal történő újratöltését is — kényelmes adatszinkronizálás után.

Widgetek tervezési ajánlásai

Az Apple szigorú követelményeket támaszt a Today Widget tervezésével szemben: a tartalomnak távolról olvashatónak, felesleges elemektől mentesnek és egyértelmű hierarchiájúnak kell lennie. A HIG (Human Interface Guidelines) ajánlásainak megsértése az App Store-ban történő közzétételkor elutasítási ok. Három alapelv: glanceability, consistency és hierarchy.

Glanceability — olvashatóság egy pillantásra

A felhasználó kevesebb mint egy másodpercet tölt a widgeten. Ne adjon hozzá 3–4-nél több adatelemet. Betűméret — minimum 11pt a címkékhez, 17pt az értékekhez. Használjon félkövér (Semibold) betűtípust a kulcsszámokhoz. Kerülje a görgetést — a Today Widget nem görgethető.

Alkalmazkodás a méretekhez

A WidgetKit három méretet támogat: Small (170×170pt), Medium (364×170pt), Large (364×382pt). A „Ma” szakaszban lévő Today Widget esetében a Medium a leggyakoribb választás. Adaptív tervezés EnvironmentValues segítségével: változtassa meg az információ sűrűségét a mérettől függően. Small — egy szám, Medium — szám + grafikon, Large — táblázat.

Sötét téma és Dynamic Type támogatása

A widgetnek helyesen kell megjelennie világos és sötét témában is a fejlesztő további beavatkozása nélkül — a WidgetKit automatikusan átveszi a rendszerszíneket. A Dynamic Type a widgetek esetében korlátozott: a betűméret rögzített, de olvashatónak kell lennie. UIColor.label és UIColor.systemBackground — alapszínek a szöveghez és a háttérhez mindkét témában.

Gyakran Ismételt Kérdések

Miben különbözik a Today Widget a szokásos asztali widgettől?

Ma már ez ugyanaz a WidgetKit widget. A különbség csak az elhelyezkedésben van: az asztalon és a „Ma” szakaszban (az első képernyőtől balra). iOS 14-ig a Today Widget egy külön NCWidgetProviding bővítmény volt, amely csak az Értesítési Központban működött. Most ez egy egységes WidgetKit.

Milyen gyakran frissül a Today Widget?

A WidgetKit nem frissíti a widgeteket időzítővel. A fejlesztő a Timeline Provideren keresztül állítja be az ütemezést: időbélyegzővel ellátott rekordok. A rendszer garantálja a frissítést a megadott időben, figyelembe véve az energiamegtakarítást — néhány percet késhet. Minimális intervallum — 15 perc, de az Apple nem ajánlja óránként 1-nél gyakrabban.

Lehet-e Today Widget-et készíteni interaktív gombokkal?

Igen, az iOS 17-től kezdve a WidgetKit támogatja a gombokat, kapcsolókat és csúszkákat az App Intents segítségével. Az interaktív elemek az iPhone és iPad asztalán működnek. A „Ma” szakaszban a támogatás az iOS 18-ban jelent meg. iOS 16 és régebbi esetén — csak az alkalmazás megnyitása a widgetre kattintva.

Hány Today Widget lehet egy alkalmazásban?

Nincs korlátozás. Az alkalmazás tetszőleges számú widgetet regisztrálhat a WidgetBundle segítségével — mindegyik saját típussal, mérettel és konfigurációval. A felhasználó külön-külön adja hozzá őket. Ajánlott legfeljebb 3–5 widget, hogy ne terhelje túl a felhasználó választását.

Hogyan teszteljük a Today Widget-et szimulátoron?

A WidgetKit teljes mértékben támogatott az iOS Simulatorban. Indítsa el a WidgetKit target sémát az Xcode-ban — a widget megjelenik a szimulátor asztalán. A Timeline Provider ellenőrzéséhez használja a WidgetKit Debug Profile-t: Xcode → Product → Profile → WidgetKit Debug. A valós viselkedést fizikai eszközön ellenőrizze.

Összefoglalás

  • Today Widget — iOS-bővítmény információk megjelenítéséhez az alkalmazás megnyitása nélkül.
  • WidgetKit (iOS 14+) — modern keretrendszer, NCWidgetProviding — régi verziókhoz.
  • Három widgettípus: információs, interaktív (iOS 17+), konfigurálható Intents segítségével.
  • A Timeline Provider időzítők helyett kezeli a frissítési ütemezést.
  • A dizájnnak glanceable-nek kell lennie: minimális elemek, nagy betűméret, méretekhez alkalmazkodás.
  • Interaktivitás App Intents segítségével — gombok és kapcsolók az alkalmazás megnyitása nélkül.
  • WidgetCenter.shared.reloadTimelines — programozott frissítés adatváltozáskor.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is