[iOS] Extension d’application

mardi 7 février 2017

Depuis iOS8, Apple nous offre la possibilité de créer des extensions

Une extension d’application n’est pas une application et donc son cycle de vie et son environnement sont différents d’une application. Une extension est lancée lorsque l’utilisateur la choisi dans l’interface utilisateur de l’application ou dans le centre de contrôle du device.

Une application que l’utilisateur emploie pour choisir une extension d’application est appelée application hôte. C’est lui qui déclenche le cycle de vie de cette extension d’application. Et donc le cycle de vie de cette extension se termine peu de temps après avoir complété la requête reçue d’une application hôte.

Par exemple, on a une application hôte qui sélectionne un texte.
Ensuite il active via un bouton de partage et choisit une extension d’application dans la liste.
Et donc l’application hôte répond à la demande de l’utilisateur en envoyant une requête à l’extension.
Le système instancie l’extension d’application identifiée dans la requête et établit un canal de communciation entre eux.
L’extension affiche la vue dans le contexte de l’application hôte, puis utilise les éléments reçu dans la demande de la requête de l’application hôte pour exécuter sa tâche.
L’utilisateur ensuite annule ou exécute la tâche dans l’extension et la rejette.
En réponse à cette action, l’extension complète la demande de l’application hôte en exécutant immédiatement la tâche de l’utilisateur ou, si nécessaire, en lançant un processus en arrière-plan pour l’exécuter.
L’application hôte retire la vue de l’extension et l’utilisateur retourne à son contexte précédent dans l’application hôte.
Lorsque la tâche de l’extension est terminée, qu’elle soit immédiate ou ultérieure, un résultat peut être renvoyé à l’application hôte.

Pour rappel, une extension est toujours créé depuis une application.
On appelle cette application, l’application container.
Il n’y a pas de communication directe entre l’extension et l’application container.
Généralement l’application container n’est même pas en cours d’exécution alors que l’extension elle, est en cours d’exécution.
Et il y a aucune communication possible entre l’application hôte et l’application contenant l’extension.

Le système ouvre une extension d’application pour le compte d’une application hôte, transmettant des données dans un contexte d’extension fourni par l’hôte. L’extension affiche une interface utilisateur, effectue un travail et, si cela est approprié pour l’extension, renvoie des données à l’hôte.

L’extension today est la seule extension qui peut ouvrir l’application container. Toute extension d’application et son application contenant peuvent accéder à des données partagées dans un conteneur partagé privé défini.

Ce qu’il faut aussi savoir c’est que dans une extension, certaines API ne sont pas disponibles en raison de son rôle ciblé dans le système.

Tags: Extension