100% ont trouvé ce document utile (1 vote)
220 vues108 pages

Cours 2 TDM

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 108

Technologies et Développement Mobile

Nadia Elouali!
[email protected]
2018-2019
Chapitre II : Le développement d’application mobile :
Android Vs iOS

!
‣ La philosophie et structure
!
‣ Les différences techniques en développement d’application
!
La structure du projet
Le test de l’application
Les langages de programmation
!
‣ Le coût d’application et le mobile marketing
!
Le coût d’une application mobile
La monétisation de l'application

!2
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

• À l'origine, « Android » était le nom d'une PME américaine, créée en


2003 puis rachetée par Google en 2005.

• La défi, derrière Android, était de développer un système d'exploitation


mobile intelligent qui permet à l'utilisateur d'interagir avec son
environnement (notamment avec son emplacement géographique).

• Cependant en 2007, Google a décidé changé le marché du mobile : à cette


époque, chaque constructeur équipait son téléphone d'un système
d'exploitation propriétaire (pour chaque téléphone, un système plus ou
moins différent). Google a décidé donc de développer un système open
source pour l'exploitation sur différents appareils mobiles.

https://openclassrooms.com (L'univers Android) !3


Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

• La base d’Android est un noyau Linux, mais ce dernier a subi de


nombreuses modifications (permettant une meilleurs gestion pour les
appareils mobiles)

• L’architecture d’Android peut se découper en cinq parties:


• le noyau,
• les bibliothèques,
• un environnement d’exécution,
• un framework,
• les applications.

!4
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Le noyau (modifications par rapport au noyau Linux)

• Binder : permet les communications inter-processus (remplace IPC linux)

• Ashmem (Android shared memory) : un sous-système proche de Shared


Memory (SHM) pour la gestion de la mémoire
• Logger : celui-ci permet d’effectuer une surveillance via la commande logcat
(onglet Android Debug Bridge (adb)).
• OOM (Out Of Memory) : C’est une sorte de gestionnaire de tâches
(choisit un processus pour le tuer si pas assez de mémoire), il est aussi
appelé Viking Killer.

!5
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Les bibliothèques
• Ensemble de librairies écrites en C/C++, offrant les principaux services du
système d’exploitation
• WebKit fournit une fondation sur lequel on peut développer un navigateur
web. Media Framework permet le support des standards audio/vidéo/image.
Surface Manager permet de construire le rendu graphique,…
bibliothèque C (bionic)
développer par Google (elle
remplace la glibc de linux
(légère/rapide))

!6
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
L'environnement d’exécution
• Le Runtime Android écrit en C/C++ et Java, apporte le support Java à
travers la Dalvik VM et les librairies implantant les APIs Android (Core
Libraries)
• Dalvik exécute du bytecode qui est créé à partir de programmes écrits en
Java (ou Kotlin). Son temps d’exécution est deux fois plus rapide qu’avec des
machines Java standard.

!7
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

L'environnement d’exécution

• Dalvik a été conçu pour gérer plusieurs processus et partager la


bibliothèque principale entre ces processus. Tout est fait pour économiser
le plus de cycles processeur.

!8
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Le framework

• Les composants applicatifs implantant les services de haut niveau : des API
permettant aux développeurs de créer des applications riches.

!9
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Le framework est une
Le framework
partie d’Android très
• Il fournit tout ce dont les applications complexe
peuvent avoir besoin :
!
• Activity Manager : gère le cycle de
vie des applications et maintient une
"pile de navigation" permettant
d'aller d'une application à une autre.
• Content Provider : c’est le système
qui permet le partage des données
entre les applications
• Location Manager (service
matériel) : permet l’utilisation du
GPS.
• etc.
!10 https://www.gamergen.com/dossiers/dossier-android-acrhitecture-118615-4
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Les applications

!11
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Les applications

• Les applications peuvent contenir :


!
• Les services qui sont des codes fonctionnant en arrière-plan, non
interactif,
!
• les activités qui prennent la forme d’écrans. Les activités sont comme
des pages Web, et l’utilisateur peut naviguer à sa guise d’une page à
l’autre (autrement dit d’une application à une autre, mais aussi entre
différentes activités d’une même application).

!12
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

Les applications

• Pour réaliser la navigation, les applications (activités) font toujours appel au


Binder.

• Pour utiliser le mécanisme d’IPC (Inter Process Call), les applications créent
des intents (intentions).

• Les intents ne provoquent pas d’action directe avant d’être interprétés.

• Suivant les types d’intents, il se peut que plusieurs applications puissent y


répondre. Dans ce cas, une boite de dialogue est affichée, permettant à
l’utilisateur de choisir lui-même l’application.
!13
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

Google ne livre pas toutes les informations concernant son système. Les
documentations sont rarement complètes et certaines API ne sont pas
documentées. Pourtant, avoir les documentations des API permettrait
une plus grande compréhension de l’architecture d’Android.

https://www.gamergen.com/dossiers/dossier-android-acrhitecture-118615-6 !14
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

!15
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Dernière version Pie (Android 9 - 06/08/2018)

Pie dispose de plusieurs nouvelles fonctionnalités dont plusieurs sont liées à la


notion d'intelligence artificielle. Parmi elles, on trouve une gestion
intelligente de la batterie et de la luminosité, adaptée à chaque utilisateur
par le biais de l'apprentissage profond.
!16
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

Pourquoi Google a choisi des noms de pâtisseries et de desserts pour les


versions d'Android?

Google n’a jamais vraiment donné de


réponse claire et précise, mais d'après
quelques déclarations l’idée c’est que les
desserts, comme les smartphones et
tablettes, sont là pour rendre nos vies plus
agréables !

!17
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet

• Une application Android se concrétise sous la forme d’un fichier archive


dont le nom possède l’extension .apk (Android Package Kit). Cette archive
contient :
!
• un fichier manifest décrivant le contenu de l’archive, la nature de
l’application et ses points d’entrée
!
• le code exécutable contenu dans un fichier .odex (Optimized
Dalvik Executable).
!
• des fichiers de ressources contenant des données manipulées
par l’application : image, son, description d’interface graphique,
fichiers de localisation…
!18
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
La structure du projet Fichier manifest (~ clair/évident)
• Ce fichier est indispensable pour tous les projets Android, c'est pourquoi il
est créé par défaut.

!19
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet

• La racine est un nœud de type <manifest> : montrer qu'on utilise l'espace


de noms android et déclare dans quel package se trouve l’application

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapplication">

Un espace de noms XML est une recommandation du W3C qui permet


de résoudre les ambiguïtés entre des noms identiques d'éléments ou
d'attributs de plusieurs instances XML. Wiki

Le nom de package doit être unique pour être publié sur le Google Play.
De plus, une fois l’application diffusée, il ne faut pas changez ce nom
puisqu'il agira comme un identifiant unique pour l’application.
!20
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet
• <application> est le nœud le plus important. Il décrit les attributs qui
caractérisent l'application et en énumère ses composants. Par défaut,
l'application n'a qu'un composant, l'activité principale.
L’icone de l’app
<application
Le nom de l’app
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" L’icone rond de l’app
Right-To-Left (RTL) layouts android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
Utiliser un style <intent-filter>
<action android:name="android.intent.action.MAIN" />
!
Une activité (page) <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

Activity principale
+ les permissions !21
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet

• Une application installée dans un terminal Android, dispose d’un identifiant


unique (user id), qui isolera l’application des autres
!
• Chaque application s'exécute dans son propre processus, avec sa propre
instance de la machine virtuelle Dalvik
!
• Android propose un modèle à composants applicatifs, offrant plusieurs
points d’entrées dans l’application. On distingue 4 types de composants :
Les traitants
Les fournisseurs de d’événements diffusés
Les services contenu (Content (Broadcast Receiver)
Les activités (Service) Provider)
(Activity) !22
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet Les activités (Activity)

• Composant central de l’interface utilisateur (chaque nouvel écran


présente une activité différente (sauf onglets))

• Le modèle de comportement est celui d’une page Web

• Le système gère la navigation (lancement, touche back,…)

• Le cycle de vie de l’activité est géré par le runtime du système Android

!23
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

La structure du projet Les services (Service)

• Les services sont des composants très proches des activités, mais ne
possèdent pas d'interface graphique : c'est pourquoi on les utilise pour
effectuer des travaux d’arrière-plan (lecture de musique, téléchargement,
etc.).
• Il existe deux types de services :
• Les plus courants sont les services locaux (unbound services),
où l'activité lance le service et le service appartiennent à la
même application.
• Les services distants (bound services) qui peuvent être lancés
par un composant qui appartient à une autre application.

Il est possible que le service soit local et distant à la fois. On peut lancer
un service local et lui permettre d'accepter les connexions distantes.
!24
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application


Les fournisseurs de contenu
La structure du projet
(Content Provider)
• Il peut arriver qu'on ait besoin de partager du contenu entre plusieurs
applications. Un exemple courant est de pouvoir consulter les contacts de
l'utilisateur qui sont enregistrés dans l’application « Carnet d'adresses ».
Ces accès aux données d'une application différente de la nôtre se font à
l'aide des fournisseurs de contenu.

• Un fournisseur de contenu est découpé en deux éléments distincts :


!
• Le fournisseur de contenu, qui sera utilisé dans l'application qui
distribue son contenu aux autres applications.
• Un client, qui permettra a une application de demander au
fournisseur les informations voulues.
https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !25
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application


Les fournisseurs de contenu
La structure du projet
(Content Provider)

• Un fournisseur de contenu présente les données à une application


extérieure dans une ou plusieurs tables. Chaque entrée dans la table est
représentée dans une ligne et chaque colonne représente un attribut.

• Donc avant de faire appel à un fournisseur, il faut savoir par avance la


structure des tables (ses attributs et les valeurs qu'ils peuvent prendre)
pour exploiter correctement ces données. Il n'y a pas moyen d'obtenir ce
genre d'informations, il faut que le développeur du fournisseur vous
communique cette information.

https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !26
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application


Les fournisseurs de contenu
La structure du projet
(Content Provider)
• Il est possible d'accéder aux données d'une autre application avec un objet
client ContentResolver. Cet objet a des méthodes qui appellent d'autres
méthodes, qui ont le même nom, mais qui se trouvent dans un objet
fournisseur, c'est-à-dire l'objet qui met à disposition le contenu pour les
autres applications. Les objets fournisseurs sont de type ContentProvider.

• Aussi, si votre ContentResolver a une méthode qui s'appelle myMethod,


alors le ContentProvider aura aussi une méthode qui s'appelle myMethod,
et quand vous appelez myMethod sur votre ContentResolver, il fera en
sorte d'appeler myMethod sur le ContentProvider.

https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !27
!28
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)

Pour des raisons de sécurité on ne peut pas appeler nous même les méthodes
du fournisseur. Avec ce système, Android est certain qu’on a reçu les
autorisations nécessaires à l'exécution de ces opérations.
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)
• Pour accéder à un fournisseur on doit utiliser un URI

• Par exemple, accéder aux données associées aux contacts enregistrés


dans le téléphone : ContactsContract. Elle possède plusieurs tables :
!
• ContactsContract.Data qui contient des données sur les contacts
(numéros de téléphone, adresses e-mail, etc.),
!
• ContactsContract.RawContacts qui contient les contacts en eux-
mêmes,
!
• et enfin ContactsContract.Contacts qui fait le lien entre ces deux
tables, pour lier un contact à ses données personnelles.

https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !29
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)

• Pour accéder à ContactsContract, on peut utiliser l'URI content://


com.android.contacts/. Si on cherche uniquement à accéder à la table
Contact, on peut utiliser l'URI content://com.android.contacts/contact.

https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !30
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application


Les traitants d’événements
La structure du projet
diffusés (Broadcast Receiver)

• Un broadcast receiver (receiver) est un composant Android qui permet de


s’enregistrer pour des événements système ou d'application. Tous les
destinataires enregistrés pour un événement sont notifiés par le moteur
d'exécution Android une fois que cet événement se produit.

• Par exemple, les applications


peuvent s'inscrire à l'événement
android.provider.Telephony.SMS_RE
CEIVED qui est déclenché une fois
que un SMS reçu.

!31
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application


Les traitants d’événements
La structure du projet
diffusés (Broadcast Receiver)
• Si on déclare un récepteur dans le manifeste, le système lance l’application
(si elle n'est pas déjà en cours d'exécution) lorsque la diffusion est
envoyée.
• Android permet de créer une classe qui implémente BroadcastReceiver
(elle ne possède qu’une seule méthode onReceive()).

• Dans cette méthode, le teste des évènements attendus est réalisé et le


code est attribué.

• É v è n e m e n t s s y s t è m e : AC T I O N _ B O OT _ C O M P L E T E D,
ACTION_POWER_CONNECTED, ACTION_BATTERY_LOW, etc.

!32
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Le test de l’application

• Pour tester une application, il faut un


terminal, qu’il soit physique ou émulé :
!
• Un émulateur Android est un
périphérique virtuel Android qui
représente un périphérique Android
spécifique.
!
• Les émulateurs Android sont
extrêmement lents et ne supportent
pas le même ensemble de
fonctionnalités que les périphériques
réels.
!33
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Le test de l’application
• D’autres émulateurs :
YouWave

BlueStacks Emulator

GenyMotion Emulator

Andy Android Emulator

Jar of Beans

Jelly Bean Android Emulator


!34
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Le test de l’application

• Ou directement sur un terminal physique (smartphone/tablette Android) :

!
• Par défaut on ne peut pas installer
des paquets ne provenant pas du Play
Store. Il faut donc avant tout
autoriser ces installations en rendant
dans la rubrique Sécurité des
paramètres d’Android. En bas de
cette rubrique, il faut cocher la case
Sources inconnues.

!35
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Le test de l’application

• Ou directement sur un terminal physique (smartphone/tablette Android) :

!
• De plus, le terminal étant connecté
en USB, il faut autoriser l'ordinateur
à communiquer avec lui. Pour cela, il
faut cocher la case Débogage USB
dans la rubrique Options pour les
développeurs des paramètres.

!36
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

!37
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Au moment de l’élaboration de la première version d’Android, les langages


disponibles comme Go (développé par Google) et Rust (développé par
Mozilla) n’étaient pas des langages de programmation populaires (Go a été
utilisé dans les versions antérieures d’Android et a connu des limites.)

• Java est reconnu comme langage de programmation le plus populaire au


monde
• Il fonctionne sur une machine virtuelle (donc indépendamment de la
plateforme) et il est facile à sécuriser
• Java était donc le meilleur choix disponible à l’époque (ne
pas partir de zéro).
!38
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• XML est utilisé en Android pour gérer l’affichage des contenus sur l’écran. Il
facilite le développement en permettant de séparer l’affichage des
algorithmes.

• Avec XML, on gagne du temps et on simplifie le code de l’application, ce qui


permet d’éviter des erreurs.

• Android est optimisé pour les appareils mobiles dotés d'une mémoire et
d'une puissance limitées. Il peut donc être étrange qu’il utilise le langage
XML. Après tout, XML, lisible par l'homme, n’est pas connu pour sa brièveté,
n'est-ce pas?
!39
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Le code XML est pré-traiter dans un format binaire compressé. C'est ce


format, non le texte XML original, qui est stocké sur le dispositif.

!40
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Aujourd'hui le Java est un langage de plus en plus critiqué, car des


langages modernes l’ont quelque peu démodé.

• Oracle America, Inc. vs Google, Inc

• Apple a développé de son côté son propre langage : Swift.

• Google a annoncé lors de la keynote de la Google I/O 2017 l’arrivée d’un


nouveau langage de programmation pour les applications Android : Kotlin.
(une véritable révolution pour les développeurs !)
!41
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Kotlin ne nécessite en aucun cas de réécrire l’ensemble des applications. Il


est tout à fait possible de faire cohabiter du code Java et du code Kotlin
(on comprend aisément pourquoi Google a opté pour cette solution qui
offre une transition en douceur)

• Kotlin est également un langage robuste et éprouvé, puisqu’il est disponible


depuis près de cinq années et qu’il est déjà utilisé en production sur des
applications Android.

Flipboard

!42 Agrégateur de réseaux sociaux


Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

!43
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Le plugin Kotlin est embarqué dans Android Studio depuis sa version 3.0.
Sinon pour les versions antérieurs, on peut l’installer.

• On a même la possibilité de traduire automatiquement une activité Java


(.java) en Kotlin (.kt) (dans le projet Android > code > Convert Java File to
Kotlin File

• Quelques fonctionnalités :
• ne plus avoir besoin de mettre des points virgules à la fin de chaque
instruction,

!44
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Quelques fonctionnalités :
• réduire les problèmes des nulls,

Dans Kotlin, le système de types fait la distinction entre les références


pouvant contenir null (références nullables) et celles qui ne le peuvent pas
(références non nulles - doivent être initialisées).

!45
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Quelques fonctionnalités :
• réduire les problèmes des nulls,

Elvis Operator ?:

Ainsi que d’autres opérateurs/solutions pour éviter ce problème.


!46
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Quelques fonctionnalités :
• étendre des classes existantes (dans d’autres classes).

!47
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

• Quelques fonctionnalités :
• étendre des classes existantes, etc.

Les extensions s’avèrent très pratique en Android, nous pouvons par


exemple ajouter une méthode aux TextView, aux Activity, aux Fragments, ou
même aux Strings, par exemple

!48
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

Le coût d’une application mobile

• Pour poster des applications sur le Play Store, il en coûtera la modique


somme de 25$. Ces 25$ permettent de publier autant d'applications, à vie

• Il faut également investir dans un (ou plusieurs) smartphone et un


ordinateur simple (avec n'importe quel système Microsoft Windows, Mac
OS X ou Linux).

• Les outils de développement nécessaires (Android SDK, Android Studio et


JDK/JRE) sont tous gratuits

!49
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

La monétisation de l'application

• Pour gagner de l'argent avec les moyens que met à disposition Google, il
faut tout d'abord créer un compte Google marchand. Pour cela, il faut
cliquer sur le lien «  Ouvrir un compte marchand  » dans la console du
compte développeur Android. Remplir toutes les informations (légalité,
raison sociale, etc.). Il faut ensuite associer un compte bancaire au compte
afin que Google puisse transmettre les paiements.

• Il existe au moins quatre façons pour faire de l'argent en exploitant les


solutions proposées par Google. La première question à poser est : « quelle
solution est la plus adaptée à mon application afin de la rentabiliser ? ».

!50
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

La monétisation de l'application

• Le moyen le plus simple est de faire en sorte que les utilisateurs payent afin
de télécharger l’application sur Google Play. L'un des principaux avantages
des applications payantes est qu'elles permettent de se débarrasser des
publicités qui encombrent l’applications.
!
• Est-ce que les gens seraient prêts à payer pour les fonctionnalités
de l'app ?
• Prix ?

Le marché Android est très compétitif,


Sachez que 30% des revenus donc les développeurs ont tendance à
seront reversés à Google. baisser leurs prix pour retenir leurs
clients.
!51
!52
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing


La monétisation de l'application
• Plusieurs stratégies :
!
• Pour la majorité des applications, on parle de « biens typiques » : la
demande des consommateurs diminue quand le prix augmente.
!
• En revanche, pour certaines autres applications, on parle plutôt de «
biens atypiques » : la demande augmente quand le prix augmente. C'est
le cas des applications pour lesquelles les utilisateurs souhaitent
s'assurer de la qualité, et pour lesquelles ils évaluent la qualité du
produit en fonction de son tarif. C'est un raisonnement très courant,
plus un produit est cher, plus on pense qu'il est de qualité.
• Sinon, envisager deux versions : une gratuite et une payante, la première
servant de fonction d'évaluation. Si l'application plaît à un utilisateur, il
pourrait acheter la version complète pour pouvoir exploiter toutes ses
fonctionnalités.
!53
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing


La monétisation de l'application

• Ajouter de la publicité :
• Une rémunération pour chaque clic
• Créer un compte sur AdMob (une régie qui fait le lien
entre les développeurs et les annonceurs)
• Insérer la bib «  GoogleAdMobAdsSdk  » dans l’app + les
permissions (internet/network) + adView (un ruban qui se
place sur les bords de l'application et qui affiche des
publicités)
Il faut par contre faire attention à l'interface graphique. Il vaut mieux qu'un
utilisateur ne clique jamais sur une publicité plutôt qu'il clique une fois
dessus par mégarde et supprime l'application en laissant une mauvaise
note/commentaire.
!54
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

La monétisation de l'application

• Freemium : abonnement ou vente de produits intégrés

• Cette technique suppose que l'application est gratuite. Il existe deux


types de ventes en freemium :
!
• L'abonnement, où les prélèvements d'argent se font à intervalles
réguliers.
!
• La vente de produits intégrés, où le prélèvement ne se fait qu'une
fois. Elle permet l'achat de contenu virtuel, comme par exemple
l'achat d'armes pour un jeu, de véhicules, ou autres mises à jour
de contenu.

https://openclassrooms.com/courses/creez-des-applications-pour-android/publier-et-rentabiliser-une-application
Utilisent-ils Oui
régulièrement
l’appli?

Est-ce que
l’app change de Oui Peuvent-ils
Non contenu? payer?

Oui
Non Non
Sont-ils prêts à
Non
payer un peu
tous les mois? Sont-ils prêts à
payer pour que
Oui l’app devient
Oui
plus complète?
Non

Application Produits
Abonnement Publicité
payante intégrés
Chapitre II : Le développement d’application mobile :
Android Vs iOS

!
‣ La philosophie et structure
!
‣ Les différences techniques en développement d’application
!
Les langages de programmation
La structure du projet
Le test de l’application
!
‣ Le coût d’application et le mobile marketing
!
Le coût d’une application mobile
La monétisation de l'application

!57
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

• iOS a été développé par Apple en 2007 lorsque le premier iPhone a été
développé.
• La société Apple ne délivre pas de licence du système d'exploitation pour
le matériel tiers

• iOS est le système d'exploitation de seulement 3


machines : l'iPhone, l'iPad et l'iPod Touch.

• Il a été dérivé de macOS dont il


partage les fondations

!58
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

• Ce système d’exploitation n’avait aucun nom officiel au départ. Apple se


contentait de mentionner que « l’iPhone tourne sous OS X »

• iOS :
• i : Ce préfixe a été introduit en 1998 pour le lancement de l'iMac
(ordinateur qui a relancé Apple alors au bord de la faillite). La lettre
a été principalement choisie à cause de la première lettre du mot
Internet.
• OS : Operating System

!59
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

• Utilise une architecture en couches : Ensemble de Frameworks


structurant la programmation des applications

Ser vices et
technologies
sophistiqués

Ser vices et
technologies
fondamentales

!60
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

Core OS

• Caractéristiques bas niveau pour construire les technologies iOS

• System (Kernel) et drivers

• External Accessory : support pour communiquer avec les


accessoires matériels attachés à un appareil iOS

• Core Bluetooth : interaction avec les accessoires bluetooth basse


énergie (consommation d'énergie 10 fois moindre que Bluetooth)

!61
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Core Services
• C'est la couche qui donne l’accès aux ressources fondamentales
nécessaires pour les applications
• Fonctionnalités systèmes :
!
• Local Authentication : permet l'authentification des utilisateurs à
l'aide de mots de passe ou de données biométriques.
!
• Protection de données : cryptage (terriblement efficace)
!
• In-App Purchase (gestion des achats intégrés)…

!62
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Core Services
• Frameworks :
!
• Core Foundation : permet d'accéder aux services du système
d'exploitation pour définir la couche de base des fonctionnalités
des applications.
• Accounts : sauvegarde les informations d'identification d'un
compte particulier, tel que Twitter par exemple. Les applications
utilisant ce framework peuvent utiliser ces données sans les
sauvegarder.
• Address Book : sauvegarder et/ou utiliser les contacts de l’utilisateur.

!63
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Media Layer

• Contient les technologies graphiques, audio et vidéo pour implémenter les


expériences multimédia (toute une couche pour ça !)

• Les frameworks graphiques permettent aux développeurs de créer des


applications qui fournissent des animations et une lisibilité des images.

• Le framework audio permet la lecture, l'enregistrement et l'intégration de


l'audio dans les applications développées.

!64
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Cocoa Touch

• C’est la couche responsable de l’interface utilisateur (widgets, interactions,


etc.)
• Les caractéristiques clés :
• UIKit : présente les bibliothèques de création et gestion des
interfaces graphiques (les interfaces appelés Cocoa Touch)

!65
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Cocoa Touch
• Les caractéristiques clés :
!
• GameKit : des fonctionnalités pour créer de super jeux
(communication entre devices, interaction vocale, ajouter des amis,
etc.)
• EventKit : permet de créer, afficher et modifier des événements de
calendrier et de rappel

!66
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Cocoa Touch
• Les caractéristiques clés :
• Handoff (continuité) : permet aux utilisateurs de démarrer une
activité sur un appareil et de reprendre de manière transparente
l'activité sur un autre appareil (extension de la UX entre les
appareils)
!
• AirDrop: permet de partager les photos, vidéos, documents avec
d'autres appareils Apple à proximité.

!67
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

!68
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure

Mars Juillet Juin Juin Oct Sept Sept Sept Sept Sept Sept
2008 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017

Sept 2018
Semblable à iOS 11 ergonomiquement, mais contient de nombreuses
améliorations sur les performances et l’économie de la batterie. Elle contient
aussi des fonctionnalités d’hygiène numérique (bonnes pratiques de sécurité)
et de contrôle parental.
!69
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

!70
Le développement d’application mobile : Android Vs iOS

‣ La philosophie et structure

L'iPhone Xs, l'iPhone Xs Max et l’iPhone XR (septembre 2018)

!71
!72

Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

Date de première version : 1983


Paradigme : orienté objet
Licence : Libre
Extension : C et Smalltalk

Date de première version : 2014 (Open Source à partir de 2015)


Paradigme : Orienté objet, Procédural
Licence : Apache-2.0
Développeur : Apple

Les deux langages coexistent (on peut trouver les deux dans une seule app)
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

Pourquoi ?

1. C'est un langage fortement orienté objet. Le type de fonctionnalité


contenu dans les frameworks Cocoa ne peut être fourni que via des
techniques orientées objet.

2. Parce que Objective-C intègre C, donc on peut bénéficier de tous les


avantages du C.

3. Objective-C est un langage fondamentalement simple.

!73
!74

Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation


• L'Objective-C utilise un système de messages : tout appel de méthode
d'une classe est un passage de message. Pour envoyer un message sur un
objet, on place entre crochet l'objet puis le message.

Tout message peut être envoyé à n'importe quel objet. C’est à l’objet de gérer
le message ou non. S'il ne le gère pas, il ne fera que renvoyer nuls à
l’expéditeur (alors que dans le cas d’appel, si une méthode n’exige pas, il y aura
une erreur de compilation/exécution).
!75

Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation


Pourquoi ?
• Un langage rapide (3,5x plus rapide que l’Objective-C selon Apple) et
moderne pour les apps iOS
• Plus concis. Sa syntaxe est beaucoup plus claire. Par exemple, besoin de
stocker le chiffre favori de trois personnes :
• Avec Swift, il suffit d'une ligne:
var favoriteNumbers = ["Jane": 7, "Bob": 21, "Sarah": 99]
• Avec Objective-C, il en faut quatre :
NSDictionary *favoriteNumbers = [NSDictionary
dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:
7], @"Jane", [NSNumber numberWithInteger:21], @"Bob",
[NSNumber numberWithInteger:99], @"Sarah", nil]];
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation

Pourquoi ?

• Un portage vers Android plus compliqué ! Porter une app d'iOS vers
Android, et vice-versa, est relativement simple grâce à des traducteurs
entre Objective-C et Java. En s'éloignant du C avec Swift, Apple pourrait
bien s'assurer la fidélité exclusives des développeurs iOS, ce qui ne plaît pas
à tout le monde.

«Un langage de programmation ne devrait pas être conçu pour une


plateforme particulière», regrette l'ingénieur et écrivain David
Auerbach.

!76
Le développement d’application mobile : Android Vs iOS

‣ Les différences techniques en développement d’application

Les langages de programmation


Pourquoi ?

• Objective-C garde une bonne partie des problèmes du langage C. C’est en


particulier le cas des pointeurs. Plus la taille d’une application augmente,
plus leur nombre croît en proportion. Lorsqu’une erreur survient avec un
pointeur, il y a essentiellement deux conséquences : un crash de
l’application ou l’ouverture d’une faille de sécurité.

• Swift restreint ainsi l’accès aux pointeurs mémoires, éliminant de


nombreux risques d’erreurs et de failles de sécurité.

!77
!78

Le développement d’application mobile : Android Vs iOS


‣ Les différences techniques en développement d’application
Les langages de programmation
Nouveautés :

• Les « extensions » dans Swift permettent d’ajouter des fonctionnalités


(sous forme de méthodes) à des Classes, Structures …. On peut rajouter
des fonctionnalités pour des types primitifs.
!79

Le développement d’application mobile : Android Vs iOS


‣ Les différences techniques en développement d’application
Les langages de programmation
Nouveautés :
• Les enumerations sont très puissantes sous Swift. Elles peuvent prendre
plusieurs valeurs suivant ce qu'on a spécifié dans les champs de
l'énumération. On peut les réutiliser et même y ajouter des méthodes
applicables sur ceux-ci.
!80

Le développement d’application mobile : Android Vs iOS


‣ Les différences techniques en développement d’application
La structure du projet
La structure d’un projet iOS repose sur le modèle MVC (modèle vue
contrôleur) :
• Le fichier Main.storyboard
(un fichier écrit en XML) représente
les vues de l’application
• LaunchScreen pour l’écran de
démarrage d’une application (splash
screen - obligatoire)
• ViewController.swift le contrôle
de l’application (manipulation des
widgets)
• Le fichier AppDelegate.swift (AppDelegate.h et .m pour Objective-C)
représente le délégué de la fenêtre principale de l’application ainsi que le
délégué de l'application elle même.
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

La structure du projet

Le but de AppDelegate est d'implémenter les méthodes de


UIApplicationDelegate, pour dire à l’application comment répondre à des
évènements comme : 
• applicationDidFinishLaunching : ce qu’il faut faire une fois l’application a fini
le lancement
• applicationWillTerminate : appelé lorsque l'application est sur le point de se
terminer. Sauvegardez les données si nécessaire.

• applicationDidBecomeActive : redémarrez toutes les tâches qui ont été


suspendues (ou pas encore démarrées) pendant que l'application était
inactive. Si l'application était précédemment en arrière-plan, actualisez
éventuellement l'interface utilisateur.
• etc.
!81
!82

Le développement d’application mobile : Android Vs iOS


Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

La structure du projet

• Storyboard apporte une meilleure lisibilité


de la vision d’ensemble de l’application
(pour designer, développeur, utilisateur)

• Gérer facilement la navigation entre les


pages (ctrl+clic et glissé d’une vue à une
autre, et une petite fenêtre propose
différents modes de navigation) (un Segue
(ou enchaînement))

• Permet de créer les vues et les éléments avec un


simple système de Drag&Drop d’éléments, et fournit
un ensemble de paramètres pour un peu customiser
la vue
!83
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

La structure du projet

• S’il y a une complexité, le Storyboard


ne peut pas la cacher !

• On ne peut pas personnaliser


comme souhaité des boutons, labels,
ou autres éléments graphiques, pour
lesquels il faudra souvent passer par
le code.

!84
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

Concepts de Base pour Conception IHM iOS

• Utiliser des éléments translucides (laisser deviner le contenu derrière)

• Assurer la lisibilité en utilisant les


polices système (polices iOS ajustent
leur espacement au conteneur)

• Utiliser les boutons sans bordure


(pas homogène !)

!85
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

Concepts de Base pour Conception IHM iOS

• Utiliser les animations pour les transitions


• Laisser beaucoup d’espace négatif (espace autours et entre les éléments
d’une image). Cela permet de rendre le contenu plus perceptible et
compréhensible.

!86
!87
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application

Le test de l’application

Testée sur le simulateur


de l’iPhone
!88
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Le test de l’application
Testée sur le simulateur de l’iPhone
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Le test de l’application
Testée sur l’iPhone

• En outre, tester les apps iOS sur un appareil est le meilleur moyen
d'évaluer les problèmes de performance avant qu'il ne soit trop tard.

• Apple prend soin de pouvoir identifier qui a créé l'app (garder la


sécurité)

• Ces mesures de sécurité sont assurées par un processus appelé signature


de code. Lorsque on va créer un paquetage d'app (binaire) à installer sur un
appareil, il faut y mettre la « signature numérique » par la signature de code.
Sinon, Apple ne permettra pas que cette application mobile soit déployée
sur un appareil quelconque.
!89
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Le test de l’application
Testée sur l’iPhone

• Exigences :
!
• inscription dans le programme pour développeurs iOS d'Apple, pour
99 $ par an (avant 2015)
• un appareil iOS réel.

• Cependant, avec Xcode 7 (sortie le 08/06/2015), Apple a donné la possibilité


de déployer une app gratuitement sur son iPhone (avec un simple Apple ID
et un enregistrement simple (sans payer) sur le portail développeur)

!90
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

Le coût d’une application mobile

• Acheter un Mac (chez Apple on fait du Apple) !

• Télécharger Xcode + SDK d’iOS

• Acheter une licence développeur (99 € par an) (our pouvoir publier des
applications sur l’AppStore)

• Acheter un appareil iOS réel

!91
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

Le coût d’une application mobile

• Pour publier il faut attendre des jours et des jours (environ 3-4
semaines) (beaucoup de restrictions)

• Une fois une année on ne paye pas l’abonnement toutes les anciennes
applications seront supprimées :)

!92
Le développement d’application mobile : Android Vs iOS

‣ Le coût d’application et le mobile marketing

La monétisation de l'application

• Même chose que chez Google

• On gagne 70% des revenues

• Pour les applications iOS, le prix d’une app peut être choisi parmi des
tranches entre 0,79 € et 799,99 €

• Les utilisateurs sur iOS ont dépensé 38,5 milliards de dollars pour acheter
des applications et faire des achats in-app (en 2017)

• Ce sont les jeux qui représentent 82% des revenus

!93
Comparaison
Le développement d’application mobile : Android Vs iOS

Architecture

!95
Le développement d’application mobile : Android Vs iOS

Principaux composants

• Activity -> ViewController


!
• Intents -> Segues
!
• Service -> “Background Mode”
!
• Content Provider -> CoreData
!
• Layouts -> Storyboards

!96
Le développement d’application mobile : Android Vs iOS

Swift VS Kotlin

Coercition

Tableaux

!97
Le développement d’application mobile : Android Vs iOS

Swift VS Kotlin

Classes

http://nilhcem.com/swift-is-like-kotlin/ !98
Le développement d’application mobile : Android Vs iOS

Tests

• Le simulateur iOS et l’émulateur Android sont souvent utilisés pour


effectuer les tests.

• La différence importante est la rapidité supérieur du simulateur iOS par


rapport à son homologue Android.
!
• L’émulateur Android a par contre l’avantage d’être une machine
virtuelle efficace donc plus réaliste que son équivalent iOS.
!
• D’ailleurs, les simulateurs iOS ne transmettent souvent pas les
représentations précises et réalistes des appareils Apple

!99
Le développement d’application mobile : Android Vs iOS

IHM

• En IHM, l’iOS est beaucoup mieux


préparé qu’Android.
!
• Apple, mettant un accent
particulier sur l’ergonomie
et l’expérience utilisateur
(proposer des animations
s o u p l e s , c o m p l e xe s e t
puissantes).

!100
Le développement d’application mobile : Android Vs iOS

Le bouton « Retour »

• Le bouton de retour se trouve chez Android et pas chez iOS. C’est un


petit détail qui, pourtant, conditionne le développement d’application.

• Ce bouton sert à la navigation dans l’environnement Android. En l’absence de


ce bouton, le développeur de l’application iOS doit trouver un autre moyen
d’indiquer sur l’écran comment revenir en arrière ou s’il existe une autre
manière d’effectuer cette action en utilisant un autre flux d’interaction.

!101
Le développement d’application mobile : Android Vs iOS

Le coût

• Le processus de développement sur iOS coûte plus cher, simplement parce


qu‘il y a moins de demande chez iOS que chez Android.
!
• Ajoutons à cela que les exigences attendues sur un produit iOS sont aussi
beaucoup plus élevées.

!102
Le développement d’application mobile : Android Vs iOS

La monétisation

• En ce centrant sur la source de revenus, les apps iOS ont plutôt tendance à
faire payer les utilisateurs pour les téléchargements et les services payant
incorporés, tandis que les apps Android sont habituellement gratuites et
deviennent rentables par le biais des publicités.

Sous iOS, le prix d’une app peut être choisi


parmi des tranches entre 0,79 € et 799,99 € Côté Android le prix peut
varier entre 0,5 € et 100 €
(au moyenne)
!103
!104
Le développement d’application mobile : Android Vs iOS

Google Play Store vs.


Apple App Store

• 2,8 millions d’applications sont disponibles sur le Google Play Store et 2,2
millions d’applications sur l’App Store d’Apple (mars 2017)
Le développement d’application mobile : Android Vs iOS

Google Play Store vs.


Apple App Store

• Contrairement au Google Play Store, toutes les applications seront vérifiées


par Apple sans exception. L’application doit répondre à des exigences et des
directives spécifiques à Apple. Par conséquent, les applications ne peuvent
pas inclure de contenu inapproprié ou abusif.

!105
Le développement d’application mobile : Android Vs iOS

Confidentialité

• Cette asymétrie dans la philosophie de validation des applications ne


garantit pas pour autant une meilleure sécurité aux utilisateurs d’iPhone.

• Dans «App Reputation Report 2013», les 10 applications gratuites iOS et


Android les plus populaires dans les catégories Business, Finances,
Education, Divertissement et Jeux ont été étudiées :

• Aucune des 50 App iPhone n’a satisfait la protection des données. La


situation est à peine moins catastrophique chez Google, où seules 4
applications ont jugé bon de crypter les informations personnelles
transmises aux développeurs.

https://www.appthority.com/resources/ (2013) (entreprise de sécurité informatique) !106


Le développement d’application mobile : Android Vs iOS

Confidentialité

• 60% des applis iOS testées exploitent la géolocalisation de


l’utilisateur, alors qu’elles ne sont que 40% sur Android.

• Sur iPhone, 54% récupèrent les données du carnet d’adresses, alors


que cette proportion n’est que de 20% chez la concurrence.

Ces résultats permettent néanmoins de mettre en lumière l’attitude


problématique des développeurs d’applications en matière de
protection des données. Leur principale motivation est de pouvoir
mieux cibler les publicités diffusées via leurs applications.

https://www.bitdefender.fr/ (2013) !107


Le développement d’application mobile : Android Vs iOS

!108

Vous aimerez peut-être aussi