"Introduction aux Developements iOS" in Three hours
-
Upload
laurent-meurisse -
Category
Technology
-
view
1.129 -
download
0
description
Transcript of "Introduction aux Developements iOS" in Three hours
![Page 1: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/1.jpg)
![Page 2: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/2.jpg)
2
![Page 3: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/3.jpg)
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 BessagnetConception et développement d’applications iPhone ou iPad.
Smartsy, FidelPass, L’Oréal.twitter @mbessagnet
![Page 4: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/4.jpg)
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
![Page 5: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/5.jpg)
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
![Page 6: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/6.jpg)
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
![Page 7: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/7.jpg)
Partage de la connaissance
7
Toulouse 8 mars 2012 – ARC et Storyboards
![Page 8: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/8.jpg)
➡ introduction
8
![Page 9: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/9.jpg)
➡ licence développeur
➡ un iPhone ou iPad
➡ un Mac
➡ La dernière version du SDK
9
que me faut t'il pour démarrer ?
![Page 10: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/10.jpg)
➡ être habile en design IHM
➡ avoir des bonnes idées
➡ avoir quelques soirées de disponibles
➡ constituer une communauté d’early adopters
10
qu'est ce que je dois savoir faire ?
![Page 11: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/11.jpg)
partie 1
11
➡ iOS
➡ excellence ergonomique
➡App Store
succès d’iOS
![Page 12: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/12.jpg)
➡ iOS
12
partie 1
![Page 13: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/13.jpg)
13
![Page 14: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/14.jpg)
★ 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
![Page 15: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/15.jpg)
★ Architecture iOS
15
OSX kernelpower
management
Core OS
réseau
Collection Core Location
Core Services
Carnet d'adresse
threading file system preference
SQLite
Core Audio JPEG/PNG...
Media layer
Video Quartz
Multi-touch Webkit
Cocoa Touch
accéléomètre
localisationappareil photo
baseBand bootLoader firmware
![Page 16: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/16.jpg)
16
ça à l'air très compliqué !!!
![Page 17: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/17.jpg)
➡ excellence ergonomique
17
partie 1
![Page 18: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/18.jpg)
➡ le doigt est roi
18
![Page 19: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/19.jpg)
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
![Page 20: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/20.jpg)
le doigt est roi
★ L’iOS est une rupture par rapport aux modèles ergonomiques traditionnels
20
![Page 21: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/21.jpg)
➡ patterns utilisateur
21
![Page 22: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/22.jpg)
★ 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
![Page 23: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/23.jpg)
➡ les principaux éléments
23
![Page 24: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/24.jpg)
Navigation par onglet
24
![Page 25: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/25.jpg)
Les listes
25
![Page 26: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/26.jpg)
La navigation entre vues
26
![Page 28: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/28.jpg)
➡ La règle des 44 pixels
28
![Page 29: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/29.jpg)
La règle des 44 pixels
29
![Page 30: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/30.jpg)
➡ la gestuelle
30
![Page 31: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/31.jpg)
31
![Page 32: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/32.jpg)
➡ Native ou WebApp ?
32
![Page 33: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/33.jpg)
★ 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
![Page 34: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/34.jpg)
WebApp
34
Quels sont les avantages ?
➡ Indépendance à Apple.
➡ Indépendance à la plateforme.
➡Mise à jour facilitée.
➡Coût de développement.
➡Transaction e-commerce
![Page 35: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/35.jpg)
WebApp
35
➡Moins de visibilité.
➡Difficile à monnayer.
➡Dépendance à la connectivité.
➡ Expérience utilisateur.
➡Consommation des ressources.
Quels sont les inconvéniants ?
![Page 36: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/36.jpg)
iOS Human interface Guideline
http://developer.apple.com/library/IOS/documentation/UserExperience/Conceptual/MobileHIG/MobileHIG.pdf
36
![Page 37: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/37.jpg)
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
![Page 38: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/38.jpg)
➡ 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
![Page 39: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/39.jpg)
➡ Programme, Certificat, Profile
39
partie 1
![Page 40: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/40.jpg)
40
![Page 41: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/41.jpg)
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
![Page 42: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/42.jpg)
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
![Page 43: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/43.jpg)
Certificats
★ Certificats➡Certificat développeur
• unique pour chaque développeur
• lié à une machine
➡Certificat de distribution• un seul par programme
43
![Page 44: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/44.jpg)
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
![Page 45: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/45.jpg)
➡ publication
45
![Page 46: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/46.jpg)
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
![Page 47: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/47.jpg)
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
![Page 48: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/48.jpg)
★ 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
★ Attention, respecter les Guideline Apple
![Page 49: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/49.jpg)
➡ beta testing
49
![Page 50: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/50.jpg)
Tester
★ Audience / Logging➡ Flurry
➡TestFlyApp• Session
• Questions in-App
• Crash reports
• Checkpoints
• Remote logging
• in-App updates
50
![Page 51: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/51.jpg)
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
![Page 52: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/52.jpg)
➡ MDM
52
![Page 53: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/53.jpg)
53
![Page 54: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/54.jpg)
54
![Page 55: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/55.jpg)
55
![Page 56: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/56.jpg)
56
![Page 57: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/57.jpg)
➡ iTunes Connect
57
![Page 58: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/58.jpg)
58
![Page 59: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/59.jpg)
partie 2
59
➡Concevoir
➡ L’environnementde developpement
➡ Bases de l’objective-C
➡ Les nouveautes d’iOS 5
développer
![Page 60: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/60.jpg)
➡ concevoir
60
partie 2
![Page 61: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/61.jpg)
61
je vais devoir tailler mon crayon !!
h,p://iphonemockup.lkmc.ch
![Page 62: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/62.jpg)
62
![Page 63: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/63.jpg)
Quelques Mockup
★ balsamiq
★ omniGraffle
★ Adobe Illustrator
★ le post it iphone
63
![Page 64: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/64.jpg)
➡ développement agile
64
![Page 65: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/65.jpg)
Développements Agiles
➡ deux tendances à connaitre
• lean startup
• scrum
65
![Page 66: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/66.jpg)
lean startup
66
![Page 67: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/67.jpg)
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
![Page 68: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/68.jpg)
68
USERSTORY
USERSTORY
scrum
![Page 69: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/69.jpg)
69
J'enregistre une réservation (carte d'embarquement)
Je consulte l'actualité d'un vol AF
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
![Page 70: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/70.jpg)
70
USERSTORY
quelle est
sa valeur
métier?
pour quel
effort à
fournir?
13
89
![Page 71: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/71.jpg)
71
13 1448 233
34 23355 5589 144
144 89
ordr
e de
dev
Je consulte le détail d'une réservation
J'enregistre une réservation (carte d'embarquement)
Je consulte la liste de mes réservations
Je me connecte via le n° FlyingBlue
Je consulte l'actualité d'un vol AF
Je consulte les passagers d'une réservation
![Page 72: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/72.jpg)
72
RELEASE 1 RELEASE 2
SP
RIN
T 1
SP
RIN
T 2
SP
RIN
T 3
SP
RIN
T 4
SP
RIN
T 5
SP
RIN
T 6
PRODPROD
TESTSTESTS
TESTS TESTS
DE
MO
SP
RIN
T 1
DE
MO
SP
RIN
T 2
DE
MO
SP
RIN
T 3
TESTS
DE
MO
SP
RIN
T 4
DE
MO
SP
RIN
T 5
![Page 73: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/73.jpg)
➡ base de l’Objective C
73
partie 2
![Page 74: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/74.jpg)
➡ écrire une classe, une méthode, un protocol
74
![Page 75: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/75.jpg)
écrire une classe
75
➡ implémentation➡ interface
#import <Foundation/Foundation.h>
@interface Voiture : NSObject { //déclaration des variables NSString *immat; NSInteger *gear; NSInteger *speed; }-(int)multiply:(int)a to:(int)b ;-(int)square:(int)a ;
//déclaration des méthodes@end
#import "Voiture.h"
@implementation Voiture
// implémentation des méthodes
@end
![Page 76: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/76.jpg)
écrire une classe
76
![Page 77: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/77.jpg)
écrire une méthode
77
-(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();
![Page 78: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/78.jpg)
écrire un protocol
78
#import <Foundation/Foundation.h>
@protocol Vehicule <NSObject>
@optional
-(void)klaxonner;-(void)baisserVitre;-(void)leverVitre;
@required
-(void) demarrer ;-(void) arreter;
@end
![Page 79: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/79.jpg)
réaliser un protocol
79
#import <Foundation/Foundation.h>#include "Vehicule.h"
@interface Voiture : NSObject <Vehicule> { //déclaration des variables NSString *immat; NSInteger *gear; NSInteger *speed; }-(int)multiply:(int)a to:(int)b ;-(int)square:(int)a ;-(void) demarrer ;
//déclaration des méthodes@end
#import "Voiture.h"
@implementation Voiture
// implémentation des méthodes
-(int)multiply:(int)a to:(int)b { return a*b;}
-(int)square:(int)a { return [self multiply:a to:a];}
-(void) demarrer { NSLog(@"Vrooum");}
-(void) arreter { NSLog(@"...");}
@end
![Page 80: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/80.jpg)
➡ Cocoa Fondation
80
![Page 81: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/81.jpg)
Cocoa Fondation
➡ Framework de base pour le développement Mac OS X et iOS.
➡ Importation dans un projet :
➡ (Par défaut dans un nouveau projet Xcode)
81
#import <Foundation/Foundation.h>
![Page 82: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/82.jpg)
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
![Page 83: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/83.jpg)
➡ gestion de la mémoire
83
![Page 84: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/84.jpg)
★ 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
![Page 85: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/85.jpg)
Allocation, destruction, autolibération★ Par défaut, l’utilisateur doit s’occuper de la
libération des objets qu’il alloue :
★ Des fois, il est indispensable de laisser le système s’en occuper :
➡ retain, release et autorelease sont des méthodes de NSObject
★85
-(void)direBonjour{ NSString *maPhrase = [[NSString alloc] initWithString:@"bonjour"]; NSLog(@"%@",maPhrase);! [maPhrase release];}
-(NSString *)creerBonjour{! NSString *maPhrase = [[[NSString alloc] initWithString:@"bonjour"] autorelease];! return maPhrase;}
![Page 86: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/86.jpg)
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 :
★ Dans l’implémentation :
86
@property (nonatomic, retain) Moteur *moteur;
@synthesize moteur;
![Page 87: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/87.jpg)
➡retain;
➡assign :
retain, assign
87
![Page 88: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/88.jpg)
★ 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
![Page 89: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/89.jpg)
➡ UIKit
89
![Page 90: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/90.jpg)
UIKit
➡ Framework supplémentaire pour le développement iOS. Ajoute les fonctions nécessaires pour l’interaction tactile.
➡ Importation dans un projet :
➡ (Par défaut dans un nouveau projet Xcode)
90
#import <UIKit/UIKit.h>
![Page 91: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/91.jpg)
91
UIButton
![Page 92: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/92.jpg)
➡ Connections Synchrone et Asynchrone
92
![Page 93: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/93.jpg)
★ 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
![Page 94: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/94.jpg)
★ 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
![Page 95: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/95.jpg)
➡ notifications Push
95
![Page 96: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/96.jpg)
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
![Page 97: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/97.jpg)
➡ Cartographie et géolocalisation
97
![Page 98: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/98.jpg)
★ 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
![Page 99: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/99.jpg)
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
![Page 100: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/100.jpg)
CLLocationManagerDelegate
★ // Répond aux changements de position - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
100
![Page 101: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/101.jpg)
➡ pattern delegate
101
![Page 102: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/102.jpg)
102
![Page 103: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/103.jpg)
delegation
103
![Page 104: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/104.jpg)
➡ développement serveur
104
![Page 105: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/105.jpg)
exemple de plan d’architecture global
105
serveur BACKEND
cron
cache
parser
xml
rss
...
23
connecteur
eSite
14services
notification
push
json
5
![Page 106: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/106.jpg)
➡ L’environnement de développement XCode
106
partie 2
![Page 107: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/107.jpg)
107
Paramètres de compilaBon
Projet
![Page 108: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/108.jpg)
108
![Page 109: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/109.jpg)
➡ Nouveautés d’iOS 5
109
partie 2
![Page 110: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/110.jpg)
Nouveautés iOS 5
★ ARC
★ Storyboards
★ UIKit Customization
★ iCloud
★ Twitter Integration
★ Nombreux changements dans les APIs
110
![Page 111: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/111.jpg)
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
![Page 112: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/112.jpg)
StoryBoards
112
![Page 113: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/113.jpg)
UIKit Customization
➡ Pour sortir du lot, une application, en plus d'être fonctionnelle, doit avoir un design attrayant.
➡ La plupart des applications majeures 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
![Page 114: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/114.jpg)
partie 3
114
➡Hello World
pratique
![Page 115: "Introduction aux Developements iOS" in Three hours](https://reader036.fdocuments.in/reader036/viewer/2022081401/55845527d8b42a6a6d8b5196/html5/thumbnails/115.jpg)
code de l’appli
115
h,p://db.,/pbEhiProbasé sur le tutoriel officiel d'Apple "Your first iOS app"