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 (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ó.
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).
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ő | WidgetKit | NCWidgetProviding |
|---|---|---|
| Minimális iOS | iOS 14 | iOS 8 |
| Elhelyezés | Asztal + „Ma” | Csak „Ma” |
| Méretek | Small, Medium, Large | Egy rögzített |
| Interaktivitás | iOS 17+ gombok és kapcsolók | Csak alkalmazás megnyitása |
| Frissítés | Timeline Provider | widgetPerformUpdate |
| Nyelv | SwiftUI | UIKit |
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.
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 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.
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.
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.
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.
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.
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.
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 — 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.
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.
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.
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.
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ő.
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.
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
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.
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.
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.
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.
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
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.