Une migration Xcode 11 sans douleur

Illustration de l'icone de l'outils Xcode

Et ce n’est pas ironique.

Depuis 2010, j’ai connu de nombreuses migrations et je trouve que celle-ci a été une des plus facile.

Mais avant de lancer une montée de version d’Xcode, poussons nous la question de pourquoi le faire.

 

Voici quelques bonnes raisons pour passer à Xcode 11 :

  • Proposer une nouvelle fonctionnalité disponible pour la nouvelle version d’iOS, du coup, passage obligé par une mise d’Xcode car c’est lui qui contient les nouveautés des SDK. Cela commence à être intéressant car iOS13 a franchi les 50% d’installations sur le parc iOS le 15 Octobre 2019. (https://developer.apple.com/support/app-store/)
  • Commencer à faire SwiftUI ! Oui, il faut iOS13, mais pourquoi ne pas proposer quelques écrans exclusif ? Vous pouvez même commencer à développer le même écran de 2 manières différentes ? De toute façon, vous avez intérêt à suivre ça de prêt car SwiftUI fait économiser pas mal de ligne de codes et vous vous ferez des alliés de vos développeurs qui vont apprécier de commencer à monter en compétence.

On se lance et on recompile avec Xcode 11 !

Quand vous re-compilez votre application et que vous lancez la première fois, il y a 2 choses qui choquent : Le dark Mode quand votre appareil est configuré et la gestion des modalesqui est « étrange ».

Le dark Mode. Cela saute aux yeux car les intégrations avec le système font mal. si vous présentez des « alertes », des « actionSheets » ou que vous intégrez des partages, vous allez vite le sentir. Pour RocketSkill, on est plutôt un jeu, sombre, du coup, on a fait un choix rapide, on a désactivé la fonctionnalité dans l’info.plist

<key>UIUserInterfaceStyle</key>
<string>Light</string>

La gestion des modales. Apple a changé la valeur par défaut de « full screen » à « page sheet » pour le paramètre modalPresentationStyle. L’animation est plutôt sympa mais il y a 2 effets « kis kool » qui s’ajoutent à ce comportement :

  1. le cycle de vie du contrôleur présentant (qui ne passe pas en disappear)
  2. un gesture qu’Apple a ajouté pour « dismiss » la modale, ce qui peut être dérangeant quand on veut le gérer soi-même et déclencher des actions.

Comment gérer ça au plus vite ? Le plus simple est d’avoir un contrôleur générique et de forcer la valeur.

modalPresentationStyle = .fullScreen

NOTE : Attention à ne pas vous tromper, c’est bien le contrôleur que l’on présente qui doit avoir ce paramètre. (PS : oui, j’ai perdu du temps sur cette erreur)


Enfin ! l’implémentation de « Apple Sign In »

🤗 C’est pas compliqué une fois qu’on est passé sous Xcode 11

  1. Ajouter une nouvelle « capability » à votre App. Ouvrez votre projet, votre target, l’onglet « Signing & capabilities » et vous l’ajoutez.
  2. C’est quasiment fini, il suffit d’ajouter le framework « AuthenticationServices » https://developer.apple.com/documentation/authenticationservices
  3. et de l’utiliser https://developer.apple.com/documentation/authenticationservices/asauthorizationcontroller

Avec ces étapes, j’ai pu faire une migration sereinement en 1 journée. J’ai eut le temps de tester tous les parcours de mon application sans rencontrer de surprises.

La première fonctionnalité iOS13 est la plus « lourde » car elle porte la phase de migration du projet. En tout cas, Xcode 11 me semble plus rapide, plus stable et plus fiable. De nombreuses fonctionnalités ont été ajouté et cela m’a permis de gagner du temps sur d’autres tâches (par exemple optimiser les screenshots pour l’AppleStore).

RocketSkill est passé a Xcode 11 depuis la version 1.2.4, j’ai bien hâte de voir l’engouement pour l’Apple Sign In.