Prise en charge du multi-fenêtre dans ton appli iPad

Écrits · 7 oct. 2019

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, 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
L'iPad Pro, mon ordinateur principal, connecté à un terminal avec Blink

À 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
Prise en charge de plusieurs fenêtres sur iPad, avec deux instances de la même appli en même temps

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
Comparer différents mois dans l'appli calendrier
Regarder la carte à différentes échelles en même temps
Regarder la carte à différentes échelles en même temps

L'intention de conception

Quand Apple a introduit la prise en charge de plusieurs fenêtres sur iPad, 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
Ken Ferry explique la conception de la prise en charge de plusieurs fenêtres pour iOS pendant la WWDC 2019

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

D'un point de vue technique, Apple a introduit 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
Vue d'ensemble conceptuelle de la structure de l'interface d'iPadOS, expliquée par Steve Holt pendant la WWDC 2019
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)
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)

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)
Les rôles fonctionnels dans le cycle de vie d'une appli iPadOS (WWDC 2019, Steve Holt, Apple)

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
La même appli sur iOS/iPadOS et macOS

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
J'utilise mon appli « Lemmid (content) Manager » pour modifier un article de blog en regardant le résultat côte à côte
Je modifie un enregistrement DNS avec mon appli « Lemmid Domain » en gardant le contexte de toute la zone DNS
Je modifie un enregistrement DNS avec mon appli « Lemmid Domain » en gardant le contexte de toute la zone DNS
J'utilise mon appli « Lemmid Count » pour analyser les vues et le trafic d'un article sur willem.com
J'utilise mon appli « Lemmid Count » pour analyser les vues et le trafic d'un article sur willem.com
Développement web sur iPad avec Inspect et Blink côte à côte
Développement web sur iPad avec Inspect et Blink côte à côte

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) !

← Plus d'écrits