Code

Mac Catalyst : comment rendre une application disponible sur iPhone, iPad et Mac !

Retour au blog

Avec les nouveaux Macs disposants de processeurs Apple Silicon (Apple M1), il est possible de rendre son app iOS ou iPadOS directement disponible dans le Mac App Store, sans développement supplémentaire. Le seul bémol, c'est que l'on se retrouve avec le look & feel d'une app iOS sur notre app macOS.


Pour être disponible sur tous les Mac et mieux s’intégrer à leur OS, Apple nous a servi Mac Catalyst. Présentée aux développeurs lors de la WWDC 2019, cette technologie permet de porter une app iOS nativement sur macOS.

Techniquement, comment ça marche ?

Autrement appelé « UIKit for Mac », Mac Catalyst invite les développeurs mobiles à créer une application Mac très facilement via UIKit, le framework de création d’interfaces sur iOS, au lieu d’AppKit, son pendant macOS. Le code sera identique, le résultat de la compilation différent, optimisé pour macOS. Visuellement, l’app utilisera les composants graphiques présents sur macOS et l’on pourra interagir avec le clavier et la souris directement.

Pour rendre possible un tel portage, Apple a achevé l’unification de ses différents frameworks bas-niveau (Foundation, CoreLocation, UserNotifications, …) entre toutes ses plateformes. Une app iOS et une app macOS s’appuient sur un socle commun, sur lequel vient se placer l’interface, où les frameworks UI se distinguent les uns des autres, chacun répondant aux besoins de leur plateforme.

Mac-Catalyst-application.png

Certaines APIs de AppKit sont également disponibles, comme NSTouchBar pour configurer la TouchBar des récents MacBook Pro. À l’inverse, certaines ne sont pas disponibles pour Mac Catalyst, par exemple celles utilisant le gyroscope ou l’accéléromètre.

Quels sont les avantages de Mac Catalyst ?

Mac Catalyst impressionne par l’adaptation des éléments visuels (contrôles, menus, alertes) en fonction de la plateforme sur laquelle l’application est distribuée. Cela permet un rendu natif sur macOS, comme si elle avait été développée avec AppKit.

Le partage du même code source est une belle promesse, et même si on viendra à certains endroits s’adapter à la plateforme, l’essentiel du code est partagé. Ajouter de nouvelles fonctionnalités ou maintenir et améliorer celles existantes sera plus rapide et donc moins coûteux.

La communauté de développeurs iOS étant bien plus importante que macOS, Mac Catalyst nous permet de franchir le pas et d’avoir une application Mac sans trop d’expériences sur macOS. Côté utilisateurs, cela va permettre d’étoffer l’offre d’applications disponibles sur le Mac App Store, pour l’instant bien plus maigre.

Une limitation à noter est la limite de performances que nous avons pu remarquer sur grands écrans avec une haute résolution, où des animations qui tournent nativement à 60fps se retrouvent bloquées à 30fps.

Un exemple très concret avec notre application Splash°

L'idée de Mac Catalyst est plutôt de pouvoir rapidement et facilement rendre compatible des apps de iPadOS à macOS que des apps iOS à macOS, de par leur design adapté à de plus grands écrans. Splash n’était disponible que sur iOS, afin de rendre l'app disponible sur iPadOS et macOS, il a fallu revoir l’architecture et adapter son design.

Nous sommes passés à un affichage avec deux vues côte à côte, pour optimiser l’utilisation de l’espace disponible, via un pattern list/detail. Il est important de tester sur des tailles d’écran divers, dans certains cas, sur iPadOS, l’écran est trop petit et l’interface pour iPhone s’affiche en lieu et place de celle pour iPad.

Même si la base de code est identique, il y a quelques différences qu’il convient de tester, notamment la gestion de la géolocalisation, moins poussée sur macOS.

De plus, il est judicieux de rajouter des entrées dans le menu, ainsi que des raccourcis pour les actions utiles, très prisées sur Mac, beaucoup moins présentes sur support mobile.

Lors du déploiement de l’app, il est dommage de noter que Testflight n’est pas encore disponible (le support pour macOS a été annoncé pour l'automne 2021), le partage de versions bêtas est donc plus fastidieux que sur iOS.

Parce qu'une image vaut mille mots, avant, pendant, après...

 

Capture d’écran 2021-09-17 à 15.20.17.png
Capture d’écran 2021-09-17 à 15.19.49.png
Simulator Screen Shot - iPad Pro (11-inch) (3rd generation) - 2021-09-17 at 15.18.55.png
Simulator Screen Shot - iPhone 12 - 2021-09-17 at 15.19.30.png

En quoi Catalyst est un véritable game changer ?

Rendre une application disponible sur trois type d'appareils, iPhone, iPad et Mac peut sembler complexe, les écrans ne sont pas de la même taille, les utilisateurs n'ont pas les mêmes attentes selon s'ils sont sur mobile ou desktop.

Pourtant, Catalyst offre un réel avantage, vous n'avez pas besoin de faire développer une app iPhone séparément de votre web app. Le fait d'avoir une seule application compatible aux trois types d'appareils, vous gagnez en temps de développement, ce qui va également réduire le budget !

Si vos utilisateurs ou clients ont besoin d'utiliser votre produit sur iPhone, iPad et Mac, Mac Catalyst peut répondre à vos besoins, sans devoir développer en double votre app. Les améliorations et mises à jour seront, elles aussi plus simple étant donné que vous n'avez qu'un seul et même code source à modifier.

Auteur

Publié le 13 septembre 2021

Ingénieur Logiciel · Mobile