SlideShare une entreprise Scribd logo
1  sur  115
Télécharger pour lire hors ligne
2
Laurent Meurisse
•Conception et la validation d’une application iPhone
pour une grande entreprise
•Dev d’une application trafficWave
•Coaching agile (entreprise & mobile)
twitter @laurentmeurisse

Mélanie Bessagnet
Conception et développement d’applications iPhone ou iPad.
Smartsy, FidelPass, L’Oréal.
twitter @mbessagnet


                                                             3
ekito /offre mobilité
★ Accompagnement dans toutes les phases des
  projets
  ➡ Définition de stratégie et spécifications
  ➡ Ergonomie & design
  ➡ Architecture & développement
  ➡ Distribution
★ Multi plateforme
  ➡ iOS (iPhone & iPad), Android, Windows Phone,
     web mobile
★ Intégration dans l’entreprise
  ➡ Sécurité, gestion de flotte, intégration SI


                                             4
ekito /Projets d’entreprise
★ Application iPad pour un grand acteur de
  l’aéronautique
  ➡ Consultation de documents marketing pour les
    visiteurs de salons
  ➡ Conseils, conception & développement
★ Application iPad pour un opérateur
  téléphonique
  ➡ Le management avait besoin d’un
    « dashboard » pour consulter l’état du réseau
    avec +80.000 antennes
  ➡ Conseils, conception, ergonomie/design
    & développement

                                                    5
ekito /Projets grand public
★ « Smartsy » (iPhone, iPad & Android)
  ➡ Applications réalité augmentée pour
    consulter du contenu multimédia en
    accompagnement de support physique
  ➡ Reconnaissance d’images, site web, API
  ➡ Distribution dans l’App Store d’Apple et le
    Market de Google
★ « Fidelpass » (iPhone)
  ➡ Solution de carte de fidélité virtuelle
    pour smartphone
  ➡ Mode déconnecté, génération de codes

                                            6
Partage de la
connaissance




  Toulouse 8 mars 2012 – ARC et Storyboards
                                              7
➡ introduction




                 8
que me faut t'il pour
                      démarrer ?




➡ licence développeur
➡ un iPhone ou iPad
➡ un Mac
➡ La dernière version du SDK




                                          9
qu'est ce que je dois
                     savoir faire ?



➡ être habile en
  design IHM
➡ avoir des bonnes
  idées
➡ avoir quelques
  soirées de
  disponibles
➡ constituer une
  communauté d’early
  adopters

                                         10
partie 1
succès d’iOS
➡ iOS
➡ excellence
  ergonomique
➡ App Store


                11
partie 1
➡iOS




           12
13
★ Système d’exploitation de l’iPhone/iPod
  Touch/iPad
★ Basé sur Mac OS X
★ Offre de nombreuses possibilités
  d’applications
★ Nécessite aucune notion préalable du
  développement Mac OS X




                                            14
★ Architecture iOS
                          Cocoa Touch

             appareil photo             localisation


        Multi-touch            Webkit            accéléomètre




                           Media layer
                       Video                Quartz


        Core Audio         JPEG/PNG...                  PDF




                          Core Services
            SQLite


           threading           file system            preference


        Collection        Core Location         Carnet d'adresse




                               Core OS


                            power
        OSX kernel                                     réseau
                          management




       baseBand           bootLoader                 firmware


                                                                   15
ça à l'air très
compliqué !!!




                  16
partieergonomique
            1
➡excellence




                    17
➡ le doigt est roi




                     18
le doigt est roi
★ iOS est déployé sur
  des plateformes
  tactiles.
  ➡ De nombreuses
   possibilités de gestes.
  ➡ Une application trop
   complexe n’est pas
   utilisable
  ➡ L’ergonomie doit être
   l’une des
   préoccupations
   principales.
                             19
le doigt est roi


★ L’iOS est une rupture
  par rapport aux
  modèles
  ergonomiques
  traditionnels




                          20
➡ patterns utilisateur




                         21
★ Qu’est ce qu’un pattern utilisateur ?
  ➡ ex. : Possibilité de naviguer dans une
    structure hiérarchique, en revenant au
    départ facilement
  ➡ ex. : possibilité de naviguer entre
    différentes partie sans perdre le focus




                                              22
➡ les principaux éléments




                            23
Navigation par onglet




                        24
Les listes




             25
La navigation entre vues




                           26
...



      h,p://p,rns.com/




                     27
➡ La règle des 44 pixels




                           28
La règle des 44 pixels




                         29
➡ la gestuelle




                 30
31
➡ Native ou WebApp ?




                       32
★ Application native
  ➡ Application conçue spécifiquement pour une
    plateforme en utilisant le SDK propre à celle ci.
★ Web app
  ➡ Application réalisée via un site Web optimisé
    pour mobile




                                                    33
WebApp
                   Quels sont les
                    avantages ?




➡ Indépendance à Apple.
➡ Indépendance à la
  plateforme.
➡ Mise à jour facilitée.
➡ Coût de
  développement.
➡ Transaction e-
  commerce

                                    34
WebApp
                      Quels sont les
                     inconvéniants ?




➡ Moins de visibilité.
➡ Difficile à monnayer.
➡ Dépendance à la
  connectivité.
➡ Expérience utilisateur.
➡ Consommation des
  ressources.


                                       35
iOS Human interface
Guideline




http://developer.apple.com/
library/IOS/documentation/
UserExperience/Conceptual/
MobileHIG/MobileHIG.pdf
                              36
Quelques principes de
base

  ➡ Minimiser la quantité d’information.
  ➡ Respecter la fluidité de l’appareil.
  ➡ Ne pas offrir trop de réglages à
    l’utilisateur.
  ➡ Demander de sauvegarder seulement
    quand c’est nécessaire
  ➡ Eviter les écrans «modals».
  ➡ Démarrer rapidement


★ Toujours faire au plus simple !
                                           37
➡ Respecter les gestes de bases.
➡ utiliser des gestes compliqués comme
  «raccourcis», mais en permettant
  d’effectuer l’action autrement.
➡ sur iPad, possibilité d’utiliser plusieurs
  doigts
➡ en général éviter de définir des
  nouveaux gestes




                                               38
partie Certificat, Profile
            1
➡Programme,




                             39
40
iOS Programmes
★ iOS developer program (99$)
    • 100 devices (dev, tests)
  ➡ individuelle
    • nom de la personne sur l’AppStore
    • un seul développeur
  ➡ Company
    • nom de l’entreprise (justification nécessaire)
    • nombre illimité de développeurs
    • 3 rôles (agent, admin, member)

  ➡ attention on ne peut pas basculer d’une
    option à l’autre
                                                  41
iOS Programmes
★ iOS enterprise program (299 $)
  ➡ inHouse deployment
  ➡ Mobile Device Management
    • gestion de la flote des devices iOS
  ➡ impossibilité de déployer sur l’AppStore




                                            42
Certificats
★ Certificats
  ➡ Certificat développeur
    • unique pour chaque développeur
    • lié à une machine
  ➡ Certificat de distribution
    • un seul par programme




                                       43
Profiles
★ Profile de développement
  ➡ lié à l’appli (AppId)
  ➡ lié à un certif de dev (pour chaque dév)
  ➡ lié aux devices
  ➡ un seul par développeur
★ Profile de distribution
  ➡ lié à l’appli
  ➡ lié à un certif de distribution
  ➡ deux modes de distribution
    • app store
    • adhoc
    • entreprise                          44
➡ publication




                45
AppStore


 ➡ Il y a t’il de la place par rapport à mon
   application?
 ➡ quel prix pour les applications
   concurrentes ?
 ➡ Version gratuite / Version Payante
 ➡ Baisse de prix d’application (ou
   gratuite) .. 2h à 4h
 ➡ le nombre de téléchargement influes
   sur le classement


                                               46
sur l’AppStore
★ Pour publier son application, trois
  étapes :
  ➡ Rédaction des détails de l’application.
  ➡ Upload de l’exécutable.
  ➡ Validation par Apple.
  ➡ La période de validation passe par un
    certain nombre d’états, variables suivant
    les cas.
★ Si l’application n’est pas validée, le
  développeur reçoit automatiquement
  un e-mail d’explications.
                                          47
★ Attention, respecter les Guideline Apple

★ De nombreuses règles sont à respecter pour qu’une
  application soit validée par Apple. En voici les plus
  courantes :
  ➡ Aucun crash.
  ➡ Pas de fuite mémoire.
  ➡ Description conforme à l’application.
  ➡ Révéler toute fonctionnalité cachée à la
    validation.
  ➡ Respecter les droits d’auteur.
  ➡ Uniquement utiliser les classes documentées
    d’Apple.
  ➡ Notifier les changements d’état du réseau.
  ➡ Apple Human Interface Guidelines.

                                                     48
➡ beta testing




                 49
Tester
★ Audience / Logging
  ➡ Flurry
  ➡ TestFlyApp
    • Session
    • Questions in-App
    • Crash reports
    • Checkpoints
    • Remote logging
    • in-App updates




                         50
pour tester
★ Autre solution pour distribuer une application
  iOS, la distribution Ad Hoc.
  ➡ Échelle réduite (maximum 100 appareils).
  ➡ Aucune validation par Apple.
  ➡ Inscription à l’iOS Developer Program
    également obligatoire.




                                             51
➡ MDM




        52
53
54
55
56
➡ iTunes Connect




                   57
58
partie 2
développer
➡ Concevoir
➡ L’environnement
  de developpement
➡ Bases de l’objective-C
➡ Les nouveautes d’iOS 5

                           59
partie 2
➡concevoir




             60
je vais devoir tailler mon
         crayon !!




                         h,p://iphonemockup.lkmc.ch
                                              61
62
Quelques Mockup
★ balsamiq
★ omniGraffle
★ Adobe Illustrator

★ le post it iphone




                      63
➡ développement agile




                        64
Développements Agiles


 ➡ deux tendances à connaitre
   • lean startup
   • scrum




                                65
lean startup




               66
Développements Agiles


 ➡ ne pas surdimentioner la richesse de
   l’application (priorisation par la valeur),
   faire des user stories
 ➡ faire des livraisons et des tests souvent
 ➡ si on doit s’interfacer : bien définir !
   (prévoir un niveau d’information
   minimal)




                                                 67
scrum



          USE
         STO R
            RY
  USE
 STO R
    RY




                 68
Je me connecte via le n° FlyingBlue



Je consulte la liste de mes réservations




        Je consulte le détail d'une réservation



Je consulte les passagers d'une réservation



          Je consulte l'actualité d'un vol AF



J'enregistre une réservation (carte d'embarquement)




                                                      69
13
        quelle est
        sa valeur
         métier?

 USE
STO R
   RY


        pour quel
         effort à
         fournir?
                     89
                          70
144 89    Je consulte le détail d'une réservation

                89 144   J'enregistre une réservation (carte d'embarquement)
ordre de dev




                55 55    Je consulte la liste de mes réservations

                34 233   Je me connecte via le n° FlyingBlue
                 8 233   Je consulte les passagers d'une réservation

                13 144   Je consulte l'actualité d'un vol AF




                                                                    71
SPRINT 1




                            SPRINT 2
                         DEMO SPRINT 1




                 TESTS
                                         RELEASE 1




                           SPRINT 3

                         DEMO SPRINT 2




               TESTS




      PROD
                            SPRINT 4

                         DEMO SPRINT 3

               TESTS




                           SPRINT 5

                         DEMO SPRINT 4
             TESTS
                                         RELEASE 2




                           SPRINT 6

                         DEMO SPRINT 5
             TESTS




72
     PROD
partie 2 C
➡base de l’Objective




                       73
➡ écrire une classe, une méthode, un protocol




                                          74
écrire une classe


    ➡ interface                      ➡ implémentation
#import <Foundation/Foundation.h>   #import "Voiture.h"


@interface Voiture : NSObject {     @implementation Voiture
    //déclaration des variables

   NSString *immat;                 // implémentation des méthodes
   NSInteger *gear;
   NSInteger *speed;
                                    @end

}
-(int)multiply:(int)a to:(int)b ;
-(int)square:(int)a ;

//déclaration des méthodes
@end



                                                                     75
écrire une classe




                    76
écrire une méthode



        -(int)multiply:(int)a to:(int)b
        {
            return a*b;
        }

        -(int)square:(int)a
        {
            return [self multiply:a to:a];
        }




 ➡ [object doSomething]; au lieu de object.doSomething();
                                                        77
écrire un protocol


    #import <Foundation/Foundation.h>


    @protocol Vehicule <NSObject>


    @optional

    -(void)klaxonner;
    -(void)baisserVitre;
    -(void)leverVitre;

    @required


    -(void) demarrer ;
    -(void) arreter;

    @end




                                        78
réaliser un protocol
                                             #import "Voiture.h"


                                             @implementation Voiture


#import <Foundation/Foundation.h>
                                             // implémentation des méthodes
#include "Vehicule.h"

@interface Voiture : NSObject <Vehicule> {
                                             -(int)multiply:(int)a to:(int)b
    //déclaration des variables
                                             {
                                                 return a*b;
   NSString *immat;
                                             }
   NSInteger *gear;
   NSInteger *speed;
                                             -(int)square:(int)a
                                             {
                                                 return [self multiply:a to:a];
}
                                             }
-(int)multiply:(int)a to:(int)b ;
-(int)square:(int)a ;
                                             -(void) demarrer
-(void) demarrer ;
                                             {
                                                 NSLog(@"Vrooum");
                                             }
//déclaration des méthodes
@end
                                             -(void) arreter
                                             {
                                                 NSLog(@"...");
                                             }

                                             @end
                                                                                  79
➡ Cocoa Fondation




                    80
Cocoa Fondation


 ➡ Framework de base pour le développement
   Mac OS X et iOS.

 ➡ Importation dans un projet :
            #import <Foundation/Foundation.h>


 ➡ (Par défaut dans un nouveau projet Xcode)



                                                81
Cocoa Foundation
★ Objets de base :
  ➡ NSString : Chaîne de caractères.
  ➡ NSArray : Tableau non modifiable.
  ➡ NSDictionnary : Structure fixe d’objets
    référencés par une clé unique.
  ➡ Mot clé Mutable : Indique si une
    instance de classe peut être modifiée
    après création.
  ➡ Exemple : NSMutableArray et
    NSMutableDictionnary.

                                         82
➡ gestion de la mémoire




                          83
★ Destruction d’un objet :
  ➡ L’objet créé peut être détruit de deux
    façons différentes.
  ➡ Autolibération : La libération de la
    mémoire allouée est gérée par le
    système. (autorealease)
  ➡ Libération : la libération est laissée aux
    soins de l’utilisateur. (release).




                                            84
Allocation, destruction,
autolibération
★ Par défaut, l’utilisateur doit s’occuper de la
  libération des objets qu’il alloue :
         -(void)direBonjour
     {
           NSString *maPhrase = [[NSString alloc] initWithString:@"bonjour"];
           NSLog(@"%@",maPhrase);
     !     [maPhrase release];
     }




★ Des fois, il est indispensable de laisser le
  système s’en occuper :
                  -(NSString *)creerBonjour
                  {
                  !   NSString *maPhrase = [[[NSString alloc] initWithString:@"bonjour"]
                  autorelease];
                  !   return maPhrase;
                  }


         ➡ retain, release et autorelease sont des méthodes de NSObject
★                                                                                          85
Variable d’instance
★ Prototypage des variables d’instance :
  ➡ Ajoute une couche d’abstraction pour la
   gestion de la mémoire.
  ➡ Réduit le nombre de lignes de code.
  ➡ Garantie l'intégrité des données.
★ Dans l’interface :
  @property   (nonatomic, retain) Moteur *moteur;



★ Dans l’implémentation :
  @synthesize moteur;




                                                    86
retain, assign

➡retain;




➡assign :




                 87
★ La règle du comptage par référence est la
  suivante :
  ➡ On incrémente le compteur lorsque l’on fait appel aux
    méthodes +alloc, -retain ou -copy de l’objet.
  ➡ On décrémente le compteur lorsque l’on fait appel à la
    méthode - release de l’objet.
  ➡ Lorsque le compteur atteint 0, l’objet et donc son
    espace mémoire alloué sont libérés automatiquement.




                                                      88
➡ UIKit




          89
UIKit

 ➡ Framework supplémentaire pour le
   développement iOS. Ajoute les fonctions
   nécessaires pour l’interaction tactile.

 ➡ Importation dans un projet :
             #import <UIKit/UIKit.h>

 ➡ (Par défaut dans un nouveau projet
   Xcode)



                                        90
UIButton




           91
➡ Connections Synchrone et Asynchrone




                                        92
★ Requête synchrone
 ➡ application en attente du résultat
 ➡ application non réactive, figée
  urlString = [NSString stringWithFormat:@"http://webaddress/trafficservlet?
  sendTagWave=1&id=%@&posLo=%@&posLa=%@&version=1&course=%@&idSession=%@",
  !    !    !   !    [userId
  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
  !    !    !   !    [textLongitude
  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
  !    !    !   !    [textLatitude
  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
  !    !    !   !
  !    !    !   !    [textCourse
  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]! ,
  !    !    !   !    [textIdSession
  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
  !    !    !   !    ];
  !
  !    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL
  URLWithString:urlString]];




                                                                               93
★ Requête asynchrone
   - (void)viewDidLoad {
        [super viewDidLoad];
     !  // Effectuer la requête dans un autre thread
     !  [NSThread detachNewThreadSelector:@selector (chargerXML)
                               toTarget:self withObject:nil];
   }
   - (void)chargerXML {
     !  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     !  // Faire la requête
   !    [self effectuerRequete];
     !  // Notifier le thread principal que l’on a fini
     !  [self performSelectorOnMainThread:@selector (chargementFini)
                             withObject:nil waitUntilDone:NO];
     !  [pool release];
   }




                                                                       94
➡ notifications Push




                       95
notification Push
 ➡ Il permet
   d’afficher des
   badges, alertes
   et sons sans
   que
   l’application ne
   tourne

 ➡ Il ne nécessite
   pas de grosses
   infrastructures
   serveur

 ➡ Il préserve la
   durée de vie de
   la batterie (par
   rapport aux
   connections
   TCP/IP)
                      96
➡ Cartographie et géolocalisation




                                    97
★ Pouvoir localiser sa position et son
  orientation sur une carte nécessite
  l’utilisation de deux frameworks :
  ➡ CoreLocation — permettant d'utiliser les
   capacités de géolocalisation de l’iPhone
  ➡ MapKit — permettant d’insérer des
   cartes géographiques complètes dans
   une application.




                                         98
CoreLocation
★ Framework pour gérer la localisation
 et l’orientation.
  ➡ CLLocation
  ➡ CLLocationManager
★ Pas d’interface utilisateur.
★ Utilise trois approches pour se situer.
  ➡ GPS
  ➡ Wifi
  ➡ Réseau Téléphonique
★ Plus la localisation se veut précise,
 plus elle est coûteuse en énergie.
                                          99
CLLocationManagerDelegate



★   // Répond aux changements de position
      - (void)locationManager:(CLLocationManager *)manager
      didUpdateToLocation:(CLLocation *)newLocation
      fromLocation:(CLLocation *)oldLocation;




                                                        100
➡ pattern delegate




                     101
102
delegation




             103
➡ développement serveur




                          104
exemple de plan
d’architecture global
        5
    notification


                      serveur BACKEND                           eSite

              push                               xml
                             cache

                                        parser   rss   connecteur
     json         services
    4                                            ...
                                                               1
                             3   cron
                                                 2




                                                                        105
partie 2 de
➡L’environnement
    développement XCode




                          106
Paramètres	
  de	
  compilaBon




    Projet




                                 107
108
partie d’iOS 5
            2
➡Nouveautés




                 109
Nouveautés iOS 5
★ ARC
★ Storyboards
★ UIKit Customization
★ iCloud
★ Twitter Integration
★ Nombreux changements dans les APIs




                                 110
ARC
(Automatic Reference Counting)
 ➡ ARC s'occupe des libérations mémoire à
   la place du développeur, plus de gestion
   manuelle de la mémoire.

 ➡ Le code est allégé et la tâche du
   développeur est simplifié.

 ➡ Avec ARC activé, le compilateur insère
   automatiquement les méthodes de
   retain, release et autorelease à la bonne
   place dans le code.

                                          111
StoryBoards




              112
UIKit Customization

 ➡ Pour sortir du lot, une application, en plus d'être
   fonctionnelle, doit avoir un design attrayant.
 ➡ La plupart des applications ma jeures de
   l'AppStore utilisent des éléments d'interfaces
   customisés.
 ➡ Avant la sortie d'iOS 5, la tâche n'était pas du
   tout aisée. Il fallait très souvent de nombreuses
   lignes de code pour changer l'apparence d'un
   élément standard.
 ➡ A présent, Apple a donné accès à de nouvelles
   méthodes qui facilitent ce travail.



                                                   113
partie 3
pratique
➡ Hello World




                114
code de l’appli




                                                               h,p://db.,/pbEhiPro
    basé sur le tutoriel officiel d'Apple "Your first iOS app"




                                                                               115

Contenu connexe

Tendances

Développer avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreDévelopper avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreMicrosoft
 
Techno : Développement d'application mobile (Digiworks)
Techno : Développement d'application mobile (Digiworks)Techno : Développement d'application mobile (Digiworks)
Techno : Développement d'application mobile (Digiworks)Normandie Web Xperts
 
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...Guillaume Brout
 
Présentation développement application Android
Présentation développement application AndroidPrésentation développement application Android
Présentation développement application Androidambin_fr
 
Offre migrer vers_flutter
Offre migrer vers_flutterOffre migrer vers_flutter
Offre migrer vers_flutterJulien Saumande
 

Tendances (8)

Développer avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreDévelopper avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows Store
 
Techno : Développement d'application mobile (Digiworks)
Techno : Développement d'application mobile (Digiworks)Techno : Développement d'application mobile (Digiworks)
Techno : Développement d'application mobile (Digiworks)
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
EZ Systems - EZ publish, la plate-forme de gestion de contenu web de nouvell...
EZ Systems -  EZ publish, la plate-forme de gestion de contenu web de nouvell...EZ Systems -  EZ publish, la plate-forme de gestion de contenu web de nouvell...
EZ Systems - EZ publish, la plate-forme de gestion de contenu web de nouvell...
 
Apache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéroApache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéro
 
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
 
Présentation développement application Android
Présentation développement application AndroidPrésentation développement application Android
Présentation développement application Android
 
Offre migrer vers_flutter
Offre migrer vers_flutterOffre migrer vers_flutter
Offre migrer vers_flutter
 

En vedette

Jim Kaskade Biography
Jim Kaskade BiographyJim Kaskade Biography
Jim Kaskade BiographyJim Kaskade
 
Anleitung: Eine Facebook-Seite erstellen
Anleitung: Eine Facebook-Seite erstellenAnleitung: Eine Facebook-Seite erstellen
Anleitung: Eine Facebook-Seite erstellenThemaTisch
 
Kim Lankshear portfolio
Kim Lankshear portfolioKim Lankshear portfolio
Kim Lankshear portfolioKim Lankshear
 
Sitios de internet que utilizan el comercio electronico como herramienta prin...
Sitios de internet que utilizan el comercio electronico como herramienta prin...Sitios de internet que utilizan el comercio electronico como herramienta prin...
Sitios de internet que utilizan el comercio electronico como herramienta prin...Guuz Medrano
 
Plan estratégico concepto
Plan estratégico conceptoPlan estratégico concepto
Plan estratégico conceptoxavier1603
 
Networking Fundamentals
Networking FundamentalsNetworking Fundamentals
Networking FundamentalsShahzad Ali
 
Mg54 imagina + (negocios digialtes)
Mg54 imagina + (negocios digialtes)Mg54 imagina + (negocios digialtes)
Mg54 imagina + (negocios digialtes)Santiago Trevisán
 
30 sessions web. Síntesis EN
30 sessions web. Síntesis EN30 sessions web. Síntesis EN
30 sessions web. Síntesis ENgencat .
 
Tallerpaja
TallerpajaTallerpaja
Tallerpajafbaselga
 
Zaka Volunteer Blog
Zaka Volunteer BlogZaka Volunteer Blog
Zaka Volunteer BlogPLETZ.com -
 
Gsec corporate presentation 0315
Gsec corporate presentation 0315Gsec corporate presentation 0315
Gsec corporate presentation 0315Ioannis Georgakakis
 
Portafolio de evidencia José Manuel Morales Osorio.
Portafolio de evidencia José Manuel Morales Osorio.Portafolio de evidencia José Manuel Morales Osorio.
Portafolio de evidencia José Manuel Morales Osorio.José Morales
 
Fiestas populares de españa kevin bustamante
Fiestas populares de españa kevin bustamanteFiestas populares de españa kevin bustamante
Fiestas populares de españa kevin bustamanteaporrom
 
Nachhaltigkeit Sinn Werte und CSR in Unternehmen
Nachhaltigkeit Sinn Werte und CSR in UnternehmenNachhaltigkeit Sinn Werte und CSR in Unternehmen
Nachhaltigkeit Sinn Werte und CSR in UnternehmenHeinz Peter Wallner
 

En vedette (20)

Jim Kaskade Biography
Jim Kaskade BiographyJim Kaskade Biography
Jim Kaskade Biography
 
Anleitung: Eine Facebook-Seite erstellen
Anleitung: Eine Facebook-Seite erstellenAnleitung: Eine Facebook-Seite erstellen
Anleitung: Eine Facebook-Seite erstellen
 
Kim Lankshear portfolio
Kim Lankshear portfolioKim Lankshear portfolio
Kim Lankshear portfolio
 
Revista huilloz 2013
Revista huilloz 2013Revista huilloz 2013
Revista huilloz 2013
 
Sitios de internet que utilizan el comercio electronico como herramienta prin...
Sitios de internet que utilizan el comercio electronico como herramienta prin...Sitios de internet que utilizan el comercio electronico como herramienta prin...
Sitios de internet que utilizan el comercio electronico como herramienta prin...
 
Plan estratégico concepto
Plan estratégico conceptoPlan estratégico concepto
Plan estratégico concepto
 
Kpa Curso de eMail Marketing
Kpa Curso de eMail MarketingKpa Curso de eMail Marketing
Kpa Curso de eMail Marketing
 
Networking Fundamentals
Networking FundamentalsNetworking Fundamentals
Networking Fundamentals
 
Mg54 imagina + (negocios digialtes)
Mg54 imagina + (negocios digialtes)Mg54 imagina + (negocios digialtes)
Mg54 imagina + (negocios digialtes)
 
Circuitos eléctricos
Circuitos eléctricosCircuitos eléctricos
Circuitos eléctricos
 
30 sessions web. Síntesis EN
30 sessions web. Síntesis EN30 sessions web. Síntesis EN
30 sessions web. Síntesis EN
 
The Easy Quiz
The Easy QuizThe Easy Quiz
The Easy Quiz
 
Tallerpaja
TallerpajaTallerpaja
Tallerpaja
 
PLE
PLEPLE
PLE
 
Zaka Volunteer Blog
Zaka Volunteer BlogZaka Volunteer Blog
Zaka Volunteer Blog
 
Gsec corporate presentation 0315
Gsec corporate presentation 0315Gsec corporate presentation 0315
Gsec corporate presentation 0315
 
VRR-Resume
VRR-ResumeVRR-Resume
VRR-Resume
 
Portafolio de evidencia José Manuel Morales Osorio.
Portafolio de evidencia José Manuel Morales Osorio.Portafolio de evidencia José Manuel Morales Osorio.
Portafolio de evidencia José Manuel Morales Osorio.
 
Fiestas populares de españa kevin bustamante
Fiestas populares de españa kevin bustamanteFiestas populares de españa kevin bustamante
Fiestas populares de españa kevin bustamante
 
Nachhaltigkeit Sinn Werte und CSR in Unternehmen
Nachhaltigkeit Sinn Werte und CSR in UnternehmenNachhaltigkeit Sinn Werte und CSR in Unternehmen
Nachhaltigkeit Sinn Werte und CSR in Unternehmen
 

Similaire à "Introduction aux Developements iOS" in Three hours

10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
eLearning - Strategies de développement multi-périphériques
eLearning - Strategies de développement multi-périphériqueseLearning - Strategies de développement multi-périphériques
eLearning - Strategies de développement multi-périphériquesGoogle
 
userADgents WWDC iOS 8 juin 2014
userADgents WWDC iOS 8 juin 2014userADgents WWDC iOS 8 juin 2014
userADgents WWDC iOS 8 juin 2014USERADGENTS
 
Web responsive & E-Commerce, un seul site pour tous les devices ?
Web responsive & E-Commerce, un seul site pour tous les devices ?Web responsive & E-Commerce, un seul site pour tous les devices ?
Web responsive & E-Commerce, un seul site pour tous les devices ?altima°
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobilesneuros
 
Tech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesTech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesMichael Laguerre
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.DocDoku
 
[FR] Présentation de PhoneGap
[FR] Présentation de PhoneGap[FR] Présentation de PhoneGap
[FR] Présentation de PhoneGapThomas Bassetto
 
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..Fujitsu France
 
Développement mobile cross-plateform
Développement mobile cross-plateformDéveloppement mobile cross-plateform
Développement mobile cross-plateformStefan Cosquer
 
CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeadsRNS
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clicFabernovel
 
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?Chambé-Carnet
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeadsRNS
 
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Christophe Porteneuve
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code OCTO Technology
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageLaFrenchMobile
 
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8Microsoft
 

Similaire à "Introduction aux Developements iOS" in Three hours (20)

10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
eLearning - Strategies de développement multi-périphériques
eLearning - Strategies de développement multi-périphériqueseLearning - Strategies de développement multi-périphériques
eLearning - Strategies de développement multi-périphériques
 
userADgents WWDC iOS 8 juin 2014
userADgents WWDC iOS 8 juin 2014userADgents WWDC iOS 8 juin 2014
userADgents WWDC iOS 8 juin 2014
 
Web responsive & E-Commerce, un seul site pour tous les devices ?
Web responsive & E-Commerce, un seul site pour tous les devices ?Web responsive & E-Commerce, un seul site pour tous les devices ?
Web responsive & E-Commerce, un seul site pour tous les devices ?
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobiles
 
Ionic
IonicIonic
Ionic
 
Tech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesTech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobiles
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.
 
[FR] Présentation de PhoneGap
[FR] Présentation de PhoneGap[FR] Présentation de PhoneGap
[FR] Présentation de PhoneGap
 
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..
Fujitsu IT Future 2013 : l’ère du tout mobile, mode d’emploi..
 
Développement mobile cross-plateform
Développement mobile cross-plateformDéveloppement mobile cross-plateform
Développement mobile cross-plateform
 
20140424 MeetUp Nuxeo iOS
20140424 MeetUp Nuxeo iOS20140424 MeetUp Nuxeo iOS
20140424 MeetUp Nuxeo iOS
 
CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeads Rennes #6
CocoaHeads Rennes #6
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clic
 
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?
[Chambé-Carnet] Web Mobile : quelles opportunités, quels moyens ?
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
 
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usage
 
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
 

Plus de Laurent MEURISSE

Map mycost présentationjury
Map mycost présentationjuryMap mycost présentationjury
Map mycost présentationjuryLaurent MEURISSE
 
Projet MapMyCost, concours API AxaBanque by ekito camp
Projet MapMyCost, concours API AxaBanque by ekito campProjet MapMyCost, concours API AxaBanque by ekito camp
Projet MapMyCost, concours API AxaBanque by ekito campLaurent MEURISSE
 
Proposition forge agile 1.0
Proposition forge agile 1.0Proposition forge agile 1.0
Proposition forge agile 1.0Laurent MEURISSE
 
Presentation agilité et Scrum à Cocoaheads Toulouse
Presentation agilité et Scrum à Cocoaheads ToulousePresentation agilité et Scrum à Cocoaheads Toulouse
Presentation agilité et Scrum à Cocoaheads ToulouseLaurent MEURISSE
 
Agilité dans les grandes entreprises, rupture ou transition ?
Agilité dans les grandes entreprises, rupture ou transition ?Agilité dans les grandes entreprises, rupture ou transition ?
Agilité dans les grandes entreprises, rupture ou transition ?Laurent MEURISSE
 
Innovation pour une DSI plus agile
Innovation pour une DSI plus agileInnovation pour une DSI plus agile
Innovation pour une DSI plus agileLaurent MEURISSE
 

Plus de Laurent MEURISSE (7)

Agile book v5
Agile book v5Agile book v5
Agile book v5
 
Map mycost présentationjury
Map mycost présentationjuryMap mycost présentationjury
Map mycost présentationjury
 
Projet MapMyCost, concours API AxaBanque by ekito camp
Projet MapMyCost, concours API AxaBanque by ekito campProjet MapMyCost, concours API AxaBanque by ekito camp
Projet MapMyCost, concours API AxaBanque by ekito camp
 
Proposition forge agile 1.0
Proposition forge agile 1.0Proposition forge agile 1.0
Proposition forge agile 1.0
 
Presentation agilité et Scrum à Cocoaheads Toulouse
Presentation agilité et Scrum à Cocoaheads ToulousePresentation agilité et Scrum à Cocoaheads Toulouse
Presentation agilité et Scrum à Cocoaheads Toulouse
 
Agilité dans les grandes entreprises, rupture ou transition ?
Agilité dans les grandes entreprises, rupture ou transition ?Agilité dans les grandes entreprises, rupture ou transition ?
Agilité dans les grandes entreprises, rupture ou transition ?
 
Innovation pour une DSI plus agile
Innovation pour une DSI plus agileInnovation pour une DSI plus agile
Innovation pour une DSI plus agile
 

"Introduction aux Developements iOS" in Three hours

  • 1.
  • 2. 2
  • 3. Laurent Meurisse •Conception et la validation d’une application iPhone pour une grande entreprise •Dev d’une application trafficWave •Coaching agile (entreprise & mobile) twitter @laurentmeurisse Mélanie Bessagnet Conception et développement d’applications iPhone ou iPad. Smartsy, FidelPass, L’Oréal. twitter @mbessagnet 3
  • 4. ekito /offre mobilité ★ Accompagnement dans toutes les phases des projets ➡ Définition de stratégie et spécifications ➡ Ergonomie & design ➡ Architecture & développement ➡ Distribution ★ Multi plateforme ➡ iOS (iPhone & iPad), Android, Windows Phone, web mobile ★ Intégration dans l’entreprise ➡ Sécurité, gestion de flotte, intégration SI 4
  • 5. ekito /Projets d’entreprise ★ Application iPad pour un grand acteur de l’aéronautique ➡ Consultation de documents marketing pour les visiteurs de salons ➡ Conseils, conception & développement ★ Application iPad pour un opérateur téléphonique ➡ Le management avait besoin d’un « dashboard » pour consulter l’état du réseau avec +80.000 antennes ➡ Conseils, conception, ergonomie/design & développement 5
  • 6. ekito /Projets grand public ★ « Smartsy » (iPhone, iPad & Android) ➡ Applications réalité augmentée pour consulter du contenu multimédia en accompagnement de support physique ➡ Reconnaissance d’images, site web, API ➡ Distribution dans l’App Store d’Apple et le Market de Google ★ « Fidelpass » (iPhone) ➡ Solution de carte de fidélité virtuelle pour smartphone ➡ Mode déconnecté, génération de codes 6
  • 7. Partage de la connaissance Toulouse 8 mars 2012 – ARC et Storyboards 7
  • 9. que me faut t'il pour démarrer ? ➡ licence développeur ➡ un iPhone ou iPad ➡ un Mac ➡ La dernière version du SDK 9
  • 10. qu'est ce que je dois savoir faire ? ➡ être habile en design IHM ➡ avoir des bonnes idées ➡ avoir quelques soirées de disponibles ➡ constituer une communauté d’early adopters 10
  • 11. partie 1 succès d’iOS ➡ iOS ➡ excellence ergonomique ➡ App Store 11
  • 13. 13
  • 14. ★ Système d’exploitation de l’iPhone/iPod Touch/iPad ★ Basé sur Mac OS X ★ Offre de nombreuses possibilités d’applications ★ Nécessite aucune notion préalable du développement Mac OS X 14
  • 15. ★ Architecture iOS Cocoa Touch appareil photo localisation Multi-touch Webkit accéléomètre Media layer Video Quartz Core Audio JPEG/PNG... PDF Core Services SQLite threading file system preference Collection Core Location Carnet d'adresse Core OS power OSX kernel réseau management baseBand bootLoader firmware 15
  • 16. ça à l'air très compliqué !!! 16
  • 17. partieergonomique 1 ➡excellence 17
  • 18. ➡ le doigt est roi 18
  • 19. le doigt est roi ★ iOS est déployé sur des plateformes tactiles. ➡ De nombreuses possibilités de gestes. ➡ Une application trop complexe n’est pas utilisable ➡ L’ergonomie doit être l’une des préoccupations principales. 19
  • 20. le doigt est roi ★ L’iOS est une rupture par rapport aux modèles ergonomiques traditionnels 20
  • 22. ★ Qu’est ce qu’un pattern utilisateur ? ➡ ex. : Possibilité de naviguer dans une structure hiérarchique, en revenant au départ facilement ➡ ex. : possibilité de naviguer entre différentes partie sans perdre le focus 22
  • 23. ➡ les principaux éléments 23
  • 27. ... h,p://p,rns.com/ 27
  • 28. ➡ La règle des 44 pixels 28
  • 29. La règle des 44 pixels 29
  • 31. 31
  • 32. ➡ Native ou WebApp ? 32
  • 33. ★ Application native ➡ Application conçue spécifiquement pour une plateforme en utilisant le SDK propre à celle ci. ★ Web app ➡ Application réalisée via un site Web optimisé pour mobile 33
  • 34. WebApp Quels sont les avantages ? ➡ Indépendance à Apple. ➡ Indépendance à la plateforme. ➡ Mise à jour facilitée. ➡ Coût de développement. ➡ Transaction e- commerce 34
  • 35. WebApp Quels sont les inconvéniants ? ➡ Moins de visibilité. ➡ Difficile à monnayer. ➡ Dépendance à la connectivité. ➡ Expérience utilisateur. ➡ Consommation des ressources. 35
  • 37. Quelques principes de base ➡ Minimiser la quantité d’information. ➡ Respecter la fluidité de l’appareil. ➡ Ne pas offrir trop de réglages à l’utilisateur. ➡ Demander de sauvegarder seulement quand c’est nécessaire ➡ Eviter les écrans «modals». ➡ Démarrer rapidement ★ Toujours faire au plus simple ! 37
  • 38. ➡ Respecter les gestes de bases. ➡ utiliser des gestes compliqués comme «raccourcis», mais en permettant d’effectuer l’action autrement. ➡ sur iPad, possibilité d’utiliser plusieurs doigts ➡ en général éviter de définir des nouveaux gestes 38
  • 39. partie Certificat, Profile 1 ➡Programme, 39
  • 40. 40
  • 41. iOS Programmes ★ iOS developer program (99$) • 100 devices (dev, tests) ➡ individuelle • nom de la personne sur l’AppStore • un seul développeur ➡ Company • nom de l’entreprise (justification nécessaire) • nombre illimité de développeurs • 3 rôles (agent, admin, member) ➡ attention on ne peut pas basculer d’une option à l’autre 41
  • 42. iOS Programmes ★ iOS enterprise program (299 $) ➡ inHouse deployment ➡ Mobile Device Management • gestion de la flote des devices iOS ➡ impossibilité de déployer sur l’AppStore 42
  • 43. Certificats ★ Certificats ➡ Certificat développeur • unique pour chaque développeur • lié à une machine ➡ Certificat de distribution • un seul par programme 43
  • 44. Profiles ★ Profile de développement ➡ lié à l’appli (AppId) ➡ lié à un certif de dev (pour chaque dév) ➡ lié aux devices ➡ un seul par développeur ★ Profile de distribution ➡ lié à l’appli ➡ lié à un certif de distribution ➡ deux modes de distribution • app store • adhoc • entreprise 44
  • 46. AppStore ➡ Il y a t’il de la place par rapport à mon application? ➡ quel prix pour les applications concurrentes ? ➡ Version gratuite / Version Payante ➡ Baisse de prix d’application (ou gratuite) .. 2h à 4h ➡ le nombre de téléchargement influes sur le classement 46
  • 47. sur l’AppStore ★ Pour publier son application, trois étapes : ➡ Rédaction des détails de l’application. ➡ Upload de l’exécutable. ➡ Validation par Apple. ➡ La période de validation passe par un certain nombre d’états, variables suivant les cas. ★ Si l’application n’est pas validée, le développeur reçoit automatiquement un e-mail d’explications. 47
  • 48. ★ Attention, respecter les Guideline Apple ★ De nombreuses règles sont à respecter pour qu’une application soit validée par Apple. En voici les plus courantes : ➡ Aucun crash. ➡ Pas de fuite mémoire. ➡ Description conforme à l’application. ➡ Révéler toute fonctionnalité cachée à la validation. ➡ Respecter les droits d’auteur. ➡ Uniquement utiliser les classes documentées d’Apple. ➡ Notifier les changements d’état du réseau. ➡ Apple Human Interface Guidelines. 48
  • 50. Tester ★ Audience / Logging ➡ Flurry ➡ TestFlyApp • Session • Questions in-App • Crash reports • Checkpoints • Remote logging • in-App updates 50
  • 51. pour tester ★ Autre solution pour distribuer une application iOS, la distribution Ad Hoc. ➡ Échelle réduite (maximum 100 appareils). ➡ Aucune validation par Apple. ➡ Inscription à l’iOS Developer Program également obligatoire. 51
  • 52. ➡ MDM 52
  • 53. 53
  • 54. 54
  • 55. 55
  • 56. 56
  • 58. 58
  • 59. partie 2 développer ➡ Concevoir ➡ L’environnement de developpement ➡ Bases de l’objective-C ➡ Les nouveautes d’iOS 5 59
  • 61. je vais devoir tailler mon crayon !! h,p://iphonemockup.lkmc.ch 61
  • 62. 62
  • 63. Quelques Mockup ★ balsamiq ★ omniGraffle ★ Adobe Illustrator ★ le post it iphone 63
  • 65. Développements Agiles ➡ deux tendances à connaitre • lean startup • scrum 65
  • 67. Développements Agiles ➡ ne pas surdimentioner la richesse de l’application (priorisation par la valeur), faire des user stories ➡ faire des livraisons et des tests souvent ➡ si on doit s’interfacer : bien définir ! (prévoir un niveau d’information minimal) 67
  • 68. scrum USE STO R RY USE STO R RY 68
  • 69. Je me connecte via le n° FlyingBlue Je consulte la liste de mes réservations Je consulte le détail d'une réservation Je consulte les passagers d'une réservation Je consulte l'actualité d'un vol AF J'enregistre une réservation (carte d'embarquement) 69
  • 70. 13 quelle est sa valeur métier? USE STO R RY pour quel effort à fournir? 89 70
  • 71. 144 89 Je consulte le détail d'une réservation 89 144 J'enregistre une réservation (carte d'embarquement) ordre de dev 55 55 Je consulte la liste de mes réservations 34 233 Je me connecte via le n° FlyingBlue 8 233 Je consulte les passagers d'une réservation 13 144 Je consulte l'actualité d'un vol AF 71
  • 72. SPRINT 1 SPRINT 2 DEMO SPRINT 1 TESTS RELEASE 1 SPRINT 3 DEMO SPRINT 2 TESTS PROD SPRINT 4 DEMO SPRINT 3 TESTS SPRINT 5 DEMO SPRINT 4 TESTS RELEASE 2 SPRINT 6 DEMO SPRINT 5 TESTS 72 PROD
  • 73. partie 2 C ➡base de l’Objective 73
  • 74. ➡ écrire une classe, une méthode, un protocol 74
  • 75. écrire une classe ➡ interface ➡ implémentation #import <Foundation/Foundation.h> #import "Voiture.h" @interface Voiture : NSObject { @implementation Voiture //déclaration des variables NSString *immat; // implémentation des méthodes NSInteger *gear; NSInteger *speed; @end } -(int)multiply:(int)a to:(int)b ; -(int)square:(int)a ; //déclaration des méthodes @end 75
  • 77. écrire une méthode -(int)multiply:(int)a to:(int)b { return a*b; } -(int)square:(int)a { return [self multiply:a to:a]; } ➡ [object doSomething]; au lieu de object.doSomething(); 77
  • 78. écrire un protocol #import <Foundation/Foundation.h> @protocol Vehicule <NSObject> @optional -(void)klaxonner; -(void)baisserVitre; -(void)leverVitre; @required -(void) demarrer ; -(void) arreter; @end 78
  • 79. réaliser un protocol #import "Voiture.h" @implementation Voiture #import <Foundation/Foundation.h> // implémentation des méthodes #include "Vehicule.h" @interface Voiture : NSObject <Vehicule> { -(int)multiply:(int)a to:(int)b //déclaration des variables { return a*b; NSString *immat; } NSInteger *gear; NSInteger *speed; -(int)square:(int)a { return [self multiply:a to:a]; } } -(int)multiply:(int)a to:(int)b ; -(int)square:(int)a ; -(void) demarrer -(void) demarrer ; { NSLog(@"Vrooum"); } //déclaration des méthodes @end -(void) arreter { NSLog(@"..."); } @end 79
  • 81. Cocoa Fondation ➡ Framework de base pour le développement Mac OS X et iOS. ➡ Importation dans un projet : #import <Foundation/Foundation.h> ➡ (Par défaut dans un nouveau projet Xcode) 81
  • 82. Cocoa Foundation ★ Objets de base : ➡ NSString : Chaîne de caractères. ➡ NSArray : Tableau non modifiable. ➡ NSDictionnary : Structure fixe d’objets référencés par une clé unique. ➡ Mot clé Mutable : Indique si une instance de classe peut être modifiée après création. ➡ Exemple : NSMutableArray et NSMutableDictionnary. 82
  • 83. ➡ gestion de la mémoire 83
  • 84. ★ Destruction d’un objet : ➡ L’objet créé peut être détruit de deux façons différentes. ➡ Autolibération : La libération de la mémoire allouée est gérée par le système. (autorealease) ➡ Libération : la libération est laissée aux soins de l’utilisateur. (release). 84
  • 85. Allocation, destruction, autolibération ★ Par défaut, l’utilisateur doit s’occuper de la libération des objets qu’il alloue : -(void)direBonjour { NSString *maPhrase = [[NSString alloc] initWithString:@"bonjour"]; NSLog(@"%@",maPhrase); ! [maPhrase release]; } ★ Des fois, il est indispensable de laisser le système s’en occuper : -(NSString *)creerBonjour { ! NSString *maPhrase = [[[NSString alloc] initWithString:@"bonjour"] autorelease]; ! return maPhrase; } ➡ retain, release et autorelease sont des méthodes de NSObject ★ 85
  • 86. Variable d’instance ★ Prototypage des variables d’instance : ➡ Ajoute une couche d’abstraction pour la gestion de la mémoire. ➡ Réduit le nombre de lignes de code. ➡ Garantie l'intégrité des données. ★ Dans l’interface : @property (nonatomic, retain) Moteur *moteur; ★ Dans l’implémentation : @synthesize moteur; 86
  • 88. ★ La règle du comptage par référence est la suivante : ➡ On incrémente le compteur lorsque l’on fait appel aux méthodes +alloc, -retain ou -copy de l’objet. ➡ On décrémente le compteur lorsque l’on fait appel à la méthode - release de l’objet. ➡ Lorsque le compteur atteint 0, l’objet et donc son espace mémoire alloué sont libérés automatiquement. 88
  • 89. ➡ UIKit 89
  • 90. UIKit ➡ Framework supplémentaire pour le développement iOS. Ajoute les fonctions nécessaires pour l’interaction tactile. ➡ Importation dans un projet : #import <UIKit/UIKit.h> ➡ (Par défaut dans un nouveau projet Xcode) 90
  • 91. UIButton 91
  • 92. ➡ Connections Synchrone et Asynchrone 92
  • 93. ★ Requête synchrone ➡ application en attente du résultat ➡ application non réactive, figée urlString = [NSString stringWithFormat:@"http://webaddress/trafficservlet? sendTagWave=1&id=%@&posLo=%@&posLa=%@&version=1&course=%@&idSession=%@", ! ! ! ! [userId stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], ! ! ! ! [textLongitude stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], ! ! ! ! [textLatitude stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], ! ! ! ! ! ! ! ! [textCourse stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]! , ! ! ! ! [textIdSession stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ! ! ! ! ]; ! ! NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]]; 93
  • 94. ★ Requête asynchrone - (void)viewDidLoad { [super viewDidLoad]; ! // Effectuer la requête dans un autre thread ! [NSThread detachNewThreadSelector:@selector (chargerXML) toTarget:self withObject:nil]; } - (void)chargerXML { ! NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; ! // Faire la requête ! [self effectuerRequete]; ! // Notifier le thread principal que l’on a fini ! [self performSelectorOnMainThread:@selector (chargementFini) withObject:nil waitUntilDone:NO]; ! [pool release]; } 94
  • 96. notification Push ➡ Il permet d’afficher des badges, alertes et sons sans que l’application ne tourne ➡ Il ne nécessite pas de grosses infrastructures serveur ➡ Il préserve la durée de vie de la batterie (par rapport aux connections TCP/IP) 96
  • 97. ➡ Cartographie et géolocalisation 97
  • 98. ★ Pouvoir localiser sa position et son orientation sur une carte nécessite l’utilisation de deux frameworks : ➡ CoreLocation — permettant d'utiliser les capacités de géolocalisation de l’iPhone ➡ MapKit — permettant d’insérer des cartes géographiques complètes dans une application. 98
  • 99. CoreLocation ★ Framework pour gérer la localisation et l’orientation. ➡ CLLocation ➡ CLLocationManager ★ Pas d’interface utilisateur. ★ Utilise trois approches pour se situer. ➡ GPS ➡ Wifi ➡ Réseau Téléphonique ★ Plus la localisation se veut précise, plus elle est coûteuse en énergie. 99
  • 100. CLLocationManagerDelegate ★ // Répond aux changements de position - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation; 100
  • 102. 102
  • 103. delegation 103
  • 105. exemple de plan d’architecture global 5 notification serveur BACKEND eSite push xml cache parser rss connecteur json services 4 ... 1 3 cron 2 105
  • 106. partie 2 de ➡L’environnement développement XCode 106
  • 108. 108
  • 109. partie d’iOS 5 2 ➡Nouveautés 109
  • 110. Nouveautés iOS 5 ★ ARC ★ Storyboards ★ UIKit Customization ★ iCloud ★ Twitter Integration ★ Nombreux changements dans les APIs 110
  • 111. ARC (Automatic Reference Counting) ➡ ARC s'occupe des libérations mémoire à la place du développeur, plus de gestion manuelle de la mémoire. ➡ Le code est allégé et la tâche du développeur est simplifié. ➡ Avec ARC activé, le compilateur insère automatiquement les méthodes de retain, release et autorelease à la bonne place dans le code. 111
  • 112. StoryBoards 112
  • 113. UIKit Customization ➡ Pour sortir du lot, une application, en plus d'être fonctionnelle, doit avoir un design attrayant. ➡ La plupart des applications ma jeures de l'AppStore utilisent des éléments d'interfaces customisés. ➡ Avant la sortie d'iOS 5, la tâche n'était pas du tout aisée. Il fallait très souvent de nombreuses lignes de code pour changer l'apparence d'un élément standard. ➡ A présent, Apple a donné accès à de nouvelles méthodes qui facilitent ce travail. 113
  • 115. code de l’appli h,p://db.,/pbEhiPro basé sur le tutoriel officiel d'Apple "Your first iOS app" 115