Il y a 4 années · 3 minutes · Front

Devoxx FR 2014 – Chrome App for desktop and Mobile

La session « Chrome App for desktop and Mobile » était présentée par Joe Marini de Google. L’objectif était de nous présenter les Chrome Apps et nous donner envie de creuser le sujet ; pari gagné (en tous cas pour moi).
Il commence par nous présenter Caret, un éditeur de texte à la Sublime Text sauf que Caret est une Chrome Apps et le moins que l’on puisse dire c’est que ça à l’air pas mal du tout ! Je suis même étonné de ne pas en avoir entendu parler, surtout après le buzz qui avait eu lieu avec atom.io !?

Pourquoi créer une Chrome App ?

  • Une Chrome App est offline par défaut ;
  • Fonctionne sur toutes les plate-formes populaires ;
  • Accès à la plate-forme sous jacente et au hardware ;
  • Distribution et mises à jour via Chrome Web Store.

Offline, online… bon… comment on fait avec les données alors …

Puisque la Chrome App est offline par défaut alors il faut pouvoir stocker localement les données, pour cela nous avons à notre disposition:

Il revient ensuite sur la partie des données mais cette fois-ci plus orienté synchronisation lorsque l’on est online :
chrome.storage.sync permet également de stocker des petits éléments, et ils seront automatiquement synchronisés par l’infrastructure de google de la même manière que le sont vos bookmarks dans Chrome. C’est d’ailleurs la même infra qui est mise en œuvre ;
SyncFileSystem API pour synchroniser des fichiers plus gros (utilise l’API Google Drive).
– Google Cloud Push Messaging API pour recevoir des message depuis un serveur : en effet même si votre Chrome App n’est pas démarré il existe toujours un process Chrome qui va recevoir le message et réveiller votre application.

Chrome Apps offre également d’autres API tel que chrome.identity pour s’occuper de l’authentification OAuth.

Et comment c’est packagé ?

Une Chrome App nécessite un fichier manifest.json contenant tout un ensemble d’informations sur votre application, tel que la version, les permissions accordés à votre application…
Le package final est un simple fichier zip que vous « déposez » ensuite dans le Chrome Web Store.

Chrome App c’est plus qu’une application web

Joe Marini nous présente alors les API permettant de fournir une meilleure expérience utilisateur qu’une application Web :

  • chrome.app.window pour gérer la fenêtre de l’application (taille, position de la fenêtre…) ;
  • chrome.contextMenus pour gérer le clic contextuel ;
  • chrome.alarms un cron dans votre application (qui réveillera votre application même si elle est fermée) ;
  • chrome.mediaGalleries permet d’accéder aux répertoires de l’utilisateur contenant des médias ;
  • une « URL handlers API » qui permet de réagir à des url à la manière des Intents Android (pour cela il faudra prouver à google que vous êtes propriétaire du nom de domaine, donc impossible de créer une Chrome App pour gmail.com).

Tous ces accès devront typiquement être déclarés dans la partie permissions du manifest.json de votre Chrome App.

Concernant la sécurité, Chrome Apps implémente Content Security Policy : pas d’utilisation de eval(), new Function impossible, les iframe sont sandboxés, …

Chrome Apps passe au Mobile

Et finalement, depuis janvier 2014 il est possible d’accéder en preview à l’intégration avec Cordova afin de pouvoir déployer votre Chrome App sous forme d’application native.

Conlusion

J’ai bien aimé l’idée de pouvoir réveiller une Chrome App lors de la réception d’un message ou bien encore associer une Chrome App à une URL. Il va falloir tester tout ça !

One thought on “Devoxx FR 2014 – Chrome App for desktop and Mobile”

  1. Publié par Florent Dupont, Il y a 4 années

    Merci pour ce compte rendu.
    Attention : petite erreur sur l’URL du manifest : le manifest pour la définition de Chrome apps est différent du manifest de chrome extensions. La documentation du manifest des apps est disponible sur :https://developer.chrome.com/apps/manifest

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *