Android et le Cloud Computing



Documents pareils
Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Warren PAULUS. Android SDK et Android x86

Projet Android (LI260) Cours 2

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

OpenPaaS Le réseau social d'entreprise

RMI le langage Java XII-1 JMF

TP SIN Programmation sur androïde Support : eclipse

Votre premier projet Android

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

WEB page builder and server for SCADA applications usable from a WEB navigator

[Serveur de déploiement FOG]

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.3

2) Téléchargement de l'application pour contrôler vos caméras :

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Storebox User Guide. Swisscom (Suisse) SA

inviu routes Installation et création d'un ENAiKOON ID

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Couche application. La couche application est la plus élevée du modèle de référence.

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

SECURIDAY 2013 Cyber War

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Tango go.box - Aide. Table des matières

Guide d'intégration à ConnectWise

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Prise en main rapide

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

TP au menu «UI ANDROID»

Once the installation is complete, you can delete the temporary Zip files..

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Eclipse atelier Java

Les fondamentaux du développement d applications Java

Les différentes méthodes pour se connecter

VTP. LAN Switching and Wireless Chapitre 4

Instructions Mozilla Thunderbird Page 1

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Messagerie asynchrone et Services Web

LES ACCES ODBC AVEC LE SYSTEME SAS

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

progecad NLM Guide de l'utilisateur

Android 4 Les fondamentaux du développement d'applications Java

CENTRALE TELESURVEILLANCE VIA INTERNET WEB

Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

ACTIVITÉ DE PROGRAMMATION

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Serveur d'application à la juste taille

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Androïd Manuel d installation MB PRO LIGHT Préalable. Définitions

How to Login to Career Page

I>~I.J 4j1.bJ1UlJ ~..;W:i 1U

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

Chapitre 3 Configuration et maintenance

Alfstore workflow framework Spécification technique

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

CommandCenter Secure Gateway

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

- Visioconférence - Utiliser NetMeeting au quotidien. Richard BONMARIN DSO/DSI/EMC-EBZ

Transport Layer Security (TLS) Guide de mise en œuvre. Version: 1.0

Bluetooth pour Windows

Installation et configuration de Windows Deployment Service (v3.1)

Authentification et contrôle d'accès dans les applications web

Projet de Veille Technologique

Tutoriel compte-rendu Mission 1

Sauvegarde Android

Mobyt Intégration par Webservice TABLE DES MATIERES

4. SERVICES WEB REST 46

Comment configurer IPhone App Zoiper,pour se connecter au serveur VOIP de Kavkom?

1.3 Gestion d'une application

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

SOMMAIRE

Business Sharepoint Contenu

Depuis votre ordinateur de bureau

Développement logiciel pour le Cloud (TLC)

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Annexe Android Studio

SP-1101W/SP-2101W Quick Installation Guide

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Sommaire 1 CONFIGURER SA MESSAGERIE 2 2 CONSULTER VOS MAILS SUR INTERNET (WEBMAIL) 7 3 PROBLEMES POSSIBLES 8

Vanilla : Virtual Box

TD/TP 1 Introduction au SDK d Android

Contents Windows

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Transcription:

Android et le Cloud Computing 1

Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un serveur GCM (émetteur GCM) 2

Cloud computing : rappels Android est (aussi) un environnement d'execution Un logiciel Android = une application Android Une application Android est constituée de composants => Ces composants sont pris en charge par l'environnement d'exécution Les applications Android sont souvent informées par réception de messages (envoyés par l'environnement d'exécution) : les Intent Une application Android est décrite par son AndroidManifest.xml 3

Cloud computing : rappels "Cloud computing is internet-based computing in which large groups of remote servers are networked to allow sharing of data-processing tasks, centralized data storage, and online access to computer services or resources" C'est clair, non? source : http://en.wikipedia.org/wiki/cloud_computing 4

Google Cloud Messaging (GCM) Permet d'échanger des messages entre des servers applicatifs et des et des smartphones en utilisant le cloud Google L'ancienne version (avant le 26 juin 2012) était C2DM (Cloud to Device Messaging) De plus le mode est asynchrone (cf. le mail) : le smartphone n'a pas besoin d'être allumé pour recevoir des messages. Il les recevra lors de son prochain démarrage Nécessite Android 2.2 au moins GCM est la partie intermédiaire (middleware?) entre un (des) smartphone(s) et un serveur ~ architecture JMS (Java Messaging Service) est gratuit et sans quota 5

~ Architecture JMS Design pattern "publish-subscribe" Asynchrone : pas besoin d'être à l'écoute pour recevoir (plus tard, après le redémarrage du mobile) les messages => L'architecture GCM stocke le message à envoyer au mobile tant que le mobile ne l'a pas reçu (mais délai de garde par défaut 4 semaines) "If the device is not connected to GCM, the message will be stored until a connection is established... When a connection is established, GCM will deliver all pending messages to the device,... If the device never gets connected again..., the message will eventually time out and be discarded from GCM storage. The default timeout is 4 weeks..." source : http://developer.android.com/google/gcm/adv.html 6

Scénario d'envoi d'un message "The application server sends a message to GCM servers. Google enqueues and stores the message in case the device is offline. When the device is online, Google sends the message to the device. On the device, the system broadcasts the message to the specified Android application via Intent broadcast with proper permissions, so that only the targeted Android application gets the message. This wakes the Android application up. The Android application does not need to be running beforehand to receive the message. The Android application processes the message." C'est clair, non? source : http://developer.android.com/google/gcm/server.html#send -msg 7

Architecture GCM Un smartphone est informé d'arrivées de messages par Intent (comme d'hab) Peut fonctionner sur des émulateurs Pas besoin de déposer l'application dans Google Play Store Utilise les Google Services Utilise les notions de composants (Components) et d'identifiants (Credentials) Les composants sont les 3 entités : Une application serveur (3rd-party Application Server) Les smartphones (Client App) GCM c'est à dire des serveurs GCM source : http://developer.android.com/google/gcm/gcm.html 8

Architecture GCM : les identifiants Le Sender Auth Token : l'api Key donné à l'application serveur l'autorisant à utiliser l'architecture GCM. Est obtenu à partir de la "Google Developers Console" Le Sender ID : le project number du projet GCM. Est obtenu à partir de la "Google Developers Console" Le Registration ID : l'identifiant donné par les serveurs GCM caractérisant le couple (mobile, application cliente) : "In other words, a registration ID is tied to a particular Android application running on a particular device." source : http://developer.android.com/google/gcm/gcm.html 9

Une application utilisant GCM : les étapes D'abord construire un projet GCM = le middleware GCM qu'on va utiliser 1 ) On le fait dans la "Google Developers Console" 2 ) Construire une application serveur (émetteur) utilisant GCM 3 ) Construire une application Android cliente (réceptrice) 10

Créer un projet GCM Google dans l'api Google (1/4) Aller dans la "Google Developers Console" d'url : Euh c'est parfois https://code.google.com/apis/console/ mais tapper "Google Developers Console" dans Google c'est bien aussi ;-) Si vous n'avez pas de projet déjà créé, il faut en créer un Le nom peut être quelconque et un project Name est proposé A l'aide de ce project name on va avoir un project ID (un entier long). Ce project ID sera le GCM Sender ID. Euh parfois les deux sont confondus et c'est bien dommage! source : http://developer.android.com/google/gcm/gs.html#next 11

Créer un projet GCM Google dans l'api Google (2/4) Il faut ensuite demander d'utiliser le GCM Service pour ce projet. Pour cela sélectionner le projet Cliquer APIs & auth puis APIs puis cliquer le bouton (Off pour l'instant) de Google Cloud Messaging for Android La ligne disparait des propositions (bravo l'ergonomie!) mais apparaît au début de la page, cochée ON! 12

Créer un projet GCM Google dans l'api Google (3/4) Sélectionner Credentials puis, dans la partie Public API Access, cliquez Create new Key Dans la boite de dialogue qui apparaît, cliquer Server key 13

Créer un projet GCM Google dans l'api Google (4/4) Dans la boite de dialogue suivante, indiquer l'adresse IP du serveur applicatif qui utilisera le service GCM. Cliquer Create On peut mettre 0.0.0.0/0 pour des tests Dans la fenêtre suivante, on obtient une API Key : 14

Le projet GCM : un résumé Par la suite, on peut toujours récupérer les informations d'un projet en allant à la Google Developers Console Aller à l'url https://code.google.com/apis/console/(la Google Developers console) Sélectionner le projet Eventuellement sélectionner Overview Il apparaît en haut de la page, le project ID et le Project Number Cliquer sur Credentials. La page affiche l'api KEY 15

Choix de la connexion On peut utiliser comme couche transport HTTP ou XMPP Si on choisit HTTP, on ne pourra avoir que des connexions serveur applicatif -> Cloud -> smartphone Avec HTTP les envois serveur applicatif -> cloud (= serveurs cloud) sont bloquants : envois synchrones Avec XMPP, on peut avoir les deux sens La connexion XMPP est appelée aussi CCS (Cloud Connection Server) voir à http://developer.android.com/google/gcm/ccs.html On peut utiliser ces deux types de connexion en même temps envois asynchrones avec CCS source : http://developer.android.com/google/gcm/server.html 16

Une démo dans workspace D:\CNAM\DevMobiles\Android\JMF\SupportCours\GCM\TravailPushG CM client projet ReceiveFromCloudInAndroidDeviceProject, application Android serveur projet PushIntoTheCloudProject, application Java SE EmetteurDansLeCloud.java Android application Java SE application Tout cela inspiré du tutorial à http://android.amolgupta.in/2012/07/google-cloudmessaging-gcm-tutorial.html 17

Démo : le "client" Le "client" = le récepteur de messages venant du cloud = une application Android qui sera exécutée dans un smartphone Essentiellement le code est : on enregistre le smartphone dans le cloud Google on vérifie le bon déroulement de cette phase d'enregistrement on récupère le regid associé au couple (projet, smartphone) et puis voilà! Euh, et quand recevons nous le message? Il faut en être informé. Par l'environnement d'exécution qui, lui, le reçoit D'où architecture Android : l'application Android possède un service spécial dédié au cloud qui est déclenché lors de la réception de messages provenant du cloud les messages reçus sont encapsulés dans des Intent à réception d'un message, celui-ci est affiché 18

IHM du client : réception du regid Essentiellement, l'activité principale de l'application Android est :... import com.google.android.gcm.gcmregistrar; public class SamplePushActivity extends Activity { /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) {... // On demande d'enregistrer le smarphone dans le cloud GCMRegistrar.checkDevice(this); // On vérifie que l'android Manifest est correct pour utiliser GCM // (toutes les permissions nécessaires) GCMRegistrar.checkManifest(this); if (GCMRegistrar.isRegistered(this)) { // Si l'enregistrement dans le cloud est correct, on affiche le regid // (dans LogCat) Log.d("info", GCMRegistrar.getRegistrationId(this)); } // On récupère le regid qu'on affiche dans l'ihm du smartphone final String regid = GCMRegistrar.getRegistrationId(this);... 19

Le récepteur de messages diffusés du client Il est utilisé un Serviceet pas un BroadcastReceiver. Cela peut paraître étrange! Conceptuellement lorsqu'on reçoit un message du cloud, il faut lancer un traitement de ce message. Une classe Service de l'api encapsule la réception du message et le lancement du service. C'est la classe GCMBaseIntentService L'appli Android possède donc un tel (Intent)Service:... import com.google.android.gcm.gcmbaseintentservice; public class GCMIntentService extends GCMBaseIntentService { public GCMIntentService() { super("le_projet_gcm_number"); } } protected void onmessage(context arg0, Intent lintentrecu) { // Traitement du message reçu. // On peut récupérer le message par // lintentrecu.getstringextra("message") }... 20

L'AndroidManifest du client Pour contacter le cloud, internet, etc. il faut avoir des permissions Il faut les indiquer explicitement dans l'android Manifest de l'application Android Voir à http://developer.android.com/google/gcm/client.html, Step 2: Edit Your Application's Manifest Une partie du Manifest est alors : <manifest... <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.get_accounts" /> <uses-permission android:name="android.permission.wake_lock" /> <permission android:name="fr.cnam.ssoiot.permission.c2d_message" android:protectionlevel="signature" /> <uses-permission android:name="com.google.android.c2dm.permission.receive" /> <uses-permission android:name="fr.cnam.ssoiot.permission.c2d_message" /> <uses-permission android:name="android.permission.get_accounts" /> <uses-permission android:name="android.permission.use_credentials" /> <application... activité principale 21

La partie receiver de l' AndroidManifest La partie receiver est : <application... activité principale <receiver android:name="com.google.android.gcm.gcmbroadcastreceiver" android:permission="com.google.android.c2dm.permission.send" > <intent-filter> <action android:name="com.google.android.c2dm.intent.receive" /> <action android:name="com.google.android.c2dm.intent.registration" /> <category android:name="fr.cnam.ssoiot" /> </intent-filter> </receiver> <service android:name="fr.cnam.ssoiot.gcmintentservice" /> </application> 22

Demo : exécution du client On doit obtenir le regid affiché comme : Euh, sans les gribouillis ;-) 23

Démo : le "serveur" Le "serveur" = l'émetteur de messages dans le cloud C'est une application Java J2SE Essentiellement le code est : construire un émetteur de messages dans le cloud construire un message pour le cloud envoyer, dans le cloud, ce message pour une liste de smartphone 24

Code de l'émetteur (= serveur) L'activity principale est :... import com.google.android.gcm.server.message; import com.google.android.gcm.server.multicastresult; import com.google.android.gcm.server.sender; public class EmetteurDansLeCloud { public static void main(string args[]) { try { Sender sender = new Sender("L_API_KEY_DU_PROJET_GCM"); ArrayList<String> deviceslist = new ArrayList<String>(); String monregiddunexus5 = "LE_REG_ID_D_UN_SMARTPHONE_DESTINATAIRE"; deviceslist.add(monregiddunexus5); // construction d'un message à envoyer Message message = new Message.Builder().collapseKey("1").timeToLive(3*60).delayWhileIdle(true).addData("message", "Hello sso and iot school").build(); MulticastResult result = sender.send(message, deviceslist, 2); sender.send(message, deviceslist, 1); 25

Un exercice Construire une application Android application qui reçoit des messages envoyés dans le cloud par une application Java 26

Publier dans GCM avec HTTP voir à http://developer.android.com/google/gcm/http.html Si on veut utiliser HTTP pour GCM, il faut : envoyer une requête POST à https://android.googleapis.com/gcm/send fabriquer un message HTTP avec un en-tête indiquant un type de contenu (Content-Type: application/json pour JSON ou application/x-www-form-urlencoded;charset=utf-8 pour du texte brut) et la clé (key=l'api key) Par exemple : Content-Type:application/json Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA { } "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."], "data" : {... } Ci dessus une liste des regids et des données pour une appli GCM de clé AIz... 27

Bibliographie pour GCM http://android.amolgupta.in/2012/07/google-cloudmessaging-gcm-tutorial.html: un bon exemple http://developer.android.com/google/gcm/index.html: le site de réference pour GCM http://androidexample.com/android_push_notificatio ns_using_google_cloud_messaging_gcm/index.php?view =article_discription&aid=119&aaid=139et http://androidexample.com/device_to_device_messagi ng_using_google_cloud_messaging_gcm_- _Android_Example/index.php?view=article_discriptio n&aid=122&aaid=142: deux autres tutoriaux http://hmkcode.com/android-google-cloud-messagingtutorial/: un autre exemple 28

Fin 29