All posts in iOS

UIKit vs SwiftUI

UIKit

Pour développer des applications iOS en utilisant le langage Swift ou Objective-C, Apple propose un framework d’interface utilisateur impératif : UIKit. Il permet de construire la partie UI de l’application notamment via l’InterfaceBuilder, l’outil de développement d’interface graphique intégré dans Xcode.
La prise en main de cet outil peut être fastidieuse, et malgré l’habitude, ajouter un simple écran s’avère assez long. Il est tout d’abord nécessaire de glisser et déposer 1 à 1 chacun des composants, pour ensuite les lier entre eux afin de les positionner. Enfin, il faut toujours procéder de la même manière et déclarer ces derniers dans un ViewController.
Pour certains écrans, parfois complexes, cette méthode est chronophage et répétitive. De plus, les écrans créés par cet outil sont intégrés dans un fichier appelé Storyboard, pouvant contenir de multiples interfaces et donc présenter plusieurs inconvénients :

  • Un temps de chargement trop long
  • De nombreux conflits lors de merge (en utilisant Git par exemple)
  • Des composants non-dynamiques et non-adaptables
  • Une interface qui semble désordonnée

Exemple de Storyboard (Source: Swiftement)

Pour pallier ces difficultés, ainsi qu’aux nouveaux designs qui peuvent être plus exigeants, et par conséquent nécessiter un temps de développement plus important, en 2019, Apple a proposé un nouveau framework : SwiftUI.

SwiftUI

Ce nouveau framework d’UI propose une approche déclarative et n’est disponible qu’en Swift. La construction d’un écran se déroule directement dans le code, ce qui est beaucoup plus rapide et compréhensible par les développeurs. Construire une simple interface prendra ainsi peu de temps, chaque écran faisant partie d’un unique fichier (à contrario des Storyboards cités auparavant). Il propose également un canvas interactif permettant de visualiser les changements en temps réel selon plusieurs configurations, notamment pour l’accessibilité, rappelant ainsi les développements web et mobiles hybrides.

Ce framework peut à la fois être intégré dans des composants UIKit pour ainsi disposer de composants plus dynamiques. De par sa jeunesse, il peut également au contraire intégrer des composants UIKit afin de compenser un certain manque d’adaptabilité. N’étant disponible qu’à partir d’iOS13, certaines applications et téléphones restent évidemment incompatibles avec SwiftUI. Cependant, les versions minimales iPhone sont souvent augmentées pour des raisons de sécurité, rendant ainsi SwiftUI potentiellement supporté par tous les iOS dans un futur proche. A contrario d’UIKit, nécessitant la création d’un nouveau d’un projet en AppKit pour développer une application MacOS, SwiftUI prend lui en charge le multi-device de tous les appareils de la pomme.

Démonstration comparative chronométrée

Prenons l’exemple d’un écran constitué simplement d’un titre et d’un texte, possédant une valeur qui s’incrémente ou se décrémente à l’aide de deux boutons. L’approche de conception est bien différente, avec UIKit, le code n’est utilisé que pour la partie logique de l’application. La partie design se fait via un outil d’interface qui permet de construire notre écran au fur et à mesure, de manière plus contrôlée, mais plus lente; une bonne partie du temps est utilisée pour parcourir les menus des différents composants. Avec SwiftUI, nous restons sur la même page, en utilisant que très peu la souris et le pad, tout se construisant via le code. Les vidéos accélérées ci-dessous démontrent que l’approche SwiftUI est jusqu’à 2,5 fois plus rapide qu’UIKIt dans cet exemple.

UIKit Demo
SwiftUI Demo

Conclusion

Bien que l’utilisation des deux frameworks puissent s’associer, et qu’UIKit prévale de par son ancienneté, SwiftUI se démarque tant par son dynamisme, sa facilité de prise en main que par sa rapidité d’écriture et de conception me permettant, après un retour d’expérience, d’affirmer qu’il représente le futur du développement natif Swift.
Précédemment, j’avais pu développer un projet mobile natif Android en Java et iOS en Swift/UIKit, je me sentais beaucoup plus à l’aise sur Android, et retourner sur xCode m’apparaissait fastidieux et pénible, avec des temps de chargements longs, de simples écrans à construire pouvant prendre des heures de travail, pour le même rendu final sur Android, en 3 fois moins de temps. Apprendre et utiliser SwiftUI a donc été, sans l’ombre d’un doute, une vraie bouffée d’air frais. Le framework est certes encore jeune, mais tellement puissant, fluide et dynamique qu’il m’a donné à l’époque l’envie de rouvrir xCode !

CRM et support à la vente sur tablette

Akerys est l’un des plus importants promoteurs immobiliers du sud de la France. Couvrant toute la chaine de valeur, de la construction à la commercialisation des logements ; Akerys entend optimiser cette dernière étape tant il est capital de vendre les lots en un minimum de temps.

Pour cela, Akerys nous a demandé de développer une application destinée aux commerciaux pour présenter les résidences sur iPad à leurs prospects.

L’application est divisée en deux parties (cliente et serveur) :

  • Un back-office full-web pour la création des catalogues (images, vidéos, liens, géolocalisation)
  • Une application iPad de présentation des biens immobiliers, comprenant également un CRM (saisie des fiches prospects).

 

L’application iPad fonctionne en mode déconnecté, les échanges de données avec le serveur, que ce soit le catalogue des produits et les informations du CRM sont transmis par un mécanisme de synchronisation.

Gestion des réserves

Dans le secteur de la construction, la gestion des réserves, c’est à dire le recensement des malfaçons aux différentes étapes des travaux, est une activité essentielle qui peut s’avérer compliquée en raison du volume d’anomalies qui peut dépasser la dizaine de milliers sur certains gros chantiers.

Aujourd’hui grace aux tablettes tactiles il est possible d’outiller cette tâche et dégager ainsi d’importants gains de productivité. C’est ce que nous avons fait en développant pour notre client Wapp6, éditeur spécialisé dans la construction, l’application iOS et Android Opr6 (gestion des réserves).

Opr6 iPad

 

L’implémentation du client Opr6 a été réalisée grâce au framework Titanium qui permet d’obtenir deux versions de l’application : une pour iPad/iOS et une pour Android et cela avec un rendu visuel natif. L’application fonctionne en mode déconnecté, une synchronisation est faite une première fois avant de faire la visite de chantier pour rapatrier les données du projet (plans, réserves existantes, punchlists, listes des intervenants…) et une seconde fois à la fin de la visite pour consolider les saisies effectuées sur la tablette sur le cloud (serveur python/django pour les initiés). Un rapport est alors automatiquement généré et envoyé aux personnes concernées.

La fiabilité des informations de suivi, le gain de temps, l’efficacité générale s’en retrouvent énormément améliorés.

 

Les actes médicaux sur iPad

Pour le compte de MiPih, une des plus grandes structures publiques spécialisées dans le domaine de la santé, nous avons développé une application iPad de consultation du référentiel des actes médicaux.

L’application dispose d’un module de statistiques, d’une base de données locale (SQLite) répliquée d’une base de données Oracle. Le référentiel est historisé ainsi le médecin peut connaitre précisément la législation qui était applicable au moment de la réalisation de tel ou tel acte.

mipih

Sur le plan technique, l’application est bâtie autour d’une UISplitView et les données sont accédées au travers de l’API Core Data qui est l’ORM (Object-Relational Mapping) d’iOS. Un effort particulier a du être réalisé sur le paramétrage du framework pour atteindre les objectifs de performance ambitieux qui avaient été fixés : une navigation parfaitement fluide et une recherche au fil de l’eau multi-critères instantanée.