Today Widget : définition, types et création du widget de notifications

Auteur : IT Sectr Publié le : 2026-06-15 Temps de lecture : 10 min

Today Widget est une extension iOS qui affiche des informations interactives directement dans le Centre de notifications ou sur l'écran « Aujourd'hui ». L'utilisateur voit des données à jour « météo, taux de change, calendrier » sans ouvrir l'application principale. Selon l'Apple WWDC (2025), l'utilisation de WidgetKit a augmenté de 40% après l'introduction des widgets interactifs dans iOS 17. Today Widget résout le problème d'accès rapide à l'information : un coup d'œil à l'écran « et l'utilisateur obtient les données nécessaires sans naviguer dans l'application.

Points clés

  • Today Widget « une extension iOS pour afficher des informations dans le Centre de notifications.
  • WidgetKit « un framework moderne pour créer des widgets (iOS 14+).
  • NCWidgetProviding « un protocole pour les extensions du Centre de notifications (iOS 8«13).
  • Auto Layout « adaptation du widget à différentes tailles d'écran.
  • Timeline Provider « mécanisme de mise à jour des données dans WidgetKit.

Qu'est-ce que Today Widget

Today Widget (également connu sous le nom de widget du Centre de notifications) est un élément d'interface iOS qui affiche des informations condensées d'une application sans la lancer. L'utilisateur voit le widget en balayant vers la gauche sur l'écran de verrouillage ou sur l'écran d'accueil. Le widget peut afficher des données dynamiques « taux de change, dernières nouvelles, statut des tâches, état de l'appareil.

Historiquement, Today Widget est apparu dans iOS 8 en tant qu'extension du Centre de notifications implémentée via le framework Centre de notifications. Avec iOS 14, Apple a présenté WidgetKit « une architecture entièrement repensée qui permet de placer les widgets directement sur l'écran d'accueil. Today Widget au sens moderne est un widget WidgetKit situé dans la section « Aujourd'hui » (la section des widgets à gauche du premier écran).

Pourquoi avez-vous besoin d'un Today Widget

L'objectif principal est de réduire le temps d'accès à l'information. Au lieu d'ouvrir l'application, de naviguer dans les menus et d'attendre le chargement, l'utilisateur voit immédiatement les données nécessaires. Selon Apple (2024), les applications avec widgets montrent un engagement utilisateur 27% plus élevé. Cas d'utilisation supplémentaires : actions rapides (marquer une tâche comme terminée), surveillance (fréquence cardiaque, activité) et statut (charge de la batterie, notifications).

WidgetKit vs NCWidgetProviding

Un développeur Today Widget dispose de deux approches : WidgetKit moderne (iOS 14+) et l'extension legacy NCWidgetProviding (iOS 8«13). Le choix dépend de la version minimale prise en charge d'iOS. WidgetKit est recommandé pour les nouveaux projets, NCWidgetProviding pour prendre en charge les anciens appareils.

CaractéristiqueWidgetKitNCWidgetProviding
iOS minimumiOS 14iOS 8
EmplacementÉcran d'accueil + « Aujourd'hui »« Aujourd'hui » uniquement
TaillesPetit, Moyen, GrandTaille fixe unique
InteractivitéBoutons et interrupteurs iOS 17+Ouverture d'application uniquement
Mise à jourTimeline ProviderwidgetPerformUpdate
LangageSwiftUIUIKit

Quand utiliser WidgetKit

Si votre application prend en charge iOS 14 et versions ultérieures « utilisez WidgetKit. Il offre des fonctionnalités riches : plusieurs tailles, configuration via les intents, refonte avec iOS 17 et liens profonds. La déclarativité de SwiftUI rend le code du widget compact et lisible. Timeline Provider gère automatiquement le planning des mises à jour en tenant compte de la consommation d'énergie.

Quand utiliser NCWidgetProviding

Uniquement si la prise en charge d'iOS 9«13 est requise. NCWidgetProviding est plus simple à implémenter « c'est un UIViewController classique avec un protocole. Cependant, il est limité : taille unique, UIKit uniquement, sans configuration. Apple recommande de passer à WidgetKit même pour les anciens projets en utilisant availability check : WidgetKit sur iOS 14+, NCWidgetProviding comme fallback.

Types de Today Widgets

Dans iOS moderne, il existe trois types de widgets selon leur objectif fonctionnel. Chaque type résout son propre problème et nécessite une approche différente de la conception des données et de l'interface. La classification aide à choisir l'architecture appropriée pour votre application.

Widgets informatifs

Affichent des informations statiques ou mises à jour périodiquement : météo, date, taux de change, statut du serveur. Les données sont mises à jour selon un planning via Timeline Provider. L'utilisateur n'interagit pas avec le widget « il lit seulement. Les widgets informatifs sont les plus simples à implémenter, ne nécessitent pas de gestion d'événements tactiles et fonctionnent en arrière-plan sans permissions supplémentaires.

Widgets interactifs

Avec iOS 17, WidgetKit prend en charge les boutons, interrupteurs et curseurs dans les widgets. L'utilisateur peut effectuer une action « marquer une tâche, mettre la musique en pause, allumer une lumière « sans ouvrir l'application. Les widgets interactifs utilisent App Intents pour transmettre les actions à l'application principale. Limitation : uniquement sur l'écran d'accueil, pas dans la section « Aujourd'hui » jusqu'à iOS 18.

Widgets configurables

L'utilisateur personnalise les données affichées via l'interface système « sélectionne une ville pour la météo, un compte pour les finances, une catégorie pour les actualités. Implémenté via Intents Extension et la configuration dans WidgetBundle. Les widgets configurables augmentent la personnalisation et la pertinence des informations pour chaque utilisateur.

Création d'un widget WidgetKit

Voyons le processus de création d'un Today Widget en SwiftUI avec WidgetKit. Le widget affichera le taux de change actuel avec des mises à jour automatiques. WidgetKit nécessite trois composants : une structure de widget, un Provider avec configuration et une Vue pour l'affichage.

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

Le Provider est responsable de la préparation des données pour l'affichage. La méthode getTimeline crée un planning de mise à jour : la prochaine mise à jour dans 15 minutes. TimelineProvider garantit que le widget affiche des données à jour sans interroger constamment le serveur.

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 et mise à jour des données

Timeline Provider est le mécanisme central de WidgetKit pour gérer les données de Today Widget. Au lieu de mises à jour périodiques par minuteur (comme dans l'ancien NCWidgetProviding), WidgetKit utilise le concept de timeline « une séquence d'entrées avec des horodatages. Le système affiche l'entrée actuelle jusqu'à son expiration, puis passe à la suivante ou en demande une nouvelle.

Politiques de mise à jour

Timeline prend en charge trois politiques : .after(date) « prochaine mise à jour à la date spécifiée ; .never « le widget ne se met pas à jour jusqu'à un appel explicite à WidgetCenter.reloadAllTimelines ; .atEnd « mise à jour après l'affichage de la dernière entrée. Pour un Today Widget avec taux de change, la politique .after avec un intervalle de 15«30 minutes est optimale. L'efficacité énergétique est un avantage clé de WidgetKit : le système regroupe les mises à jour de tous les widgets dans une fenêtre.

WidgetCenter : mise à jour programmatique

Si les données changent avant l'expiration du timeline (par exemple, l'utilisateur a mis à jour le taux dans l'application), appelez WidgetCenter.shared.reloadTimelines(ofKind: « CurrencyWidget »). Cela demandera un nouveau timeline au Provider et mettra à jour l'affichage. WidgetCenter permet également de recharger tous les widgets de l'application avec une seule commande « pratique après la synchronisation des données.

Directives de conception de widgets

Apple impose des exigences strictes pour la conception de Today Widget : le contenu doit être lisible en un coup d'œil, sans éléments superflus et avec une hiérarchie claire. La violation des recommandations HIG (Human Interface Guidelines) est un motif de rejet lors de la publication sur l'App Store. Trois principes : lisibilité rapide, cohérence et hiérarchie.

Lisibilité rapide « lisible en un coup d'œil

L'utilisateur passe moins d'une seconde sur un widget. N'ajoutez pas plus de 3«4 éléments de données. Police « minimum 11pt pour les étiquettes, 17pt pour les valeurs. Utilisez le gras (Semibold) pour les chiffres clés. Évitez le défilement « Today Widget ne défile pas.

Adaptation aux tailles

WidgetKit prend en charge trois tailles : Petit (170×170pt), Moyen (364×170pt), Grand (364×382pt). Pour Today Widget dans la section « Aujourd'hui », Moyen est le choix le plus courant. Conception adaptative via EnvironmentValues : modifiez la densité d'informations en fonction de la taille. Petit « un nombre, Moyen « nombre + graphique, Grand « tableau.

Prise en charge du mode sombre et de Dynamic Type

Le widget doit s'afficher correctement dans les thèmes clair et sombre sans actions supplémentaires du développeur « WidgetKit récupère automatiquement les couleurs système. Dynamic Type pour les widgets est limité : la taille de police est fixe, mais doit être lisible. UIColor.label et UIColor.systemBackground sont les couleurs de base pour le texte et l'arrière-plan dans les deux thèmes.

Foire aux questions

En quoi Today Widget diffère-t-il d'un widget ordinaire sur l'écran d'accueil ?

Aujourd'hui, c'est le même widget WidgetKit. La différence réside uniquement dans l'emplacement : sur l'écran d'accueil et dans la section « Aujourd'hui » (à gauche du premier écran). Avant iOS 14, Today Widget était une extension NCWidgetProviding distincte qui fonctionnait uniquement dans le Centre de notifications. Maintenant, c'est un WidgetKit unifié.

À quelle fréquence Today Widget est-il mis à jour ?

WidgetKit ne met pas à jour les widgets par minuteur. Le développeur définit le planning via Timeline Provider : entrées avec horodatages. Le système garantit une mise à jour à l'heure spécifiée en tenant compte des économies d'énergie « peut retarder de quelques minutes. L'intervalle minimum est de 15 minutes, mais Apple recommande au maximum une fois par heure.

Puis-je créer un Today Widget avec des boutons interactifs ?

Oui, à partir d'iOS 17, WidgetKit prend en charge les boutons, interrupteurs et curseurs via App Intents. Les éléments interactifs fonctionnent sur l'écran d'accueil de l'iPhone et de l'iPad. La prise en charge dans la section « Aujourd'hui » est apparue dans iOS 18. Pour iOS 16 et versions antérieures « seule l'ouverture de l'application en touchant le widget.

Combien de Today Widgets une application peut-elle avoir ?

Il n'y a pas de limites. Une application peut enregistrer n'importe quel nombre de widgets via WidgetBundle « chacun avec son propre type, taille et configuration. L'utilisateur les ajoute individuellement. Recommandé pas plus de 3«5 widgets pour ne pas surcharger le choix de l'utilisateur.

Comment tester Today Widget sur le simulateur ?

WidgetKit est entièrement pris en charge dans le simulateur iOS. Exécutez le schéma de la cible WidgetKit dans Xcode « le widget apparaîtra sur l'écran d'accueil du simulateur. Pour tester Timeline Provider, utilisez WidgetKit Debug Profile : Xcode → Product → Profile → WidgetKit Debug. Vérifiez le comportement réel sur un appareil physique.

Résumé

  • Today Widget « une extension iOS pour afficher des informations sans ouvrir l'application.
  • WidgetKit (iOS 14+) « un framework moderne, NCWidgetProviding « legacy pour les anciennes versions.
  • Trois types de widgets : informatifs, interactifs (iOS 17+), configurables via Intents.
  • Timeline Provider gère le planning des mises à jour au lieu de minuteurs.
  • La conception doit être lisible rapidement : éléments minimaux, grande police, adaptation à la taille.
  • Interactivité via App Intents « boutons et interrupteurs sans ouvrir l'application.
  • WidgetCenter.shared.reloadTimelines « mise à jour programmatique lors du changement de données.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi