Today Widget: cos'è, tipi e creazione del widget notifiche

Autore: IT Sectr Pubblicato: 2026-06-15 Tempo di lettura: 10 min

Today Widget è un'estensione iOS che visualizza informazioni interattive direttamente nel Centro Notifiche o nella schermata “Oggi”. L'utente vede dati aggiornati — meteo, tassi di cambio, calendario — senza aprire l'app principale. Secondo Apple WWDC (2025), l'uso di WidgetKit è cresciuto del 40% dopo l'introduzione dei widget interattivi in iOS 17. Today Widget risolve il problema dell'accesso rapido alle informazioni: uno sguardo allo schermo — e l'utente ottiene i dati necessari senza navigare nell'app.

Punti chiave

  • Today Widget — un'estensione iOS per visualizzare informazioni nel Centro Notifiche.
  • WidgetKit — un framework moderno per creare widget (iOS 14+).
  • NCWidgetProviding — un protocollo per estensioni del Centro Notifiche (iOS 8–13).
  • Auto Layout — adattamento del widget a diverse dimensioni dello schermo.
  • Timeline Provider — meccanismo di aggiornamento dati in WidgetKit.

Cos'è Today Widget

Today Widget (noto anche come widget del Centro Notifiche) è un elemento dell'interfaccia iOS che visualizza informazioni sintetiche da un'app senza avviarla. L'utente vede il widget scorrendo verso sinistra sulla schermata di blocco o sulla schermata Home. Il widget può mostrare dati dinamici — tassi di cambio, ultime notizie, stato delle attività, stato del dispositivo.

Storicamente, Today Widget è apparso in iOS 8 come estensione del Centro Notifiche implementata tramite il framework Centro Notifiche. Con iOS 14, Apple ha introdotto WidgetKit — un'architettura completamente riprogettata che consente di posizionare i widget direttamente sulla schermata Home. Today Widget in senso moderno è un widget WidgetKit posizionato nella sezione “Oggi” (la sezione dei widget a sinistra della prima schermata).

Perché hai bisogno di un Today Widget

L'obiettivo principale è ridurre il tempo di accesso alle informazioni. Invece di aprire l'app, navigare nei menu e attendere il caricamento, l'utente vede immediatamente i dati necessari. Secondo Apple (2024), le app con widget mostrano un coinvolgimento degli utenti superiore del 27%. Casi d'uso aggiuntivi: azioni rapide (contrassegnare un'attività come completata), monitoraggio (frequenza cardiaca, attività) e stato (carica della batteria, notifiche).

WidgetKit vs NCWidgetProviding

Uno sviluppatore di Today Widget ha due approcci disponibili: WidgetKit moderno (iOS 14+) e l'estensione legacy NCWidgetProviding (iOS 8–13). La scelta dipende dalla versione minima supportata di iOS. WidgetKit è consigliato per i nuovi progetti, NCWidgetProviding per supportare dispositivi più vecchi.

CaratteristicaWidgetKitNCWidgetProviding
iOS minimoiOS 14iOS 8
PosizionamentoSchermata Home + “Oggi”Solo “Oggi”
DimensioniPiccolo, Medio, GrandeUna dimensione fissa
InterattivitàPulsanti e interruttori iOS 17+Solo apertura app
AggiornamentoTimeline ProviderwidgetPerformUpdate
LinguaggioSwiftUIUIKit

Quando usare WidgetKit

Se la tua app supporta iOS 14 e versioni successive — usa WidgetKit. Fornisce funzionalità ricche: dimensioni multiple, configurazione tramite intent, riprogettazione con iOS 17 e collegamenti profondi. La dichiaratività di SwiftUI rende il codice del widget compatto e leggibile. Timeline Provider gestisce automaticamente la pianificazione degli aggiornamenti tenendo conto del consumo energetico.

Quando usare NCWidgetProviding

Solo se è richiesto il supporto per iOS 9–13. NCWidgetProviding è più semplice da implementare — è un normale UIViewController con un protocollo. Tuttavia è limitato: dimensione singola, solo UIKit, nessuna configurazione. Apple raccomanda di passare a WidgetKit anche per progetti vecchi utilizzando availability check: WidgetKit su iOS 14+, NCWidgetProviding come fallback.

Tipi di Today Widget

In iOS moderno, esistono tre tipi di widget in base allo scopo funzionale. Ogni tipo risolve il proprio problema e richiede un approccio diverso alla progettazione dei dati e dell'interfaccia. La classificazione aiuta a scegliere l'architettura giusta per la tua app.

Widget informativi

Mostrano informazioni statiche o aggiornate periodicamente: meteo, data, tassi di cambio, stato del server. I dati vengono aggiornati secondo una pianificazione tramite Timeline Provider. L'utente non interagisce con il widget — legge solo. I widget informativi sono i più semplici da implementare, non richiedono la gestione di eventi touch e funzionano in background senza permessi aggiuntivi.

Widget interattivi

Con iOS 17, WidgetKit supporta pulsanti, interruttori e cursori nei widget. L'utente può eseguire un'azione — contrassegnare un'attività, mettere in pausa la musica, accendere una luce — senza aprire l'app. I widget interattivi utilizzano App Intents per passare le azioni all'app principale. Limitazione: solo sulla schermata Home, non nella sezione “Oggi” fino a iOS 18.

Widget configurabili

L'utente personalizza i dati visualizzati attraverso l'interfaccia di sistema — seleziona una città per il meteo, un conto per le finanze, una categoria per le notizie. Implementato tramite Intents Extension e configurazione in WidgetBundle. I widget configurabili aumentano la personalizzazione e la pertinenza delle informazioni per ogni utente.

Creazione di un widget WidgetKit

Vediamo il processo di creazione di un Today Widget in SwiftUI utilizzando WidgetKit. Il widget mostrerà il tasso di cambio corrente con aggiornamenti automatici. WidgetKit richiede tre componenti: una struttura widget, un Provider con configurazione e una View per la visualizzazione.

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

Il Provider è responsabile della preparazione dei dati per la visualizzazione. Il metodo getTimeline crea una pianificazione degli aggiornamenti: il prossimo aggiornamento tra 15 minuti. TimelineProvider garantisce che il widget mostri dati aggiornati senza interrogare costantemente il server.

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 e aggiornamento dati

Timeline Provider è il meccanismo centrale di WidgetKit per gestire i dati di Today Widget. Invece di aggiornamenti periodici tramite timer (come nel vecchio NCWidgetProviding), WidgetKit utilizza il concetto di timeline — una sequenza di voci con timestamp. Il sistema mostra la voce corrente fino alla sua scadenza, poi passa alla successiva o ne richiede una nuova.

Politiche di aggiornamento

Timeline supporta tre politiche: .after(date) — prossimo aggiornamento alla data specificata; .never — il widget non si aggiorna fino a una chiamata esplicita a WidgetCenter.reloadAllTimelines; .atEnd — aggiornamento dopo la visualizzazione dell'ultima voce. Per un Today Widget con tassi di cambio, la politica .after con un intervallo di 15–30 minuti è ottimale. L'efficienza energetica è un vantaggio chiave di WidgetKit: il sistema raggruppa gli aggiornamenti di tutti i widget in una finestra.

WidgetCenter: aggiornamento programmatico

Se i dati cambiano prima della scadenza della timeline (ad esempio, l'utente ha aggiornato il tasso nell'app), chiama WidgetCenter.shared.reloadTimelines(ofKind: “CurrencyWidget”). Questo richiederà una nuova timeline al Provider e aggiornerà la visualizzazione. WidgetCenter consente anche di ricaricare tutti i widget dell'app con un singolo comando — comodo dopo la sincronizzazione dei dati.

Linee guida di progettazione widget

Apple impone requisiti rigorosi per il design di Today Widget: il contenuto deve essere leggibile a colpo d'occhio, senza elementi superflui e con una chiara gerarchia. Violare le raccomandazioni HIG (Human Interface Guidelines) è motivo di rifiuto durante la pubblicazione sull'App Store. Tre principi: leggibilità rapida, coerenza e gerarchia.

Leggibilità rapida — leggibile a colpo d'occhio

L'utente spende meno di un secondo su un widget. Non aggiungere più di 3–4 elementi di dati. Carattere — minimo 11pt per le etichette, 17pt per i valori. Usa il grassetto (Semibold) per i numeri chiave. Evita lo scorrimento — Today Widget non scorre.

Adattamento alle dimensioni

WidgetKit supporta tre dimensioni: Piccolo (170×170pt), Medio (364×170pt), Grande (364×382pt). Per Today Widget nella sezione “Oggi”, Medio è la scelta più comune. Design adattivo tramite EnvironmentValues: cambia la densità delle informazioni in base alla dimensione. Piccolo — un numero, Medio — numero + grafico, Grande — tabella.

Supporto per modalità scura e Dynamic Type

Il widget deve essere visualizzato correttamente nei temi chiaro e scuro senza azioni aggiuntive dello sviluppatore — WidgetKit rileva automaticamente i colori di sistema. Dynamic Type per i widget è limitato: la dimensione del carattere è fissa, ma deve essere leggibile. UIColor.label e UIColor.systemBackground sono i colori di base per testo e sfondo in entrambi i temi.

Domande frequenti

In cosa Today Widget si differenzia da un widget normale sulla schermata Home?

Oggi è lo stesso widget WidgetKit. La differenza è solo nel posizionamento: sulla schermata Home e nella sezione “Oggi” (a sinistra della prima schermata). Prima di iOS 14, Today Widget era un'estensione NCWidgetProviding separata che funzionava solo nel Centro Notifiche. Ora è un unico WidgetKit.

Con quale frequenza viene aggiornato Today Widget?

WidgetKit non aggiorna i widget tramite timer. Lo sviluppatore imposta la pianificazione tramite Timeline Provider: voci con timestamp. Il sistema garantisce l'aggiornamento all'ora specificata tenendo conto del risparmio energetico — potrebbe ritardare di qualche minuto. L'intervallo minimo è di 15 minuti, ma Apple consiglia non più di una volta all'ora.

Posso creare un Today Widget con pulsanti interattivi?

Sì, a partire da iOS 17, WidgetKit supporta pulsanti, interruttori e cursori tramite App Intents. Gli elementi interattivi funzionano sulla schermata Home di iPhone e iPad. Il supporto nella sezione “Oggi” è apparso in iOS 18. Per iOS 16 e versioni precedenti — solo apertura dell'app toccando il widget.

Quanti Today Widget può avere un'app?

Non ci sono limiti. Un'app può registrare qualsiasi numero di widget tramite WidgetBundle — ciascuno con il proprio tipo, dimensione e configurazione. L'utente li aggiunge individualmente. Raccomandato non più di 3–5 widget per non sovraccaricare la scelta dell'utente.

Come testare Today Widget sul simulatore?

WidgetKit è completamente supportato nel simulatore iOS. Esegui lo schema del target WidgetKit in Xcode — il widget apparirà sulla schermata Home del simulatore. Per testare Timeline Provider, usa WidgetKit Debug Profile: Xcode → Product → Profile → WidgetKit Debug. Verifica il comportamento reale su un dispositivo fisico.

Riepilogo

  • Today Widget — un'estensione iOS per visualizzare informazioni senza aprire l'app.
  • WidgetKit (iOS 14+) — un framework moderno, NCWidgetProviding — legacy per versioni vecchie.
  • Tre tipi di widget: informativi, interattivi (iOS 17+), configurabili tramite Intents.
  • Timeline Provider gestisce la pianificazione degli aggiornamenti invece dei timer.
  • Il design deve essere leggibile rapidamente: elementi minimi, carattere grande, adattamento alle dimensioni.
  • Interattività tramite App Intents — pulsanti e interruttori senza aprire l'app.
  • WidgetCenter.shared.reloadTimelines — aggiornamento programmatico quando i dati cambiano.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche