---
title: "Prise en charge du multi-fenêtre dans ton appli iPad"
date: 2019-10-07
language: fr
topics: ["apple", "design", "iOS", "iPad", "programming", "tablet", "work"]
source_url: https://willem.com/fr/2019-10-07_prise-en-charge-du-multi-fenetre-dans-ton-appli-ipad/
---
# Prise en charge du multi-fenêtre dans ton appli iPad

*Développement natif pour iPadOS*

> Le mois dernier, Apple a lancé iPadOS, le premier système d'exploitation dédié à l'iPad. Il se distingue d'iOS par sa prise en charge du plus grand écran de l'iPad, avec notamment les fenêtres multiples / l'écran partagé. Je développe des applis et il était temps de profiter de ces nouvelles possibilités qu'offre iPadOS.

Depuis 2016, j'utilise_l'iPad_comme_ordinateur_principal (https://willem.com/en/inside-and-outside-apple-using-questioning-and-escaping-the-ecosystem/), c'est un super ordinateur mobile. Son système d'exploitation est pourtant différent de celui de la plupart des ordinateurs. iPadOS repose sur iOS, qui tourne sur le célèbre téléphone mobile d'Apple, l'iPhone. Cela rend l'iPad un peu différent au quotidien, à cause de la manière dont il exécute les applis.

![L'iPad Pro, mon ordinateur principal, connecté à un terminal avec Blink](https://willem.com/global/images/590ada94c4e1.webp)

À cause de ses racines de smartphone, iPadOS gère les applis comme le fait un iPhone : elles tournent en plein écran, concentrées sur une seule tâche. Les gens adorent l'iPad pour ça, c'est une excellente façon de garder l'esprit concentré sur une seule chose.

## Prise en charge de plusieurs fenêtres sur iPad

Il y a des situations où faire tourner plusieurs fenêtres en même temps peut être très utile, et c'est là qu'Apple a amélioré iPadOS en permettant d'exécuter des applis côte à côte.

![Prise en charge de plusieurs fenêtres sur iPad, avec deux instances de la même appli en même temps](https://willem.com/global/images/d4097d9a5811.webp)

Même quand tu travailles sur une seule tâche, la prise en charge de plusieurs fenêtres est très utile, car elle te permet d'ouvrir plusieurs instances de la même appli en même temps. Cela ouvre différents cas d'usage où tu peux regarder et modifier un contenu sous plusieurs angles. Par exemple comparer deux mois différents dans ton agenda, modifier un long document ou regarder la carte à différentes échelles en même temps.

![Comparer différents mois dans l'appli calendrier](https://willem.com/global/images/b0fd605efa8d.webp)

![Regarder la carte à différentes échelles en même temps](https://willem.com/global/images/62fc3c1ace78.webp)

## L'intention de conception

Quand Apple_a_introduit_la_prise_en_charge_de_plusieurs_fenêtres_sur_iPad (https://developer.apple.com/videos/play/wwdc2019/212), elle l'a conçue dans le respect des racines mobiles d'iPadOS. Contrairement aux applis PC traditionnelles, où un logiciel complexe peut tourner par défaut dans plusieurs fenêtres (et panneaux) *différents*, iPadOS maintient l'exigence qu'une appli doit pouvoir tout faire depuis une seule fenêtre.

Sur iPad, c'est une règle de conception : toutes les fenêtres d'une appli sont du même type, et chacune peut tout faire dans l'application. L'utilisateur doit pouvoir tout faire depuis une seule fenêtre s'il le souhaite. Il doit pouvoir créer plusieurs fenêtres seulement s'il le juge utile, mais l'appli ne doit jamais l'exiger. Cela préserve la simplicité de fonctionnement des applis sur iPadOS : tu peux continuer à les utiliser en plein écran, comme sur un smartphone.

![Ken Ferry explique la conception de la prise en charge de plusieurs fenêtres pour iOS pendant la WWDC 2019](https://willem.com/global/images/64d2bc5a822d.webp)

## Cycle de vie de l'appli (et changements de code)

D'un point de vue technique, Apple_a_introduit (https://developer.apple.com/documentation/uikit/app_and_environment/scenes/supporting_multiple_windows_on_ipad) UIWindowScene avec une abstraction UISceneSession correspondante dans la structure de l'interface. Elle se place entre UIScreen et UIWindow.

![Vue d'ensemble conceptuelle de la structure de l'interface d'iPadOS, expliquée par Steve Holt pendant la WWDC 2019](https://willem.com/global/images/7b7e0e6a8f2a.webp)

![Vue d'ensemble conceptuelle d'UISceneSession, qui fournit l'état d'interface persistant entre les représentations de l'appli (WWDC 2019, Steve Holt, Apple)](https://willem.com/global/images/3d8992b418c8.webp)

Quand iPadOS (et iOS) font tourner plusieurs applis, il se peut que le système ferme une appli en arrière-plan pour économiser la mémoire et l'énergie. C'est voulu : cela garde le système rapide et ménage la batterie.

Du point de vue du cycle de vie de l'appli, cela signifie qu'au démarrage, tu dois vérifier si ton appli tournait déjà avant. S'il existe une UISceneSession, l'appli doit s'y reconnecter, pour offrir à l'utilisateur un état d'interface persistant. Si c'est bien fait, l'utilisateur ne remarquera pas que l'appli a été interrompue en arrière-plan.

![Les rôles fonctionnels dans le cycle de vie d'une appli iPadOS (WWDC 2019, Steve Holt, Apple)](https://willem.com/global/images/0cc957f952fe.webp)

Si tu adoptes les nouveaux concepts UIWindowScene (et UISceneSession) dans ton appli, tu pourras profiter des nouvelles capacités multi-fenêtres de l'iPad. Mais il y a encore une chose : Apple prévoit d'amener les applis iOS et iPadOS sur le Mac. Avec ces nouveaux concepts d'interface, ton appli tournera très bien sur macOS aussi !

![La même appli sur iOS/iPadOS et macOS](https://willem.com/global/images/8a48b3cb9b2d.webp)

## En pratique

En tant que développeur, j'ai eu peu de mal à intégrer ces nouveaux concepts d'interface dans mes applis. Avec relativement peu d'efforts, tu peux ouvrir de nombreux cas d'usage où la même appli donne plus de puissance à l'utilisateur.

![J'utilise mon appli « Lemmid (content) Manager » pour modifier un article de blog en regardant le résultat côte à côte](https://willem.com/global/images/5d22d4b5df00.webp)

![Je modifie un enregistrement DNS avec mon appli « Lemmid Domain » en gardant le contexte de toute la zone DNS](https://willem.com/global/images/a825ee524dfd.webp)

![J'utilise mon appli « Lemmid Count » pour analyser les vues et le trafic d'un article sur willem.com](https://willem.com/global/images/7f6a0e735536.webp)

![Développement web sur iPad avec Inspect et Blink côte à côte](https://willem.com/global/images/be682d70074e.webp)

## Conclusion

Apple n'a pas précipité la prise en charge de plusieurs fenêtres sur iPad, elle a pris son temps pour bien la concevoir. Si tu adoptes ces nouveaux concepts, ton appli sera plus puissante pour ses utilisateurs.

C'est toujours une bonne idée de prendre le temps de comprendre les concepts d'interface sous-jacents avant de te lancer dans le développement. Fais-le bien (et proprement) plutôt que vite (et bêtement) !
