[wpms_breadcrumb reverse="0"]
Developpement - Mobile - Formation numérique

Swift, développement avancé pour iPhone / iPad

Reference : APL02B7
4 jours - 2260 € HT
Prochaines sessions
    Swift, développement avancé pour iPhone / iPad
    Objectifs

    • Cette formation iOS intensive vous permettra de perfectionner vos techniques de développement pour iPhone, iPod touch, ou iPad autour des frameworks du SDK (multi-threading, web services, géo-localisation, stockage des données, son, animation). Il s’agit de vous faire gagner du temps en vous proposant une synthèse des principales classes, méthodes, et bonnes manières pour les utiliser de façon performante à travers les exemples couramment rencontrés dans les applications professionnelles fonctionnant sous iOS. L’environnement de développement est Xcode 9 et iOS 11. Les spécificités de l’iPad, des écrans secondaires et des nouveaux matériels sous iOS seront abordées. Cette formation iPhone vous permettra également d’être le référent technique pour le paramétrage des équipements iPhone, iPad ou iPod Touch en entreprise. Vous saurez définir une configuration type (réglages, applications) et la déployer rapidement (en wifi si nécessaire) sur l’ensemble de vos appareils en vous appuyant éventuellement sur votre propre AppStore.

    Pré requis

    • Avoir suivi la formation Swift, développer des applications iOS (iPhone/iPad) ou disposer de connaissances équivalentes (langage Swift, bases Xcode et développement iPhone/iPad).

    Modalités pédagogiques

    Cours dispensé en mode présentiel avec une alternance d’apports théoriques et méthodologiques, et de mises en situations pratiques

    Inscription

    Programmes de Swift, développement avancé pour iPhone / iPad

    Rappels et compléments sur le développement iPhone / iPod touch / iPad

    • Matériels (iPhones, iPods touch, iPad) Différences entre les versions d’iOS Les nouveautés de l’environnement de développement Xcode 9Storyboard, segue, Autolayout et rotation (traits)Particularités du système d’exploitation iOS 11

    Multithreading (parallélisme et performances)

    • Architecture technique du multithreading Un gain de performance systématique ?Classes et méthodes d’appels et de gestion des webservices Multithreading et appels de web services intensifs Utilisation de Grand Central Dispatch (GCD)Les alternatives au multithreading (fonctions asynchrones, timers, key-value observers, notifications, …)Les closures
    • Comment « réveiller » son application (background fetch, background transfer, remote notifications)

    Graphiques et Animation (UIKit et CoreAnimation)

    • Conseils et bonnes pratiquesProduire des interfaces animées avec UIKit et Core
    • Animation Proposer des animations réalistes avec UIKit DynamicsDéplacer un élément avec Sprite KitL’interface unifiée pour accéder à CoreImage, CoreVideo et
    • CoreGraphics/Quartz Animation : la hiérarchie d’arborescence de calques (CALayers) Faire tout type de transition avec les layers (CATransition) Rotation d’une UIImage dans une UImageView Gérer un contenu plus grand que le contenant (UIScrollView)
    • Introduction à OpenGL (décomposition d’une image en triangles, matrices et transformations)

    Gestion avancée des TableViews

    • Utilisation d’un protocol pour le passage des donnéesAjouter un indexTri dans une listeRecherche dans une listeMise en place du pull to refreshMise en place du swipe to delete
    • Utilisation du prefetching

    Géo-localisation et MapKit

    • Connaître la position géographique de l’utilisateur Les classes CLLocation et
    • CLLocationManager, et le protocole optionnel CLLocationManagerDelegate Les possibilités du framework MapKit (plan de ville, cartographie, marques, …)Mise en oeuvre des deux variantes de Reverse-GeocodingEnregistrement auprès du système de la supervision de régions géographiques

    La persistance des données

    • Rappels PLIST, JSON, NSKeyedArchiver / NSKeyedUnarchiver
    • Utilisation du protocol Codable en SwiftArchitecture de CoreDataReprésentation modélisée des relations entre les objets avec CoreData Impact de l’utilisation de CoreData pour les objets (context) Vocabulaire (managed objects, fetch request, …) Méthodes et propriétés à utiliser pour sauvegarder/charger un objet ?Gestion des transactions

    iCloud, et le CloudKit

    • Rappels : Une nouvelle philosophie pour les utilisateurs et les développeursLe modèle iCloud d’Apple (architecture et services offerts)Les différentes API de stockage iCloud Le principe du stockage par paires clé/valeuriCloud et le modèle SandBox pour les applicationsExemples de stockage en ligne avec iCloudAPI bas niveau (gestion de version)Déployer des documents, packages et répertoires pour ses applications sur iCloudUtilisation du CloudKitUne SandBox iCloud pour chaque application

    Internationalisation

    • Rappels des bonnes pratiques à propos de l’internationalisation Cas des langues non occidentales et des variantes régionales Exemples de chargement d’image dynamique en fonction de la langue (Locales)

    Tuning et deboggage des applications iOS

    • Vue d’ensemble des paramètres importantsSavoir observer les performances Adapter le code avec la compilation conditionnelle Adapter le code en fonction des équipements (iPhone, iPad)Exemples concrets de gains de performances avec Xcode 8Améliorer les performances avec l’outil Instruments
    • Nouveaux outils d’Xcode 8 et 9 (memory debugger, main thread checker,…)

    Accéder aux informations personnelles

    • Accéder au calendrierAccéder aux contactsEnvoyer un SMS/iMessagesEnvoyer un Mail (in-App Mail)Appeler un contact depuis une application

    Compléments

    • Intégration des réseaux sociaux à tous les niveaux du système (Facebook, Twitter)La reconnaissance faciale sur l’iphone X (principes et exemples d’utilisation)Intégration de SiriKit dans vos applications
    • Intgération de Messages dans vos applications

    Sécuriser ses applications iOS

    • L’attrait de l’iPhone pour les pirates
    • Fonctionnement classique d’une application (API Apple, isolation, bac à sable mémoire et système de fichiers, …)
    • Réflexions sur les failles de chaque composant (matériel, logiciel standard, application, …)
    • Informations sur le Jailbreak

    Service de notification par «push»

    • Recevoir des événements extérieurs en « continu » (Apple Push Notification Service) Différences avec une application traditionnelle (Pull design) Comprendre le circuit de notification (Notification Server, APN Service, équipement, certificat SSL, application)
    • Contenu d’une notification APN au format JSON (liste de propriétés, token) Mise en oeuvre du push côté client (méthodes et API utilisées) Mise en oeuvre du push côté serveur (token, gestion des notifications, feedback service, certificat)Limites des notifications (messages critiques, taille des messages, …) Attention à la montée en charge : les solutions Application
    • Service ProviderNotification locales associées, options APNSOptions pour le programmeur et pour l’utilisateurMise en perspective avec la géo-localisation, notification locales associées, …

    Tester et distribuer son application sur l’Appstore?

    • IN/OUT test ( test « over the air »)Distribution sans fil des applicationsLes «contraintes» préconisées par Apple pour les achats intégrés (StoreKit,InApp purchase)?A quoi servent les différents certificats de distribution ? Retrait ou mise à jour d’une application ?Disposer de son « propre » AppStore : le déploiement «In House»?Les contraintes d’Apple (licence « Enterprise program », DUNS) Le coût exact des licences Créer son propre dépôt d’application Utilisation d’iTunes en entrepriseConfiguration des équipements pour utiliser un dépôt précis

    Administrer en entreprise les iPhone, iPod touch et iPad?

    • Présentation de l’outil iPhone « Configuration Utility » Créer un profil de configuration (réglages wifi, mail, …) Paramétrage des restrictions (installation, achat, navigation Web, …) Réglages avancés (LDAP, VPN, point d’accès, proxy, …) Gérer les applications avec les profils d’approvisionnements (installation, expiration) Déployer un profil de configuration sur plusieurs équipements (USB, mail, WEB) Savoir interpréter les événements de la console d’un équipement