Un backend Cloud pour votre appli Android* Mobile Backend Starter avec Alexis Moussine-Pouchkine *: et pour ios aussi
http://goo.gl/tf0o6j
Done!
Oui, mais parler au serveur c est {compliqué pas drole}! newpost = CloudEntity ("GuestBook"); // onclick method newpost.put ( "message", etmessage.gettext().tostring() ); getcloudbackend().insert(newpost); Plutôt simple, non?
Envoi de messages Stockage de données (entre utilisateurs mobiles) (préférences, état partagé) pourquoi construire une infra quand on peut utiliser un service? Authentification Notification d événements (changement d état, coté serveur ou client) (OAuth 2) Auto-scale
Google App Engine
Google Cloud Endpoints
Cloud Endpoints
@Api(name = "helloworld", version = "v1") public class Greetings { public static ArrayList<HelloGreeting> greetings = public HelloGreeting getgreeting(@named("id") Integer id) { return greetings.get(id); } } mvn appengine:devserver http://localhost:8080/_ah/api/explorer @ApiMethod(name = "greetings.multiply", httpmethod = "post") public HelloGreeting insertgreeting(@named("times") Integer times, HelloGreeting greeting) { HelloGreeting response = new HelloGreeting(); StringBuilder responsebuilder = response.setmessage(responsebuilder.tostring()); return response; }
@ApiMethod(name = "greetings.authed", path = "greeting/authed") public HelloGreeting authedgreeting(user user) { HelloGreeting response = new HelloGreeting("hello " + user.getemail()); return response; } @Api( name = "helloworld", version = "v1", scopes = {"https://www.googleapis.com/auth/userinfo.email"}, clientids = {Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID, Constants.IOS_CLIENT_ID, Constants.API_EXPLORER_CLIENT_ID}, audiences = {Constants.ANDROID_AUDIENCE} )
APIs REST AppEngine : Python ou Java OAuth 2.0 Outils: Maven, Eclipse, Android Studio, API Explorer... Même infra que les APIs Google Librairies Android, ios, JavaScript, Python, Dart, PHP,...
Mobile Backend Starter Avec ou sans coding coté serveur...
Mon Livre d Or
http://goo.gl/tf0o6j
Déployer son instance MBS http://cloud.google.com/console
Mobile Backend Starter en 3 étapes 1. Livre d or partagé Stockage des messages Scalabilité backend (serveur et datastore) Zéro code serveur 2. Notifications Maj. sans polling Push messaging avec GCM 3. Authentification Propagation de l utilisateur Android Oauth2 transparent pour l utilisateur
la clé du zéro code
1. Stockage de données Cloud Datastore : le NoSQL de Google Schemaless, scalabilité quasi-infinie Disponible sous forme de service Abstraction dans les classes du framework MBS pour Android
Coté client Android : GuestbookActivity private List<CloudEntity> mposts... newpost = CloudEntity ("GuestBook"); // onclick method newpost.put ( "message", etmessage.gettext().tostring() ); CloudCallbackHandler<CloudEntity> handler = new CloudCallbackHandler<>() { public void oncomplete(final CloudEntity result) {... } public void onerror(final IOException exception) {... } } getcloudbackend().insert(newpost, handler);
2. Notifications
public interface Consts { // Device Registration. Listen to whom? public static final String PROJECT_NUMBER = "31937802652"; } public class GCMBroadcastReceiver extends WakefulBroadcastReceiver { } public class GCMIntentService extends IntentService { protected void onhandleintent(intent intent) { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); String messagetype = gcm.getmessagetype(intent); WakefulBroadcastReceiver.completeWakefulIntent(intent); } }
3. Authentification I. Associer un utilisateur aux messages stoqués dans le DataStore II. Partager les données d un utilisateur sur différents devices III. Partager des messages avec des utilisateurs spécifiques
Hasbeen Cool
Consent Screen (?) OAuth 2 Standard et puissant Utile pour les applications tierces mais pas indispensable pour notre appli Android
Même développeur!
Deux ClientID ClientID Web pour établir que le développeur est le même pour l application Android et pour le serveur, évitant ainsi la présentation de l écran de consentement OAuth2. => utilisé dans la configuration du backend et dans l application Android ClientID pour l application Android, basé sur le nom de package et le SHA1 issu du keystore Android de debug ou de release mode. => utilisé dans la configuration du backend
Coté Backend Code Open Source sur GitHub: http://goo.gl/fgkrl Utile pour : Rajout de endpoints spécialisés (stats, activités,...) Gestion du stockage (Cloud Storage, SQL) Accès machines virtuelles (Compute Engine) Analyse de données (Big Query) etc...
Pour ios aussi Bibliothèque ObjectiveC Intégration des Apple Push Notifications
Mobile Backend Server Pas de développement coté serveur (option) Cloud Datastore Authentification avec des comptes Google Notification en mode Push Scalabilité intégrée developers.google.com/cloud/samples/mbs/
Questions?
Mobile Backend Starter avec Alexis Moussine-Pouchkine google.com/+alexismp alexismp@google.com