Description Le donneur d`ordres recherche un prestataire pour la

Transcription

Description Le donneur d`ordres recherche un prestataire pour la
1
licence MIM appli tel mobil
Jquerymobil+phonegap
Introduction
phonegap (d'Adobe) est une plate-formes de développement d'applications pour smartphone
basé sur le language html/CSS avec une API spécifique permettant l'accès à une bonne
partie des fonctionnalités des smartphones. Il est aussi possible de le couplé en amont avec
jquerymobile pour préparer la structure de l'application et de rajouter ensuite les appels à
l'API de phonegap (en fait basé sur l'API cordova) . Le gros intérêt de phonegap est le fait
qu'il soit basé sur du html et permette une compilation pour générer la meme application sur
la plupart des OS de smartphone. Cette solution permet un développement très rapide (multi
OS) mais ne permet pas toute la souplesse d'un développement dans le SDK d'origine de
chaque OS. Mais cela peut suffire dans bien des cas. De plus il existe des outils de
developpement pratique : « phoneGap desktop » et « phoneGap developper »
préparation de l'application
préparer l'application à partir des outils jquerymobil :
réaliser les « 4 pages » : accueil, infos, situation, photo. (tous dans le meme fichier
index.html pour en faire une appli mobile )
Pour l'instant, réaliser les 4 pages en statiques.
commencer par la page d'accueil (attention, elle devra s’appeler forcément « index.html »
pour que la compilation se passe bien dans phonegap), prévoir aussi le fichier de
configuration config.xml (à mettre dans le dossier où est situé le fichier index.html)
extrait du fichier config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.phonegap.example2"
versionCode = "10"
version = "1.0.0" >
<!-- versionCode is optional and Android only -->
<name>MMI</name>
<description>
An example V2for phonegap build docs.
</description>
<author href="https://build.phonegap.com" email="[email protected]">
Hardeep Shoker
</author>
… // ici les directives pour la compilation...
<gap:platform name="android" />
<preference name="phonegap-version" value="cli-5.2.0" />
</widget>
fichier complet config.xml ou voir le source complet en annexe (à mettre dans le
dossier www avant de le zipper et de le compiler)
SRC Troyes
2
licence MIM appli tel mobil
pour vous aider vous pouvez utiliser l'outil jqmdesigner sur le site de
http://jqmdesigner.appspot.com/designer.html
exemple de fichier index.html de base :
<html>
<head>
<title>Device Properties Example</title>
<link rel="stylesheet" href="jquery.mobile.min.css" />
<script src="jquery.min.js"></script>
<script src="jquery.mobile.min.js"></script>
<script type="text/javascript" src="cordova.js"></script>
</head>
<body>
<div data-role="page" data-control-title="Home" id="page1">
<div data-theme="a" data-role="header">
… ici du code html jquery.mobil pour la mise en page des 4 pages...
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
// ici le code js quand l'application demarre
}
</script>
</body>
</html>
SRC Troyes
3
licence MIM appli tel mobil
choisir par exemple la transistion « flip » ou « slide » pour le changement de page.
dossier mon_appli :
vous remarquerez que le fichier index.html fait appel à cordova.js mais que ce fichier n'a pas
besoin d'etre present, il sera inclut lors de la compilation. Attention, pour le tester en local
avec chrome, pour des raisons de sécurité et de droit, vous devrez passer par un serveur
local type WAMP ou MAMP.
solution 1 : compilation via phonegap en ligne
Vous pourrez tester cette solution pour la découvrir
(mais nous opterons ensuite pour la deuxieme solution plus élégante et plus rapide avec test directement sur le téléphone)
pour cette solution1, vous pouvez compiler directement depuis le site http://phonegap.com/
aller dans la rubrique développement en ligne ( https://build.phonegap.com/ ).
ouvrir un compte (via adobe ou github)
ajouter une nouvelle application (en mode gratuit vous ne pouvez générer qu'une appli à la
fois) ou modifiez le source de l'appli en cours
vous devez alors mettre l'ensemble de vos pages réalisées avec jquerymobile dans un
fichiez zip avant de le télécharger sur phonegap. (ne zipper pas le dossier de votre projet
mais zippez l'ensemble des fichiers (index.html, config.xml, img, css, ...)
SRC Troyes
4
licence MIM appli tel mobil
Validez la compilation
télécharger le fichier akp de votre application (vous pouvez aussi récupérer les appli pour les
autres plate-formes) (attention si vous souhaitez mettre votre appli sur le « market » vous
devez générer un trousseau de clé.( https://build.phonegap.com/docs/android-signing )
testez votre application sur un smartphone android (ou utilisez un émulateur android comme
« bluestack » ou « jar of beans » ou « genymotion » ou celui du SDK d'android )
solution 2 : utiliser l'application « phonegap desktop »
il existe phonegap en ligne de commande (très complet, à voir plus tard, nécessiste
d'installer tout phonegap). Mais une version applicative vient de voir le jour (« phonegap
desktop ») , c'est cette appli que nous allons utiliser ici. Elle permet de dialoguer
directement avec un vrai téléphone (équipé de l'application « phonegap developer »)
pour tester l'application réalisée. (la version en ligne de commande permet aussi ce
fonctionnement via la commande « phonegap serve » tapé dans le répertoire du projet)
SRC Troyes
5
licence MIM appli tel mobil
ici l'appli crée automatiquement le dossier et les sous répertoires nécessaires (comme le ferais la
commande en ligne « phonegap create monappli2 » (ou idem avec cordora à la place de phonegap )
par contre dans le dossier plateform il n'y a rien car il faut les SDK pour les construires (avec la
commande « phonegap build android ») . le dossier est alors rempli de tous les outils nécessaires
avec un répertoire www dans lequel est créé le fichier index.html de base avec un js/index.js . Le
fichier config.xml est aussi généré mais attention ici il est situé au dessus du répertoire www (et non
plus à côté de index.html)
Création du projet :
installation de l'appli « phoneGap developer » sur le téléphone : (existe sous android et iphone)
cette appli permet de se connecter (via wifi attention à etre bien configuré et sur le meme réseau, ou
via l'USB ou le bluetooth) au serveur phonegap lancer sur votre ordi et de faire tourner l'appli en cours
de dev via le mini serveur phonegap
attention pour avoir une version compilé (en webview tout de meme) (ex : un APK) il faudra aller plus loin en installant le SDK
android (ou ios) et en générant l'appli APK avec la commande « phonegap build android » à lancer en étant dans le répertoire
du projet (/User/fab/phonegap/monappli2) et cela uniquement si phonegap trouve le SDK d'android. (fonctionne très bien mais
des soucis sous genymotion pour faire marché l'APK avec l'API phonegap)
SRC Troyes
6
licence MIM appli tel mobil
lancement de l'appli phonegap sur le telephone, et saisie de l'IP et du port 3000 pour récupérer l'appli
à tester
visualisation de l'appli (ici géolocalisation avec récupération des position GSP)
appli interfacée avec des données sur serveur distant
phonegap compile des pages html avec interpretation de la librairie jquerymobile, par contre
il n'y aurait pas de sens à compiler des pages php. Ces pages php restant du domaine du
traitement sur le serveur. Phonegap utilisera la technique ajax proposée dans jquerymobile
pour récupérer des données provenant d'un serveur distant.
Il est donc nécessaire d'utiliser le chargement par exemple via $(...).load(...) ou $.ajax(....)
SRC Troyes
7
licence MIM appli tel mobil
ici on utilise la methode load, cela nécessite au script php de formater la mise en forme des
manifestations. Il faut aussi que les liens images dans le fichier fichier.php soient en
adressage absolue car c'est l'application du telephone qui lancera leur chargement.
Pour etre plus formel il serait plus propre de renvoyer un fichier xml ou JSON et de le traiter
avec un appel $.ajax(...)
génération de l'APK pour android
vous pouvez générer l'application APK soit en ligne de commande (si vous avez installé
phonegap en ligne de commande) soit via le site de phonegap (phonegap Builder), attention
dans ce cas il faudra zipper tous le contenu du dossier www (et pas le dossier lui meme ! )
en aillant inclus le fichier config.xml proposé en début de ce document.
SRC Troyes
8
licence MIM appli tel mobil
les possibilités de l'API de phoneGAP
http://docs.phonegap.com/en/2.5.0/index.html
https://cordova.apache.org/docs/fr/3.1.0/
Exercice1 d'application
pour l'instant nous n'avons pas utilisé du tout l'API de phonegap, nous allons commencer par
utiliser l'API avec des choses basiques comme faire vibrer le telephone, le faire beeper ,
accèder au GPS, accéder au répertoire de contact, stocker des données en local sur le
téléphone ...
•
•
•
1) en utilisant l'API de phonegap proposer une appli affichant les coordonnées GPS
(raffraichie toute les secondes)
2) en utilisant l'API de phonegap proposer une appli affichant une boussole (sous
forme graphique)
3) en utilisant l'API de phonegap proposer une appli affichant la liste des contacts
ayant le prénom saisie dans une zone de saisie
(ces 3 fonctionnalités pourront être développées dans la meme application mais dans des
onglets différents)
Exercice d'application : utilisation de l'API de google map
•
•
•
faire une application sur le téléphone de tracking en sauvegardant toute les 30s les
positions GPS sur un serveur (la 55) dans une base de données (table gps(id, longi,
lati, heure) )
pour afficher l'ensemble des points sauvegardés dans la question précédente,
réaliser une page web sur la 55 avec une map googlemap et positionner tous les
points sauvegardés avec la question précédente.
SRC Troyes
9
licence MIM appli tel mobil
Fichier de base pour l'utilisation de l'API de google :
<!DOCTYPE html>
<html>
<head>
<title>MMI</title>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js"></script>
<script type="text/javascript">
function initialiser() {
var latlng = new google.maps.LatLng(48, 4);
var options = {
center: latlng,
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var carte = new google.maps.Map(document.getElementById("macarte"), options);
var marqueur = new google.maps.Marker({
position: new google.maps.LatLng(48.023, 4.01
map: carte
});
}
</script>
</head>
<body onload="initialiser()">
<div id="macarte" style="width:600px; height:600px"></div>
</body>
</html>
SRC Troyes
10
licence MIM appli tel mobil
Projet de fin de module (8h en salle) et évaluation du module :
vous devez réaliser une application mobile qui utilisera l'api du mobile :
ex,
mini jeu de rapidité utilisant l’accéléromètre
mini jeu utilisant le GPS
mini jeu utilisant la boussole
jeu de mémoire sur les noms des contacts …
…
le jeu devra posséder un site web (onepage) de présentation du jeu (regle du jeu, pub
animation,.. lien pour charger la version android, voir iphone. Nom des développeurs...).
Le jeu (simple) doit permettre de s'incrire sur le site et de sauvegarder son score
directement sur le site losque l'on joue.
Sur le site, doit apparaître la liste des joueurs inscrit et leur score (par ordre decroissant).
L'evaluation tiendra compte du design de l'appli ainsi que celui du site.
l'application sera développer par groupe de 2 ou 3 maxi :
1) dev du site et du back pour les sauvegardes des scores
2) dev de l'appli sur le mobile
3) designer de l'appli
vous devrez rendre l'application sous forme d'un projet phonegap zippé utilisable avec
« phonegap Desktop », vous l'enverrez à l'adresse [email protected] avant le
26 mai 2016, 18h00. Vous devez dans ce mail envoyer l'adresse web du site du jeu.
SRC Troyes
11
licence MIM appli tel mobil
Annexe
•
fichier config.xml (exemple)
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.phonegap.helloworld" version="1.0.0" xmlns="http://www.w3.org/ns/widgets"
xmlns:gap="http://phonegap.com/ns/1.0">
<name>Hello World</name>
<description>
Hello World sample application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://phonegap.com">
PhoneGap Team
</author>
<content src="index.html" />
<preference name="permissions" value="none" />
<preference name="orientation" value="default" />
<preference name="target-device" value="universal" />
<preference name="fullscreen" value="true" />
<preference name="webviewbounce" value="true" />
<preference name="prerendered-icon" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="ios-statusbarstyle" value="black-opaque" />
<preference name="detect-data-types" value="true" />
<preference name="exit-on-suspend" value="false" />
<preference name="show-splash-screen-spinner" value="true" />
<preference name="auto-hide-splash-screen" value="true" />
<preference name="disable-cursor" value="false" />
<preference name="android-minSdkVersion" value="14" />
<preference name="android-installLocation" value="auto" />
<gap:plugin name="org.apache.cordova.battery-status" />
<gap:plugin name="org.apache.cordova.camera" />
<gap:plugin name="org.apache.cordova.media-capture" />
<gap:plugin name="org.apache.cordova.console" />
<gap:plugin name="org.apache.cordova.contacts" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.device-motion" />
<gap:plugin name="org.apache.cordova.device-orientation" />
<gap:plugin name="org.apache.cordova.dialogs" />
<gap:plugin name="org.apache.cordova.file" />
<gap:plugin name="org.apache.cordova.file-transfer" />
<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="org.apache.cordova.globalization" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
<gap:plugin name="org.apache.cordova.media" />
<gap:plugin name="org.apache.cordova.network-information" />
<gap:plugin name="org.apache.cordova.splashscreen" />
<gap:plugin name="org.apache.cordova.vibration" />
<icon src="icon.png" />
<icon gap:platform="android" gap:qualifier="ldpi" src="www/res/icon/android/icon-36-ldpi.png" />
<icon gap:platform="android" gap:qualifier="mdpi" src="www/res/icon/android/icon-48-mdpi.png" />
<icon gap:platform="android" gap:qualifier="hdpi" src="www/res/icon/android/icon-72-hdpi.png" />
<icon gap:platform="android" gap:qualifier="xhdpi" src="www/res/icon/android/icon-96-xhdpi.png" />
<icon gap:platform="blackberry" src="www/res/icon/blackberry/icon-80.png" />
<icon gap:platform="blackberry" gap:state="hover" src="www/res/icon/blackberry/icon-80.png" />
<icon gap:platform="ios" height="57" src="www/res/icon/ios/icon-57.png" width="57" />
<icon gap:platform="ios" height="72" src="www/res/icon/ios/icon-72.png" width="72" />
<icon gap:platform="ios" height="114" src="www/res/icon/ios/icon-57-2x.png" width="114" />
<icon gap:platform="ios" height="144" src="www/res/icon/ios/icon-72-2x.png" width="144" />
<icon gap:platform="webos" src="www/res/icon/webos/icon-64.png" />
<icon gap:platform="winphone" src="www/res/icon/windows-phone/icon-48.png" />
<icon gap:platform="winphone" gap:role="background" src="www/res/icon/windows-phone/icon-173-tile.png" />
<gap:splash gap:platform="android" gap:qualifier="port-ldpi" src="www/res/screen/android/screen-ldpi-portrait.png" />
<gap:splash gap:platform="android" gap:qualifier="port-mdpi" src="www/res/screen/android/screen-mdpi-portrait.png" />
<gap:splash gap:platform="android" gap:qualifier="port-hdpi" src="www/res/screen/android/screen-hdpi-portrait.png" />
<gap:splash gap:platform="android" gap:qualifier="port-xhdpi" src="www/res/screen/android/screen-xhdpi-portrait.png" />
<gap:splash gap:platform="blackberry" src="www/res/screen/blackberry/screen-225.png" />
<gap:splash gap:platform="ios" height="480" src="www/res/screen/ios/screen-iphone-portrait.png" width="320" />
<gap:splash gap:platform="ios" height="960" src="www/res/screen/ios/screen-iphone-portrait-2x.png" width="640" />
<gap:splash gap:platform="ios" height="1136" src="www/res/screen/ios/screen-iphone-portrait-568h-2x.png" width="640" />
SRC Troyes
12
licence MIM appli tel mobil
<gap:splash gap:platform="ios" height="1024" src="www/res/screen/ios/screen-ipad-portrait.png" width="768" />
<gap:splash gap:platform="ios" height="768" src="www/res/screen/ios/screen-ipad-landscape.png" width="1024" />
<gap:splash gap:platform="winphone" src="www/res/screen/windows-phone/screen-portrait.jpg" />
<access origin="*" />
<plugin name="cordova-plugin-whitelist" version="1" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<engine name="android" spec="~4.1.1" />
</widget>
SRC Troyes

Documents pareils