Today Widget is een iOS-extensie die interactieve informatie direct in het Berichtencentrum of op het scherm “Vandaag” weergeeft. De gebruiker ziet actuele gegevens — weer, wisselkoers, agenda — zonder de hoofdapp te openen. Volgens gegevens van Apple WWDC (2025) is het gebruik van WidgetKit met 40% gestegen na de introductie van interactieve widgets in iOS 17. Today Widget lost het probleem van snelle toegang tot informatie op: een blik op het scherm — en de gebruiker krijgt de benodigde gegevens zonder navigatie door de app.
Belangrijkste punten
Today Widget (ook bekend als Berichtencentrumwidget) — een iOS-interface-element dat samengevatte informatie uit de app weergeeft zonder deze te starten. De gebruiker ziet de widget door het scherm naar links te vegen op het vergrendelscherm of op het startscherm. De widget kan dynamische gegevens tonen — wisselkoers, laatste nieuws, taakstatus, apparaatstatus.
Historisch verscheen Today Widget in iOS 8 als extensie van het Berichtencentrum, geïmplementeerd via het Notification Center-framework. Met iOS 14 introduceerde Apple WidgetKit — een volledig herontworpen architectuur waarmee widgets direct op het bureaublad kunnen worden geplaatst. Today Widget in moderne zin — een WidgetKit-widget geplaatst in de sectie “Vandaag” (de widgetssectie links van het eerste scherm).
Het hoofddoel is het verkorten van de toegangstijd tot informatie. In plaats van de app te openen, door menu's te navigeren en te wachten op laden, ziet de gebruiker direct de benodigde gegevens. Volgens Apple (2024) vertonen apps met widgets 27% hogere gebruikersbetrokkenheid. Aanvullende scenario's: snelle acties (taak als voltooid markeren), monitoring (hartslag, activiteit) en status (batterijlading, meldingen).
De ontwikkelaar van Today Widget heeft twee benaderingen: moderne WidgetKit (iOS 14+) en de legacy-extensie NCWidgetProviding (iOS 8–13). De keuze hangt af van de minimale ondersteunde iOS-versie. WidgetKit wordt aanbevolen voor nieuwe projecten, NCWidgetProviding — voor ondersteuning van oudere apparaten.
| Kenmerk | WidgetKit | NCWidgetProviding |
|---|---|---|
| Minimale iOS | iOS 14 | iOS 8 |
| Plaatsing | Bureaublad + “Vandaag” | Alleen “Vandaag” |
| Afmetingen | Small, Medium, Large | Eén vast |
| Interactiviteit | iOS 17+ knoppen en schakelaars | Alleen app openen |
| Update | Timeline Provider | widgetPerformUpdate |
| Taal | SwiftUI | UIKit |
Als uw app iOS 14 en nieuwer ondersteunt — gebruik dan WidgetKit. Het biedt rijke mogelijkheden: meerdere afmetingen, configuratie via intent, herontwerp met iOS 17 en diepe links. SwiftUI-declarativiteit maakt de widgetcode compact en leesbaar. Timeline Provider beheert automatisch het updateschema met inachtneming van het energieverbruik.
Alleen als ondersteuning voor iOS 9–13 vereist is. NCWidgetProviding is eenvoudiger te implementeren — het is een gewone UIViewController met een protocol. Het is echter beperkt: één afmeting, alleen UIKit, geen configuratie. Apple beveelt aan om zelfs voor oude projecten over te stappen op WidgetKit met behulp van availability check: WidgetKit op iOS 14+, NCWidgetProviding als fallback.
In modern iOS worden drie soorten widgets onderscheiden op basis van functioneel doel. Elk type lost zijn eigen taak op en vereist een andere benadering van gegevens- en interfaceontwerp. Classificatie helpt bij het kiezen van de juiste architectuur voor uw app.
Geven statische of periodiek bijgewerkte informatie weer: weer, datum, wisselkoers, serverstatus. Gegevens worden volgens schema bijgewerkt via Timeline Provider. De gebruiker interageert niet met de widget — alleen lezen. Informatiewidgets — het eenvoudigst te implementeren, vereisen geen verwerking van aanraakgebeurtenissen en werken op de achtergrond zonder aanvullende machtigingen.
Sinds iOS 17 ondersteunt WidgetKit knoppen, schakelaars en schuifregelaars in widgets. De gebruiker kan een actie uitvoeren — taak markeren, muziek pauzeren, licht inschakelen — zonder de app te openen. Interactive Widgets gebruiken App Intents om de actie naar de hoofdapp te sturen. Beperking: alleen op het bureaublad, niet in de sectie “Vandaag” tot iOS 18.
De gebruiker past de weergegeven gegevens aan via de systeeminterface — kiest een stad voor het weer, een account voor financiën, een categorie voor nieuws. Geïmplementeerd via Intents Extension en configuratie in WidgetBundle. Configureerbare widgets verhogen de personalisatie en relevantie van informatie voor elke gebruiker.
Laten we het proces van het maken van een Today Widget in SwiftUI met WidgetKit bekijken. De widget geeft de huidige wisselkoers weer met automatische update. WidgetKit vereist drie componenten: de widgetstructuur, een Provider met configuratie en een View voor weergave.
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])
}
}
De Provider is verantwoordelijk voor het voorbereiden van gegevens voor weergave. De methode getTimeline maakt het updateschema: volgende update over 15 minuten. TimelineProvider garandeert dat de widget actuele gegevens toont zonder constante serverpolling.
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 — het centrale WidgetKit-mechanisme voor het beheren van Today Widget-gegevens. In plaats van periodieke update met een timer (zoals in oude NCWidgetProviding), gebruikt WidgetKit het concept van timeline — een reeks records met tijdstempels. Het systeem toont het huidige record tot het verloopt, schakelt dan over naar het volgende of vraagt een nieuw record aan.
Timeline ondersteunt drie beleidsregels: .after(date) — volgende update op de opgegeven datum; .never — de widget wordt niet bijgewerkt tot een expliciete aanroep van WidgetCenter.reloadAllTimelines; .atEnd — update na weergave van het laatste record. Voor Today Widget met wisselkoers is het beleid .after met een interval van 15–30 minuten optimaal. Energie-efficiëntie — het belangrijkste voordeel van WidgetKit: het systeem groepeert updates van alle widgets in één venster.
Als gegevens zijn gewijzigd voordat de timeline verloopt (bijv. de gebruiker heeft de koers in de app bijgewerkt), roep dan WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget") aan. Dit vraagt een nieuwe timeline aan bij de Provider en werkt de weergave bij. WidgetCenter maakt het ook mogelijk om alle widgets van de app met één opdracht te herladen — handig na gegevenssynchronisatie.
Apple stelt strenge eisen aan het ontwerp van Today Widget: inhoud moet van een afstand leesbaar zijn, zonder overbodige elementen en met een duidelijke hiërarchie. Overtreding van de HIG-aanbevelingen (Human Interface Guidelines) is een reden voor afwijzing bij publicatie in de App Store. Drie principes: glanceability, consistency en hierarchy.
De gebruiker besteedt minder dan een seconde aan de widget. Voeg niet meer dan 3–4 gegevenselementen toe. Lettertype — minimaal 11pt voor labels, 17pt voor waarden. Gebruik vet (Semibold) voor belangrijke getallen. Vermijd scrollen — Today Widget scrollt niet.
WidgetKit ondersteunt drie afmetingen: Small (170×170pt), Medium (364×170pt), Large (364×382pt). Voor Today Widget in de sectie “Vandaag” is Medium de meest voorkomende keuze. Adaptief ontwerp via EnvironmentValues: wijzig de informatiedichtheid afhankelijk van de afmeting. Small — één getal, Medium — getal + grafiek, Large — tabel.
De widget moet correct worden weergegeven in lichte en donkere modus zonder extra handelingen van de ontwikkelaar — WidgetKit neemt automatisch de systeemkleuren over. Dynamic Type voor widgets is beperkt: de lettergrootte is vast, maar moet leesbaar zijn. UIColor.label en UIColor.systemBackground — basiskleuren voor tekst en achtergrond in beide modi.
Veelgestelde vragen
Tegenwoordig is het dezelfde WidgetKit-widget. Het verschil zit alleen in de locatie: op het bureaublad en in de sectie “Vandaag” (links van het eerste scherm). Tot iOS 14 was Today Widget een aparte NCWidgetProviding-extensie die alleen in het Berichtencentrum werkte. Nu is het één WidgetKit.
WidgetKit werkt widgets niet bij met een timer. De ontwikkelaar stelt het schema in via Timeline Provider: records met tijdstempels. Het systeem garandeert een update op de opgegeven tijd met inachtneming van energiebesparing — kan enkele minuten vertraging oplopen. Minimale interval — 15 minuten, maar Apple raadt aan niet vaker dan 1 keer per uur.
Ja, vanaf iOS 17 ondersteunt WidgetKit knoppen, schakelaars en schuifregelaars via App Intents. Interactieve elementen werken op het bureaublad van iPhone en iPad. In de sectie “Vandaag” verscheen ondersteuning in iOS 18. Voor iOS 16 en ouder — alleen het openen van de app bij het tikken op de widget.
Er zijn geen beperkingen. De app kan elk aantal widgets registreren via WidgetBundle — elk met zijn eigen type, afmeting en configuratie. De gebruiker voegt ze afzonderlijk toe. Aanbevolen niet meer dan 3–5 widgets om de keuze van de gebruiker niet te overladen.
WidgetKit wordt volledig ondersteund in iOS Simulator. Start het WidgetKit-targetschema in Xcode — de widget verschijnt op het bureaublad van de simulator. Gebruik voor het controleren van Timeline Provider het WidgetKit Debug Profile: Xcode → Product → Profile → WidgetKit Debug. Controleer het werkelijke gedrag op een fysiek apparaat.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook