Today Widget: vad är det, typer och skapande av widget för aviseringar

Författare: IT Sectr Publicerad: 2026-06-15 Lästid: 10 min

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 — iOS-tillägg för att visa information i Notiscenter.
  • WidgetKit — modernt ramverk för att skapa widgetar (iOS 14+).
  • NCWidgetProviding — protokoll för Notification Center-tillägg (iOS 8–13).
  • Auto Layout — anpassning av widgeten till olika skärmstorlekar.
  • Timeline Provider — mekanism för datauppdatering i WidgetKit.

Vad är Today Widget

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

Varför behövs Today Widget

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

WidgetKit mot NCWidgetProviding

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.

EgenskapWidgetKitNCWidgetProviding
Minsta iOSiOS 14iOS 8
PlaceringSkrivbord + “Idag”Endast “Idag”
StorlekarSmall, Medium, LargeEn fast
InteraktivitetiOS 17+ knappar och omkopplareEndast öppna appen
UppdateringTimeline ProviderwidgetPerformUpdate
SpråkSwiftUIUIKit

När ska WidgetKit användas

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.

När ska NCWidgetProviding användas

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.

Typer av Today Widgets

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.

Informationswidgetar

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.

Interaktiva widgetar

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.

Konfigurerbara widgetar

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.

Skapa en WidgetKit-widget

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.

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

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.

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 och datauppdatering

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.

Uppdateringspolicy

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.

WidgetCenter: programmatisk uppdatering

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.

Designrekommendationer för widgetar

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.

Glanceability — läsbarhet vid en blick

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.

Anpassning till storlekar

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.

Stöd för mörkt tema och Dynamic Type

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

Vad skiljer Today Widget från en vanlig widget på skrivbordet?

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.

Hur ofta uppdateras Today Widget?

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.

Kan man skapa en Today Widget med interaktiva knappar?

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.

Hur många Today Widgets kan finnas i en app?

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.

Hur testar man Today Widget på simulatorn?

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

  • Today Widget — iOS-tillägg för att visa information utan att öppna appen.
  • WidgetKit (iOS 14+) — modernt ramverk, NCWidgetProviding — äldre för gamla versioner.
  • Tre typer av widgetar: information, interaktiva (iOS 17+), konfigurerbara via Intents.
  • Timeline Provider hanterar uppdateringsschema istället för timers.
  • Designen ska vara glanceable: minimala element, stor text, anpassning till storlekar.
  • Interaktivitet via App Intents — knappar och omkopplare utan att öppna appen.
  • WidgetCenter.shared.reloadTimelines — programmatisk uppdatering vid dataändring.

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.

Diskutera projektet

Läs också