Prise en charge des extensions sous iOS, iPadOS et macOS
iOS, iPadOS et macOS permettent aux apps d’étendre les fonctionnalités d’autres apps au moyen d’extensions. Incorporées dans une app, les extensions sont des exécutables binaires signés ayant une fonction spéciale. Au cours de l’installation, le système détecte automatiquement les extensions et les met à la disposition des autres apps à l’aide d’un système de mise en correspondance.
Points d’extension
Une zone système prenant en charge les extensions est appelée point d’extension. Chaque point d’extension fournit des API et applique des règles pour cette zone. Le système détermine quelles extensions sont disponibles d’après des règles de mise en correspondance propres au point d’extension. Le système lance automatiquement les processus d’extension lorsque cela est nécessaire et gère leur durée de vie. Des déclarations d’autorisation peuvent être utilisées pour limiter la disponibilité des extensions à des apps système précises. Par exemple, un widget d’affichage Aujourd’hui n’apparaît que dans le Centre de notifications, et une extension de partage n’est disponible que dans la sous‑fenêtre Partage. Les points d’extension sont, par exemple, les widgets Aujourd’hui; Partager; Actions; Édition photo; Fournisseur de fichier; et Clavier personnalisé.
Communication des extensions
Les extensions s’exécutent dans leur propre espace d’adressage. La communication entre une extension et l’app à partir de laquelle elle a été activée se fait via des communications interprocessus assistées par le cadre d’application système. Les extensions n’ont pas accès aux fichiers ni aux espaces mémoire des autres extensions. Elles sont conçues pour être isolées les unes des autres, de l’app qui les contient et des apps qui les utilisent. Elles sont mises en bac à sable comme toute autre app tierce et possèdent un conteneur distinct de celui de l’app. Toutefois, elles partagent le même accès aux contrôles de confidentialité que l’app qui les contient. Ainsi, si un utilisateur accorde l’accès aux contacts à une app, cette autorisation est étendue aux extensions intégrées à celle‑ci, mais pas aux extensions activées par celle‑ci.
Utilisation des claviers personnalisés
Les claviers personnalisés sont un type spécial d’extensions activée par l’utilisateur pour l’ensemble du système. Lorsqu’une extension de clavier est activée, elle est utilisée pour toute saisie de texte, à l’exception des codes et de tout autre texte saisi dans une vue sécurisée. Pour limiter le transfert des données utilisateur, les claviers personnalisés s’exécutent par défaut dans un bac à sable très restrictif bloquant l’accès au réseau, aux services réalisant des opérations réseau pour le compte d’un processus et aux API qui permettraient à l’extension d’envoyer les données saisies. Les développeurs de claviers personnalisés peuvent demander à ce que leur extension bénéficie d’un accès libre, ce qui permet au système de l’exécuter dans le bac à sable par défaut après obtention du consentement de l’utilisateur.
Gestion des appareils mobiles (GAM) et extensions
Pour les appareils inscrits à une solution de gestion des appareils mobiles, les extensions de document et de clavier obéissent aux règles de gestion des autorisations d’ouverture (Managed Open In). Par exemple, la solution de GAM peut contribuer à empêcher les utilisateurs d’exporter un document d’une app gérée vers un fournisseur de documents non géré, ou d’utiliser un clavier non géré avec une app gérée. En outre, les développeurs d’apps peuvent empêcher l’utilisation d’extensions de clavier tierces avec leur app.