Today Widget är ett iOS-tillägg som visar interaktiv information direkt i Notiscenter eller på skärmen “Idag”. Användaren ser aktuell data — väder, valutakurs, kalender — utan att öppna huvudappen. Enligt data från Apple WWDC (2025) ökade användningen av WidgetKit med 40% efter introduktionen av interaktiva widgetar i iOS 17. Today Widget löser problemet med snabb åtkomst till information: en blick på skärmen — och användaren får nödvändig data utan navigering i appen.
Huvudpunkter
Today Widget (även känd som Notiscenter-widget) — ett iOS-gränssnittselement som visar komprimerad information från appen utan att starta den. Användaren ser widgeten genom att svepa skärmen åt vänster på låsskärmen eller på hemskärmen. Widgeten kan visa dynamisk data — valutakurs, senaste nyheter, uppgiftsstatus, enhetsstatus.
Historiskt sett dök Today Widget upp i iOS 8 som ett tillägg till Notiscenter, implementerat via ramverket Notification Center. Med iOS 14 introducerade Apple WidgetKit — en helt omdesignad arkitektur som gör det möjligt att placera widgetar direkt på skrivbordet. Today Widget i modern mening — en WidgetKit-widget placerad i sektionen “Idag” (widgetsektionen till vänster om första skärmen).
Huvudmålet är att minska tiden för åtkomst till information. Istället för att öppna appen, navigera i menyn och vänta på laddning ser användaren omedelbart nödvändig data. Enligt Apple (2024) visar appar med widgetar 27% högre användarengagemang. Ytterligare scenarier: snabba åtgärder (markera uppgift som slutförd), övervakning (puls, aktivitet) och status (batteriladdning, aviseringar).
Utvecklaren av Today Widget har två tillvägagångssätt: modern WidgetKit (iOS 14+) och det äldre tillägget NCWidgetProviding (iOS 8–13). Valet beror på den lägsta supportade iOS-versionen. WidgetKit rekommenderas för nya projekt, NCWidgetProviding — för support av äldre enheter.
| Egenskap | WidgetKit | NCWidgetProviding |
|---|---|---|
| Minsta iOS | iOS 14 | iOS 8 |
| Placering | Skrivbord + “Idag” | Endast “Idag” |
| Storlekar | Small, Medium, Large | En fast |
| Interaktivitet | iOS 17+ knappar och omkopplare | Endast öppna appen |
| Uppdatering | Timeline Provider | widgetPerformUpdate |
| Språk | SwiftUI | UIKit |
Om din app stöder iOS 14 och nyare — använd WidgetKit. Det erbjuder rika funktioner: flera storlekar, konfiguration via intent, omdesign med iOS 17 och djupa länkar. SwiftUI-deklarativitet gör widgetkoden kompakt och läsbar. Timeline Provider hanterar automatiskt uppdateringsschemat med hänsyn till energiförbrukning.
Endast om stöd för iOS 9–13 krävs. NCWidgetProviding är enklare att implementera — det är en vanlig UIViewController med ett protokoll. Det är dock begränsat: en storlek, endast UIKit, ingen konfiguration. Apple rekommenderar att byta till WidgetKit även för gamla projekt med hjälp av availability check: WidgetKit på iOS 14+, NCWidgetProviding som fallback.
I modern iOS särskiljs tre typer av widgetar efter funktionellt syfte. Varje typ löser sin egen uppgift och kräver ett annorlunda tillvägagångssätt för design av data och gränssnitt. Klassificering hjälper till att välja rätt arkitektur för din app.
Visar statisk eller periodiskt uppdaterad information: väder, datum, valutakurs, serverstatus. Data uppdateras enligt schema via Timeline Provider. Användaren interagerar inte med widgeten — bara läser. Informationswidgetar — enklast att implementera, kräver ingen bearbetning av beröringshändelser och fungerar i bakgrunden utan ytterligare behörigheter.
Från iOS 17 stöder WidgetKit knappar, omkopplare och reglage i widgetar. Användaren kan utföra en åtgärd — markera uppgift, pausa musik, tända ljus — utan att öppna appen. Interactive Widgets använder App Intents för att överföra åtgärden till huvudappen. Begränsning: endast på skrivbordet, inte i sektionen “Idag” fram till iOS 18.
Användaren anpassar visad data via systemgränssnittet — väljer stad för väder, konto för ekonomi, kategori för nyheter. Implementeras via Intents Extension och konfiguration i WidgetBundle. Konfigurerbara widgetar ökar personalisering och relevans av information för varje användare.
Låt oss titta på processen att skapa en Today Widget i SwiftUI med WidgetKit. Widgeten kommer att visa aktuell valutakurs med automatisk uppdatering. WidgetKit kräver tre komponenter: widgetstruktur, Provider med konfiguration och View för visning.
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])
}
}
Providern ansvarar för att förbereda data för visning. Metoden getTimeline skapar uppdateringsschemat: nästa uppdatering om 15 minuter. TimelineProvider garanterar att widgeten visar aktuell data utan konstant polling av servern.
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 — den centrala WidgetKit-mekanismen för att hantera Today Widget-data. Istället för periodisk uppdatering med timer (som i gamla NCWidgetProviding) använder WidgetKit konceptet timeline — en sekvens av poster med tidsstämplar. Systemet visar den aktuella posten tills den löper ut, växlar sedan till nästa eller begär en ny.
Timeline stöder tre policyer: .after(date) — nästa uppdatering vid angivet datum; .never — widgeten uppdateras inte förrän explicit anrop av WidgetCenter.reloadAllTimelines; .atEnd — uppdatering efter visning av sista posten. För Today Widget med valutakurs är policy .after med intervall på 15–30 minuter optimal. Energieffektivitet — den viktigaste fördelen med WidgetKit: systemet grupperar uppdateringar av alla widgetar i ett fönster.
Om data har ändrats innan timeline löper ut (t.ex. användaren uppdaterade valutakursen i appen), anropa WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget"). Detta begär en ny timeline från Providern och uppdaterar visningen. WidgetCenter gör det också möjligt att ladda om alla appens widgetar med ett enda kommando — bekvämt efter datasynkronisering.
Apple ställer stränga krav på designen av Today Widget: innehållet måste vara läsligt på avstånd, utan onödiga element och med tydlig hierarki. Brott mot HIG-rekommendationerna (Human Interface Guidelines) är en anledning till avslag vid publicering i App Store. Tre principer: glanceability, consistency och hierarchy.
Användaren spenderar mindre än en sekund på widgeten. Lägg inte till fler än 3–4 dataelement. Teckenstorlek — minst 11pt för etiketter, 17pt för värden. Använd fet stil (Semibold) för nyckeltal. Undvik rullning — Today Widget rullar inte.
WidgetKit stöder tre storlekar: Small (170×170pt), Medium (364×170pt), Large (364×382pt). För Today Widget i sektionen “Idag” är Medium det vanligaste valet. Adaptiv design via EnvironmentValues: ändra informationstäthet beroende på storlek. Small — ett tal, Medium — tal + graf, Large — tabell.
Widgeten måste visas korrekt i ljust och mörkt tema utan ytterligare åtgärder från utvecklaren — WidgetKit tar automatiskt emot systemfärger. Dynamic Type för widgetar är begränsad: teckenstorleken är fast men måste vara läslig. UIColor.label och UIColor.systemBackground — basfärger för text och bakgrund i båda teman.
Vanliga frågor
Idag är det samma WidgetKit-widget. Skillnaden är bara i placeringen: på skrivbordet och i sektionen “Idag” (till vänster om första skärmen). Fram till iOS 14 var Today Widget ett separat NCWidgetProviding-tillägg som bara fungerade i Notiscenter. Nu är det en enhetlig WidgetKit.
WidgetKit uppdaterar inte widgetar med timer. Utvecklaren ställer in schemat via Timeline Provider: poster med tidsstämplar. Systemet garanterar uppdatering vid angiven tid med hänsyn till energibesparing — kan försenas några minuter. Minsta intervall — 15 minuter, men Apple rekommenderar inte oftare än 1 gång per timme.
Ja, från och med iOS 17 stöder WidgetKit knappar, omkopplare och reglage via App Intents. Interaktiva element fungerar på skrivbordet på iPhone och iPad. I sektionen “Idag” kom stödet i iOS 18. För iOS 16 och äldre — endast öppna appen vid tryck på widgeten.
Det finns inga begränsningar. Appen kan registrera valfritt antal widgetar via WidgetBundle — var och en med egen typ, storlek och konfiguration. Användaren lägger till dem separat. Rekommenderas högst 3–5 widgetar för att inte överbelasta användarens val.
WidgetKit stöds fullt ut i iOS Simulator. Kör WidgetKit target-schemat i Xcode — widgeten visas på simulatorns skrivbord. För att kontrollera Timeline Provider använd WidgetKit Debug Profile: Xcode → Product → Profile → WidgetKit Debug. Kontrollera verkligt beteende på en fysisk enhet.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också