App Extensions et intégrations système dans le développement mobile : ce qu'elles sont, types et fonctionnement

Auteur : IT Sectr Publié le : 2026-06-22 Temps de lecture : 11 min

Les App Extensions sont des modules exécutables séparés qui étendent les capacités d'une application mobile au-delà de son interface principale : Today Widget sur l'écran d'accueil, traitement des appels VoIP via CallKit et réaction aux événements système via BroadcastReceiver. Les intégrations système permettent à une application d'interagir avec le système d'exploitation à un niveau profond, débloquant des fonctions indisponibles pour les écrans ordinaires. Selon la Documentation Développeur Apple, chaque extension s'exécute dans un processus isolé et est gérée par le système indépendamment de l'application principale. Les App Extensions dans une application mobile permettent d'implémenter des fonctionnalités indisponibles dans le processus principal.

Points clés

  • App Extensions — binaires séparés au sein d'une application qui étendent ses fonctionnalités au-delà du processus principal
  • CallKit — un framework pour intégrer les appels VoIP dans l'interface d'appels système de l'iPhone
  • BroadcastReceiver — un composant Android qui réagit aux messages de diffusion système
  • AppWidgetProvider — une classe de base pour créer des widgets sur Android avec support RemoteViews
  • Content Provider — un composant Android pour partager des données entre applications via ContentResolver

App Extensions sur iOS : widgets et extensions de partage de contenu

Les App Extensions sur iOS sont apparues avec iOS 8 et sont devenues le fondement des intégrations système dans le développement mobile. Ce sont des binaires séparés regroupés avec l'application principale, mais lancés dans un processus isolé. Chaque extension a son propre Info.plist et un point d'entrée défini via NSExtensionPrincipalClass. Le système gère le cycle de vie des App Extensions — elles ne peuvent pas rester en arrière-plan après avoir terminé une tâche.

WidgetKit et Today Widget

WidgetKit (iOS 14+) est un framework moderne pour créer des widgets sur l'écran d'accueil. WidgetKit utilise SwiftUI pour décrire l'interface et TimelineProvider pour définir les calendriers de mise à jour. Les widgets existent en trois tailles : petit (2×2 cellules), moyen (4×2) et grand (4×4). L'ancien Today Widget basé sur UICollectionViewController est toujours pris en charge, mais Apple recommande de migrer vers WidgetKit. Les App Extensions sur WidgetKit ne supportent pas les animations, la saisie clavier ou les gestes — ce sont des éléments statiques ou pseudo-animés avec des mises à jour périodiques.

Share Extension et Action Extension

Share Extension permet d'envoyer du contenu depuis n'importe quelle application vers la vôtre via la feuille de partage système. Share Extension reçoit des données via NSExtensionItem et utilise SLComposeServiceViewController pour l'interface. Action Extension traite le contenu sur place — par exemple, elle traduit du texte dans le navigateur sans passer à une autre application. Les deux types doivent terminer leur travail dans un temps limité, sinon le système « tue » l'extension. C'est une limitation importante des App Extensions dans une application mobile — les tâches d'arrière-plan ne sont pas disponibles au niveau des extensions.

CallKit, PushKit et SiriKit — intégrations système pour la voix et les notifications

Les intégrations système sur iOS vont bien au-delà des widgets : CallKit, PushKit et SiriKit permettent à une application mobile de fonctionner au niveau système. Ces frameworks nécessitent des entitlements spéciaux mais offrent une expérience fluide à l'utilisateur — les appels via CallKit ressemblent à des appels téléphoniques normaux, et Siri traite les demandes sans ouvrir l'application.

CallKit — appels VoIP dans l'interface système

CallKit intègre les appels d'applications tierces dans l'écran d'appels système, y compris l'écran verrouillé. CXProvider enregistre l'application comme service VoIP, et CXCallController gère les appels. CallKit bloque automatiquement les appels en double et supporte Call Directory Extension pour bloquer les numéros indésirables. Les intégrations système dans le développement mobile avec CallKit sont essentielles pour les applications de communication vocale — WhatsApp, Skype et Zoom l'utilisent pour afficher les appels entrants.

PushKit — notifications push en arrière-plan

PushKit délivre les notifications push directement à l'application mobile sans les afficher à l'utilisateur. PushKit réveille l'application d'un état « tué » et transmet les données via le délégué PKPushRegistryDelegate. C'est le mécanisme principal pour les applications VoIP : PushKit délivre les informations d'appel, et CallKit les affiche. PushKit a une priorité de livraison plus élevée que les notifications push ordinaires et ne nécessite pas l'affichage d'une bannière. Les App Extensions dans les applications mobiles combinent souvent PushKit avec CallKit pour la communication vocale.

SiriKit et Intents Extension

SiriKit permet de traiter les demandes via Siri et l'application Raccourcis. Intents Extension est une App Extension séparée qui enregistre les intentions prises en charge et les traite. SiriKit supporte plus de 20 domaines : appels, messages, paiements, notes, entraînements. Les Raccourcis permettent à l'utilisateur de créer des automatisations — par exemple, « Envoyer un message dans WhatsApp via Siri ». Les intégrations système avec SiriKit et les Raccourcis augmentent l'engagement car l'utilisateur effectue des actions sans ouvrir l'application.

BroadcastReceiver et services système sur Android

BroadcastReceiver est un composant Android qui réagit aux messages de diffusion système. Contrairement aux App Extensions iOS, BroadcastReceiver ne nécessite pas de binaire séparé — il suffit d'enregistrer le récepteur dans le manifeste ou dans le code via Context.registerReceiver. Les intégrations système sur Android commencent souvent par BroadcastReceiver : du démarrage d'un service au démarrage de l'appareil à la réaction à la connexion réseau.

IntentFilter pour les événements système

IntentFilter lie BroadcastReceiver à un événement système spécifique. Événements typiques : BOOT_COMPLETED (démarrage de l'appareil), CONNECTIVITY_ACTION (changement de réseau), BATTERY_LOW (batterie faible), TIME_SET (changement d'heure). Le récepteur est enregistré dans AndroidManifest.xml ou via Context.registerReceiver pour un enregistrement dynamique. L'enregistrement dynamique est préférable — il ne nécessite pas de permissions dans le manifeste et ne fonctionne que lorsque l'application est active. Les App Extensions sur Android n'existent pas en tant que concept, mais BroadcastReceiver joue un rôle similaire — il étend les capacités de l'application grâce aux intégrations système.

NotificationListenerService et AccessibilityService

NotificationListenerService est un service qui reçoit toutes les notifications système. NotificationListenerService nécessite la permission BIND_NOTIFICATION_LISTENER_SERVICE et un accès via les paramètres d'accessibilité. AccessibilityService est un outil plus puissant pour l'intégration système : il peut lire le contenu de l'écran, simuler des clics et automatiser des actions. Les deux services nécessitent une activation explicite par l'utilisateur dans les paramètres, ce qui améliore la sécurité. Les intégrations système dans les applications mobiles via AccessibilityService sont utilisées pour les auto-remplisseurs, les lecteurs d'écran et les outils d'accessibilité.

kotlin
class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            WorkManager.getInstance(context)
                .enqueueUniqueWork("post-boot", ...)
        }
    }
}

L'exemple enregistre un BroadcastReceiver pour l'événement BOOT_COMPLETED. WorkManager est utilisé pour l'exécution différée de tâches après le démarrage de l'appareil — c'est l'approche standard pour les applications Android.

App Widget Provider — création de widgets sur Android

App Widget Provider sur Android est l'équivalent des App Extensions iOS dans le contexte des widgets : c'est un composant qui affiche du contenu interactif sur l'écran d'accueil. Contrairement à WidgetKit, les widgets Android peuvent accepter les entrées utilisateur — clics, bascules et gestes. App Widget Provider est enregistré dans le manifeste via une description XML de la taille et de la fréquence de mise à jour.

RemoteViews et AppWidgetProvider

RemoteViews décrit l'interface du widget via une mise en page XML et ne supporte qu'un ensemble limité de vues. RemoteViews n'autorise pas les vues personnalisées — seulement les composants standard : TextView, ImageView, Button, ProgressBar. AppWidgetProvider est la classe de base qui gère les mises à jour, l'activation et la suppression du widget. La méthode onUpdate est appelée par minuteur via updatePeriodMillis ou via WorkManager pour un contrôle précis. Les intégrations système avec les widgets sur Android nécessitent de la prudence — des mises à jour trop fréquentes épuisent la batterie.

Glance API (Jetpack) — approche moderne

Glance API est une bibliothèque Jetpack pour créer des widgets en utilisant Kotlin DSL au lieu de XML. Glance API se compile en RemoteViews et supporte une syntaxe similaire à Compose : GlanceComposable, Column, Row, Text. La bibliothèque résout le problème du code XML complexe et permet de tester les widgets via JUnit. Glance API ne supporte pas encore toutes les fonctionnalités de RemoteViews — pour les widgets interactifs complexes, l'approche classique est préférable. Les App Extensions dans le développement mobile sur Android évoluent vers Glance API, simplifiant la création et la maintenance des widgets.

Content Provider, FileProvider et partage de données entre applications

Content Provider est un composant Android pour partager des données structurées entre applications via une interface unifiée ContentResolver. Contrairement aux App Extensions iOS, Content Provider ne crée pas de processus séparé — les données sont demandées de manière synchrone dans le contexte de l'application appelante. Content Provider est le fondement des intégrations système sur Android : les contacts, fichiers multimédia, calendrier et applications standard l'utilisent pour publier des données.

FileProvider pour le partage sécurisé de fichiers

FileProvider est une sous-classe de ContentProvider pour le transfert sécurisé de fichiers entre applications. FileProvider génère des URI temporaires content:// au lieu de chemins file:// directs, qui sont interdits sur Android 7+. Pour l'utiliser, vous devez spécifier files-path ou external-files-path dans la configuration XML. Les App Extensions dans le développement mobile sur Android n'existent pas en tant que concept séparé, mais FileProvider remplit leur fonction — il étend les capacités de partage de données au-delà d'une seule application.

Équivalent iOS : File Provider Extension

Sur iOS, le rôle du partage de fichiers est assuré par File Provider Extension. File Provider Extension publie les fichiers de l'application dans l'application Fichiers via NSFileProviderManager. Contrairement à FileProvider, l'extension iOS nécessite un binaire séparé et s'exécute dans un processus isolé. File Provider Extension supporte NSFileProviderItem pour la description des fichiers et NSFileProviderEnumerator pour la navigation dans les dossiers. Les intégrations système dans les applications mobiles via File Provider Extension permettent à l'utilisateur de gérer les fichiers de l'application depuis l'application Fichiers sans l'ouvrir.

swift
class MyFileProviderExtension: NSFileProviderExtension {
    override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
        return MyFileProviderItem(identifier: identifier)
    }
}

L'exemple montre une implémentation minimale de File Provider Extension en Swift. La méthode item(for:) retourne un objet NSFileProviderItem par identifiant — le système l'appelle lors de l'affichage des fichiers dans l'application Fichiers.

Foire aux questions

Que sont les App Extensions sur iOS ?

Les App Extensions sont des binaires séparés qui étendent les fonctionnalités de l'application au-delà de son processus : Today Widget, Share Extension, Action Extension, Keyboard Extension et d'autres types qui s'exécutent dans un environnement isolé.

Quelle est la différence entre CallKit et PushKit ?

CallKit intègre les appels VoIP dans l'interface d'appels système avec affichage sur l'écran verrouillé. PushKit délivre des notifications push en arrière-plan sans les montrer à l'utilisateur — il réveille l'application pour traiter des données, comme les informations d'un appel entrant.

Qu'est-ce que BroadcastReceiver sur Android ?

BroadcastReceiver est un composant Android qui réagit aux messages de diffusion système : démarrage de l'appareil (BOOT_COMPLETED), connexion réseau (CONNECTIVITY_ACTION), changements de mode avion et autres événements du système d'exploitation.

Comment créer un widget sur Android ?

Utilisez AppWidgetProvider avec RemoteViews pour créer l'interface du widget ou Glance API (Jetpack) pour l'approche Kotlin DSL. Le widget est enregistré dans le manifeste via une description XML spécifiant la taille et la fréquence de mise à jour.

À quoi sert Content Provider ?

Content Provider est un composant Android pour partager des données entre applications via ContentResolver. Il est utilisé pour accéder aux contacts, fichiers multimédia et toutes données structurées provenant d'autres applications.

Résumé

  • App Extensions — le fondement des intégrations système sur iOS : widgets, partage, traitement de contenu et extensions clavier dans des processus isolés
  • CallKit et PushKit — une paire de frameworks pour les appels VoIP : PushKit délivre les données, CallKit affiche l'interface d'appel
  • BroadcastReceiver — l'équivalent Android des App Extensions pour réagir aux événements système sans binaire séparé
  • AppWidgetProvider — un composant pour les widgets sur Android avec support RemoteViews et Glance API
  • Content Provider et FileProvider — mécanismes de partage de données entre applications sur Android via ContentResolver
  • File Provider Extension — l'équivalent iOS de FileProvider pour publier des fichiers dans l'application Fichiers depuis un processus isolé
  • Les intégrations système dans le développement mobile unissent App Extensions, BroadcastReceiver, CallKit et Content Provider en un seul écosystème

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