Après le succès de la première séance, je présente avec Mélanie Bessagnet (@mbessagnet) pour la deuxième fois la session "Introduction au développement iOS" organisée par iConcept à Toulouse et ekito.
La présentation permettra en 3 heures d'aborder de nombreux thèmes, aussi bien pratiques que techniques sur le développement d'application iOS (iPhone et iPad). Elle est destinée à la fois aux néophytes, mais aussi aux développeurs (java, web, php) ... car une séance de 45 minutes sera du code pure (et donc du pure bonheur ;).
Voici le programme :
Succès d'IOS
iOS
l'excellence Ergonomique
App Store (en quoi consiste la publication sur l'app store ? nous expliquerons aussi en détail les différentes licences développeurs)
Développer
Concevoir (avec Story Boarding)
Profiles et Certificats
Beta Testing
MDM (nous expliquerons comment est géré une flotte de terminaux (iPhone, iPad) gràce au Mobile Device Management)
Coder
L'environnement de développement XCode
Objective-C en 15 minutes
Les nouveautés du SDK iOS 5 (ARC, iCloud, Apparearence, ...)
Coding (Pratique)
il s'agit de coder une première (petite) application. Le code de l'application sera disponible en début de séance.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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