La frenchKit iOS a eu lieu à Paris les 7 et 8 Octobre.
Niji a bien entendu été présent et nos experts iOS vous proposent de partager avec vous ce qu’il faut retenir de la conférence :
• Les annonces
• les composants présentés lors des conférences (à utiliser et comment les utiliser) :
- SwiftUI
- Redux
- Encryption
- CollectionView/TableView (Mise en place pour iOS 13 et comment le maintenir et l’entretenir)
- l’utilisation de Siri et du langage naturel dans les application
la mise en place de test
- Et pleins d’autres sujets….
7. Animations with SwiftUI
➔ Animations natives dans le framework SwiftUI.
➔ Vous pouvez facilement animer tout
changement dans SwiftUI
➔ Utilisation de fonctions pour animer les
changements (démo avec sinus).
➔ Utilisation facile : syntaxe Swift déclarative.
➔ Mécanisme très puissant.
Chris Eidhof
https://www.youtube.com/watch?v=RjCrZWeCPZU
10. Understanding Combine
➔ Nouveau framework de programmation
réactive ajouté dans SDK13
➔ Très proche de RxSwift
➔ Permet le binding lors de l'utilisation de
l’architecture MVVM
➔ Une variable devient émettrice avec
l’annotation @Published
Daniel Seinberg
https://www.youtube.com/watch?v=vDzIeFzGAuU
12. SwiftUI & Redux
➔ Architecture dérivée de Flux (Facebook)
➔ Alternative à MVC, MVVM ou VIPER
➔ Data Flow unidirectionnel
➔ Une seule source de vérité : State
➔ Toute la logique métier en un seul endroit : Reducers
➔ State partagé par toute l’application, pouvant être
modifié uniquement par des reducers suite à des
actions reçues.
➔ Le State notifie ensuite toute l’application
➔ Les vues n’intègrent aucune logique métier
Thomas
Ricouard
https://www.slideshare.net/ThomasRicouard/frenchkit-swiftui-data-flow-with-redux
15. Testing & Declarative UIs
➔ SwiftUI : comment tester le code métier, les
navigations et détecter les régressions ?
➔ Ne pas insérer de logique métier dans les vues ⚠
➔ La navigation est également de la logique métier
➔ Utilisation de SnapshotTesting pour automatiser les
tests d’interface
➔ Les debug previews SwiftUI servent de référence pour
les snapshots
Nataliya
Patsovska
https://www.slideshare.net/NataliyaPatsovska/french-kit2019
17. Showcase Driven Development
➔ Méthodologie développée chez Heetch basée sur
l’intégration continue
➔ Pour chaque élément graphique, une Pull Request
➔ Permet d’explorer tous les éléments graphiques
séparément (Showcase.Type)
➔ Permet l’injection de données pour tester les
ViewControllers indépendamment
➔ Dependency Injection -> Long Live Data Injection
➔ Configurateurs de vue
Jérôme Alves
https://speakerdeck.com/jegnux/showcase-driven-development
20. Building Voice-First Apps
➔ Nécessité de contrôler nos applications avec la
voix (en voiture, en cuisine)
➔ Tour d’horizon des solutions existantes dans le
SDK iOS et des solutions tierces
➔ Nul besoin d’implémenter toutes les
fonctionnalités de l’application (actions mains
libres, recherches)
➔ Privilégier les solutions natives sur mobile
Elaine Dias
Batista
https://speakerdeck.com/elainedb/building-voice-first-ios-apps
22. Note encryption : 10 lines for
encryption,
1000 lines for key management
➔ Chiffrement de bout en bout des données sans
compromettre l’UX de l’app
➔ Mettre en place plusieurs couches de sécurité
➔ Privilégier solutions de chiffrement haut niveau
➔ Se fier au stockage chiffré en local (Keychain)
mais pas sur le cloud (iCloud Keychain)
➔ « failure of single security control is a question
of time. Failure of security system is a question
of design »
Anastasiia
Voitova
https://speakerdeck.com/vixentael/10-lines-of-encryption-1500-lines-of-key-management
23. Note encryption : 10 lines for
encryption,
1000 lines for key management
Anastasiia
Voitova
https://speakerdeck.com/vixentael/10-lines-of-encryption-1500-lines-of-key-management
24. An introduction to Property-Based
Testing
➔ Tests unitaires classiques en “Given, when,
Then” efficaces pour détecter les régressions
➔ Difficulté de détecter de nouveaux cas
d’erreur
➔ Utilisation de SwiftCheck pour tester en
utilisant des données aléatoires
Vincent
Pradeilles
https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
25. An introduction to Property-Based
Testing
Vincent
Pradeilles
https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
26. An introduction to Property-Based
Testing
Vincent
Pradeilles
https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
27. Shipping a Catalyst app : The Good,
the Bad and the Ugly
➔ Créateur de PSPDFKit et de l’app
PDFViewerApp.
➔ S’est demandé s’il suffisait de cocher la case
“Mac” de Xcode 11 pour porter une app
iPhone/iPad sur Mac.
➔ S’est frotté à pas mal de problèmes pour
accéder à des fonctions réservées à AppKit :
menus natifs, recherche, popovers, curseur.
Peter
Steinberger
https://www.youtube.com/watch?v=Xo3zGlyxXcI
28. Shipping a Catalyst app : The Good,
the Bad and the Ugly
Peter
Steinberger
https://www.youtube.com/watch?v=Xo3zGlyxXcI
29. Shipping a Catalyst app : The Good,
the Bad and the Ugly
Peter
Steinberger
https://www.youtube.com/watch?v=Xo3zGlyxXcI
30. And that’s a wrap !
➔ Présentation des property wrappers introduits
avec Swift 5
➔ Pleinement utilisé par SwiftUI
➔ Permet d’implémenter la wrappedValue d’une
propriété via l’utilisation de tags
Olivier Halligon
https://speakerdeck.com/alisoftware/and-thats-a-wrap
31. And that’s a wrap !
Olivier Halligon
https://speakerdeck.com/alisoftware/and-thats-a-wrap
32. And that’s a wrap !
Olivier Halligon
https://speakerdeck.com/alisoftware/and-thats-a-wrap
34. Exploring Combine
➔ Présentation des principes de la programmation réactive
➔ Présentation de Combine, des émetteurs/souscripteurs, des combinaisons,
des promesses.
➔ Exercices permettant de valider un formulaire à partir de données
d’identification (login+mdp)
➔ Solutions fournies 👀
https://github.com/AvdLee/CombineWorkshop
35. SwiftUI
➔ Projet démo en SwiftUI fourni
➔ Liste de bugs présent dans l'application à résoudre
➔ Actions simples comme un dismiss assez complexes à appréhender
➔ Utilisation assez intuitive de Combine
https://github.com/Dimillian/FrenchKitSwiftUIClassroom
43. Parlons d’@autoclosure
@autoclosure vous permet donc d’encapsuler
en tant qu’argument une closure, de sorte
qu'elle ne soit évalué qu'en cas de besoin.
https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-2.pdf
50. À retenir
➔ SwiftUI n’est pas encore fin prêt pour la mise en production mais a de l’avenir
dans le développement sur les environnements Apple.
➔ Catalyst ne se résume pas en une case à cocher.
➔ Combine is the new RxSwift !
➔ La sécurité sur mobile n’est pas une option.
➔ Tests unitaires sur iOS : ce n’est pas une nouveauté !
➔ Les Classrooms et Masterclass
➔ Conférence très enrichissante.