SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
iOS App Group for
Debugging
@ Meetic
Sommaire
1. Le debug avant les App Group
2. Démo
3. Les App Groups, qu’est-ce que
c'est ?
4. Comment les utiliser ?
5. Questions
Le debug avant les App Group
● Un ViewController
● Qui a pour but de modifier le
comportement de l’app
● Inclus dans notre code et compilé en
scheme DEBUG
● Caché par une Gesture : Shake
Et ça engendre…
Des fails
Du feature flipping commenté pour que le PO
puisse tester…
Pas décommenté
Une solution
Démo
App Groups: Chez Meetic
Pour nos utilisateurs
● Partager le Keychain aux extensions
Pour les développeurs
● Pour nos développeurs back-end, tester que leurs
changements ne vont pas casser l’application en
production
● Changement d’URL serveur
● Feature Flipping
● Logging
● Langue de l’application sans changer la langue du
téléphone via AppleLanguages
● Récupérer le push token
● Supprimer le cache
● …
Que faire d’autre ?
● Récupérer un user id, le numéro de version
● Changer des UserDefaults spécifiques
● Ouvrir l’application principale via DeepLink
App Groups: Qu’est ce que c’est ?
● Moyen de partager des données
○ Entre applications du même App Group
○ Si elles ont les bons Entitlements et le bon Provisioning Profile
○ En dehors du sandboxing iOS
App Groups : Comment ça marche ?
App Group
Conteneur
App Groups: Comment partager des données
● Partager des données entre applications du même App Group en utilisant :
○ Keychain
○ Préférences: UserDefaults
○ Fichiers: FileManager
○ HTTPCookies: HTTPCookieStorage
Enregistrer un App Group 1/2
Enregistrer un App Group 2/2
Ajouter aux Entitlements 1/3
Ajouter aux Entitlements 2/3
Ajouter aux Entitlements 3/3
✅ Prêt à utiliser
Utiliser programmatiquement
let userDefaults = UserDefaults(suiteName: "group.com.meetic.ios.cocoaheads")
userDefaults?.bool(forKey: "SharedKey")
UserDefaults
let fileManager = FileManager.default
let containerURL = fileManager.containerURL(
forSecurityApplicationGroupIdentifier: "group.com.meetic.ios.cocoaheads"
)
FileManager
⚠Important à savoir
● Le conteneur partagé n’est pas supprimé si encore une des applications de l’App Group est
installée
● Les applications d’un même App Group doivent être signés avec le même certificat pour accéder au
conteneur
Déploiement
● 20 utilisateurs et moins
○ Beta Testflight privée ✅
● 20 utilisateurs et plus
○ Beta Testflight privée ❌
○ Autre plateforme de déploiement (HockeyApp) ✅
○ Beta Testflight externe ⚠ 🔥
Questions
Projet d’exemple & Slides
https://github.com/Valgrin/AppGroups

Contenu connexe

Similaire à iOS App Group for Debugging

Présentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQPrésentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQMichel-Marie Maudet
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google androidThierry Gayet
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement Anne Nicolas
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)Sanaa Guissar
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?Philippe Dumont
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockageLilia Sfaxi
 
Un backlog public - Agile France 2012
Un backlog public - Agile France 2012 Un backlog public - Agile France 2012
Un backlog public - Agile France 2012 François Wauquier
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsMicrosoft
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Trucs et astuces pour rendre votre application Windows 8 plus visible
Trucs et astuces pour rendre votre application Windows 8 plus visibleTrucs et astuces pour rendre votre application Windows 8 plus visible
Trucs et astuces pour rendre votre application Windows 8 plus visibleMicrosoft
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 

Similaire à iOS App Group for Debugging (20)

Présentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQPrésentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQ
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google android
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Apple - WWDC 2018
Apple - WWDC 2018Apple - WWDC 2018
Apple - WWDC 2018
 
HashMyTweets
HashMyTweetsHashMyTweets
HashMyTweets
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
DART.pptx
DART.pptxDART.pptx
DART.pptx
 
cours.pdf
cours.pdfcours.pdf
cours.pdf
 
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?
Azetone - Comment optimiser l’expérience utilisateur de son appli mobile ?
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockage
 
Installation
InstallationInstallation
Installation
 
Un backlog public - Agile France 2012
Un backlog public - Agile France 2012 Un backlog public - Agile France 2012
Un backlog public - Agile France 2012
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows Apps
 
INF355_Lecon1.pdf
INF355_Lecon1.pdfINF355_Lecon1.pdf
INF355_Lecon1.pdf
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Trucs et astuces pour rendre votre application Windows 8 plus visible
Trucs et astuces pour rendre votre application Windows 8 plus visibleTrucs et astuces pour rendre votre application Windows 8 plus visible
Trucs et astuces pour rendre votre application Windows 8 plus visible
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 
What's new in iOS9
What's new in iOS9What's new in iOS9
What's new in iOS9
 

iOS App Group for Debugging

  • 1. iOS App Group for Debugging @ Meetic
  • 2. Sommaire 1. Le debug avant les App Group 2. Démo 3. Les App Groups, qu’est-ce que c'est ? 4. Comment les utiliser ? 5. Questions
  • 3. Le debug avant les App Group ● Un ViewController ● Qui a pour but de modifier le comportement de l’app ● Inclus dans notre code et compilé en scheme DEBUG ● Caché par une Gesture : Shake
  • 5. Des fails Du feature flipping commenté pour que le PO puisse tester… Pas décommenté
  • 8. App Groups: Chez Meetic Pour nos utilisateurs ● Partager le Keychain aux extensions Pour les développeurs ● Pour nos développeurs back-end, tester que leurs changements ne vont pas casser l’application en production ● Changement d’URL serveur ● Feature Flipping ● Logging ● Langue de l’application sans changer la langue du téléphone via AppleLanguages ● Récupérer le push token ● Supprimer le cache ● … Que faire d’autre ? ● Récupérer un user id, le numéro de version ● Changer des UserDefaults spécifiques ● Ouvrir l’application principale via DeepLink
  • 9. App Groups: Qu’est ce que c’est ? ● Moyen de partager des données ○ Entre applications du même App Group ○ Si elles ont les bons Entitlements et le bon Provisioning Profile ○ En dehors du sandboxing iOS
  • 10. App Groups : Comment ça marche ? App Group Conteneur
  • 11. App Groups: Comment partager des données ● Partager des données entre applications du même App Group en utilisant : ○ Keychain ○ Préférences: UserDefaults ○ Fichiers: FileManager ○ HTTPCookies: HTTPCookieStorage
  • 12. Enregistrer un App Group 1/2
  • 13. Enregistrer un App Group 2/2
  • 17. ✅ Prêt à utiliser
  • 18. Utiliser programmatiquement let userDefaults = UserDefaults(suiteName: "group.com.meetic.ios.cocoaheads") userDefaults?.bool(forKey: "SharedKey") UserDefaults let fileManager = FileManager.default let containerURL = fileManager.containerURL( forSecurityApplicationGroupIdentifier: "group.com.meetic.ios.cocoaheads" ) FileManager
  • 19. ⚠Important à savoir ● Le conteneur partagé n’est pas supprimé si encore une des applications de l’App Group est installée ● Les applications d’un même App Group doivent être signés avec le même certificat pour accéder au conteneur
  • 20. Déploiement ● 20 utilisateurs et moins ○ Beta Testflight privée ✅ ● 20 utilisateurs et plus ○ Beta Testflight privée ❌ ○ Autre plateforme de déploiement (HockeyApp) ✅ ○ Beta Testflight externe ⚠ 🔥
  • 22. Projet d’exemple & Slides https://github.com/Valgrin/AppGroups