Publié par et

Il y a 2 semaines -

Temps de lecture 11 minutes

WWDC 2020 – Keynote & Platform State of The Union revue par des développeurs

Comme chaque année, le keynote WWDC d’Apple est l’événement que les développeurs Swift et Objective-C attendent avec impatience pendant 12 mois. Pourtant, il s’agit parfois principalement d’un événement axé consommateurs, riche en démonstrations de produits conçues pour plaire aux utilisateurs finaux, en particulier si comparé aux dizaines des créneaux très techniques offerts à la WWDC.

Le «vrai» keynote «développeur», quant à lui, a lieu quelques heures plus tard, et précisément à 14:00, heure du Pacifique: il s’agit du Platform State of The Union.

Habituellement riche – voire trop riche – en informations, le SOTU présente de façon rapide, mais tout aussi technique, les principales évolutions technologiques des dernières versions de la plate-forme : c’est donc, et de loin, le meilleur moyen d’avoir un aperçu global de toutes les présentations beaucoup plus détaillés qui se déroulent au long de la semaine de la WWDC.

À l’aide de cet article, nous souhaitons passer en revue toutes les annonces majeures de l’état de l’Union de cette année.

L’état de l’Union 2020 en bref

Sans surprise, la majeure partie tu temps a été passé sur les versions universelles de macOS, avec quelques zooms sur la nouvelle plateforme et, surtout, la transition depuis Intel vers ARM (a.k.a Apple Silicon) macOS.

MacOS équipé de la puce customisée Apple Silicon

Afin d’autoriser des applications pré-existantes à supporter les nouveaux mac Apple Silicon, les développeurs pourront utiliser deux solutions:

  • Universal 2 Binary Bundles: ce sont peu ou prou des binaires “fat“ composé de couches x86 et ARM.
  • Rosetta 2: un mode d’émultation qui traduit une app Intel vers ARM au moment de l’installation ou au premier lancement (Les extensions de kernel ne sont pas supportées)

Les applications Universal 2 auront probablement de meilleurs performances que Rosetta 2, bien qu’Apple garantit que le mode d’émulation fourni par ce dernier sera capable de supporter des tâches lourdes, tel que le jeu vidéo.

Afin de construire ces applications, Xcode for universal macOS permettra de compiler pour ARM, mais aussi de deboguer des applications x86 en mode émulé au moyen de Rosetta 2.

Il est intéresdant de noter qu’une nouvelle machine est en cours de déploiement auprès des développeurs: le Developer Transition Kit, qui consiste en un mac mini équipé d’une puce ARM Apple A12Z – la même qui est utilisée sur iPad Pro.

Ainsi, il ne devrait pas être surprenant qu’il soit possible de faire tourner des application iPhone et iPad nativement sur les nouveaux macs, sans re-compilation.

To allow most developers work on the platform since day 0, Apple has been helping porting of a wide range of common libraries to ARM. It’s the case, most notably, for Homebrew, MacPorts, Node, cmake, OpenCV, Go, Reintdis and even Electron, OpenJDK and Chromium!

Another feature mentioned during Keynote and Platform State of The Union is virtualization. Virtualization via the Hypervisor framework has been supported for a long time on Intel macOS: this component will be available since launch on the new ARM-based macOS, with a dedicated Docker version which is in the works.

That’s overall a great deal of new features for macOS, which is also getting a new Major version number after 15 years: Big Sur will also be known as macOS 11.

Mac Catalyst

Pour accélérer la migration vers ARM macOS, Apple continue à investir dans le développement de App Catalyst, avec notamment:

  • des nouvelles API pour les menus et la barre latérale
  • les couleurs d’accent seront disponibles sur macOS et iPadOS
  • un user interface idiom peut être utilisé pour cibler spécifiquement macOS

Mais voyons dans un schéma comment Catalyst s’intègre dans l’écosystème actuel.

1Compilé en mode Universal 2
2Peut utiliser le nouveau idiom mac pour créer interfaces spécifiques macOS/iPadOS
3Avec une target Xcode dédiée à macOS ou via Catalyst

iOS et iPadOS

Toutes les nouveautés iOS sont portées sur iPadOS. Cependant, l’iPad dispose désormais de certains traitements spéciaux qui ont été annoncés lors de la présentation :

Une nouvelle barre latérale

 

Vous pouvez l’utiliser pour afficher votre application sous forme de vue tryptique ou pour remplacer la barre d’onglets (comme dans Photos). En tant que développeur, aucun effort additionnel est apparemment demandé lorsque vous utilisez UISplitViewController (UIKit) ou NavigationView (SwiftUI).

Un nouveau DatePicker

Ce nouveau composant porte le nom d’UIDatePicker pour UIKit et simplement DatePicker pour SwiftUI.

Un nouveau ColorPicker et EyeDropper

Excellente nouvelle, il existe désormais un moyen standardisé de choisir une couleur. Ce nouveau composant s’appellera UIColorPickerViewController sous UIKit et ColorPicker sous SwiftUI.

Des nouveaux menus

Ces nouveaux menus contextuels s’adaptent mieux aux usage bureau et tablette : leur utilisation est désormais préférée aux ActionSheets.

Scribble et nouvelles APIs PencilKit

Ces nouveautés sont est peut-être passées inaperçues, mais ce sont vraiment géniales pour les utilisateurs “pro” d’iPad. Vous pouvez maintenant modifier n’importe quel champ de texte en écrivant avec votre Apple Pencil, faire reconnaître votre écriture à la main et, avec un peu de magie « embarquée », remplir votre champ de texte comme vous le feriez avec un clavier.

Du point de vue développeur, PencilKit reçoit également de nouvelles API, permettant à votre application de récupérer le même niveau de détail que celui actuellement utilisé par les applications développées par Apple.

ARKit 4

Avec ARKit 4 mais notamment grâce au scanner LiDAR intégré aux nouveaux iPad Pros, ARKit obtient de nouvelles fonctionnalités intéressantes (dont une partie avait déjà été dévoilée dans ARKit 3.5). En particulier, il est désormais facile pour les développeurs de reconstruire une scène physique en 3D et de placer les objets précisément dans l’espace tridimensionnel, en prenant en compte l’occlusion des objets et des personnes.

Il est temps de jeter un nouveau regard sur la technologie, car les futurs iPhones inclueront très probablement un scanner LiDAR également.

Widgets

Présentés pour la première fois sous le nom de « Today Extensions », les widgets sont devenus encore plus puissants avec iOS 14. Vous pouvez désormais ajouter des widgets empilables sur votre écran d’accueil, avec 3 tailles différentes et plus de détails dans l’interface utilisateur.

Dans ce contexte, avec un écran d’accueil affichant en permanence ces « mini-applications », les performances et l’empreinte mémoire sont primordiales. C’est la raison pour laquelle Apple a créé un mécanisme pour sérialiser une vue SwiftUI en un artefact léger appelé « Archived View », qui agit comme un gabarit.

Grâce à WidgetKit, la toute nouvelle API SwiftUI pour les widgets, les développeurs peuvent pousser les données qui populeront les « Vues archivées » sur un objet « chronologie » ; le système se chargera ensuite de mettre à jour visuellement le widget. En outre, les développeurs peuvent tirer parti de la notion de «score de pertinence» que WidgetKit prendra en compte afin de rendre la vue lorsqu’elle est pertinente. De cette façon, pas besoin d’exécuter constamment le code de l’application ni la passe de rendering : le système prendra en charge ces tâches pour vous. Bien sûr, comme vous pouvez le deviner, vous n’avez pas le plein contrôle et ne pourrez pas faire tout ce que vous voulez, quand vous le souhaitez: le système donne le tempo et fournit à votre application la possibilité de pousser son propre ensemble d’éléments dans la timeline .

Du point de vue de l’implémentation, WidgetKit fonctionne de la même manière que vanilla SwiftUI, avec d’autres protocoles très similaires à View. Nous approfondirons les widgets et WidgetKit dans un prochain article, promis!

Clips d’application

Une autre caractéristique majeure que nous attendions étaient les App Clips. Pour ceux qui connaissent Android, le concept est fondamentalement le même que Google Play Instant Apps: les clips d’application ne sont rien d’autre qu’une petite application native qui peut être utilisée sans passer par l’App Store.

Les App Clips peuvent être ouverts via une URL dédiée ou en scannant une balise spécifique avec l’application Camera.app ou le lecteur NFC ; une fois le tag détecté, un petit écran de lancement (Card) apparaît sur l’écran, permettant de lancer immédiatement l’App Clip.

Une fois ouverts, les App Clips fonctionnent comme une application normale, mais lorsqu’ils sont fermés, ils n’apparaissent pas parmi les autres applications dans l’écran d’accueil mais sont accessibles à nouveau à partir de la page « App Library ».

Pour permettre une ouverture rapide, la taille de cette mini-appli doit être inférieure à 10 Mo. Par conséquent, Apple déconseille l’intégration de librairies tierces ou de fonctionnalités inutiles. D’autre part, les App Clips peuvent bénéficier de nouvelles notifications éphémères, qui peuvent être affichées dans les 8 heures suivant la dernière ouverture de l’application.

Parmi les autres fonctionnalités prises en charge par les App Clips, nous signalons la présence d’un composant préconfiguré pour encourager l’installation de l’application complète et la migration automatique des UserDefaults d’un App Clip vers l’application principale.

Pour démarrer rapidement avec les clips d’application, Xcode 12 intègre un nouveau template (et il y en aura beaucoup plus cette année !)

App Store

Tout comme la version Big Sur de Safari, qui vous montrera combien de trackers publicitaires vous observent, les développeurs devront désormais fournir des informations de confidentialité à propos de leurs applications sur l’App Store. Il s’agit d’un moyen simplifié pour savoir si vous souhaitez partager certaines informations ou non.

watchOS et tvOS

Avec la plupart des 90 minutes consacrées à macOS; watchOS et tvOS n’ont pas attiré beaucoup d’attention. Nous mentionnons ici le fait que Watch Faces peut enfin montrer plusieurs complications à partir de la même application, ce qui a nécessité une évolution sur le watchOS SDK. Maintenant, il est là, avec la possibilité de créer des complications avec SwiftUI.

Xcode

Document tabs. Document tabs ! Do-cu-ment tabs !! Vous aussi, ça vous enniue de naviguer sans cesse dans les onglets, les fichiers, les issues, la recherche, git… etc? Eh bien, c’est fini. Vous pouvez maintenant facilement avoir un onglet «actuel» qui change à mesure que vous sélectionnez vos fichiers et ouvrez de nouveaux onglets avec un alt / double-clic. Le fait est que… les onglets peuvent ouvrir n’importe quel type de contenu: assets, git, journal de build et ainsi de suite ! Bonne nouvelle pour les aficionados de la productivité.

Avec les document tabs et le temps gigantesque (j’exagère à peine) que vous économiserez, vous pouvez maintenant vous concentrer sur les tests d’interface utilisateur, plus d’excuses ! La bonne nouvelle est que vous pouvez maintenant tester les performances de votre interface utilisateur et répondre à la seule et unique question qui compte: mon scrolling sur ma UICollectionView est-il suffisamment fluide? Maintenant, XCTest peut vous donner un indice avec des mesures telles que la vitesse, le nombre / taux d’images et les “accrochages”.

Cerise sur le gâteau, vous pouvez désormais tester StoreKit et simuler des achats ou des remboursements sur votre simulateur tout en développant. C’est une énorme nouvelle pour bon nombre d’entre nous aux prises avec les tests d’achats intégrés.

SwiftUI

Vous attendiez probablement beaucoup de SwiftUI, et peut-être un SwiftUI 2. Eh bien, il n’y a pas de révolution cette année – mais pas besoin d’être déçu: Apple s’est concentré sur le maintien d’une compatibilité ascendante, sans changements révolutionnaires et fonctionnalités purement supplémentaires: en d’autres termes, aucune migration n’est nécessaire (pour cette année au moins).

Parmi les nouvelles introductions, les plus importantes sont en effet les composants Grids et Lazy, sous la forme de LazyVStack, LazyHStack et ainsi de suite, qui ne s’occupent de rendre le composant qu’une fois à l’écran. De plus, avec l’accent mis sur macOS et iPadOS cette année, SwiftUI obtient de nouveaux composants pour les menus, les barres d’outils et les navigateurs de fichiers.

La caractéristique la plus importante, cependant, est la nouvelle API SwiftUI, permettant de définir une application et ses scènes avec du code SwiftUI pur, abandonnant ainsi l’AppDelegate, maintenant âgé de 12 ans.

Mais ce n’est pas tout: SwiftUI obtient également des améliorations dans l’outillage, avec la possibilité de créer une bibliothèque de contrôles SwiftUI personnalisés que vous pourrez partager avec d’autres développeurs et de nombreuses améliorations dans l’éditeur: l’autocompletion d’Xcode est désormais bien meilleure, tout comme les contrôles WYSIWYG lors de la modification des vues SwiftUI.

Conclusion

Comme chaque année, la Platform State of the Union 2020 a été très dense en informations et nous laisse en redemander. WidgetKit, les App Clips et les améliorations côté SwiftUI sont certainement les faits saillants les plus intéressants à ce jour – nous les connaîtrons certainement mieux dans les prochaines présentations et les logiciels bêta.

Publié par et

Publié par Simone Civetta

Simone est responsable technique des équipes mobilités chez Publicis Sapient Engineering.

Publié par Julien Datour

Développeur iOS, passionné par le monde de la mobilité. Ses sujets en ce moment: la réalité augmentée et le machine learning sur mobile.

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.