Firefox OS : Dev Tips #5
Quand une série fonctionne, il faut continuer. Dans ce 5ème épisode des Dev Tips Firefos OS, nous allons parler de trois sujets :
- Notification Push
- API et MarketPlace
- WebAPI : Network Information
Notification Push
Les notifications Push sont une manière pour les développeurs pour alerter l’utilisateur. Au lieu d’interroger continuellement le serveur (Pull), le serveur vous poussera les infos au cas par cas (Push). La technologie utilisée pour les notifications Push est la WebAPI SimplePush. Une autre WebAPI PushAPI n’a pas été développé au profit de SimplePush.
Pour commencer, nous devons d’abord modifier le fichier manifest.webapp :
{ "permissions": { "push": {"description": "Pour tester les notifications pushs"} }, "messages": [ {"push": "/my_push_file.html"}, {"push-register": "/my_push_file.html"} ] }
Ensuite, le fichier Javascript permet la connexion et la déconnexion ainsi que la réception des messages :
var endPointEmail, endPointIM; // Lors de la connexion, on se lie au serveur de notifications MyAppFramework.addEventListener('user-login', function() { fnPushRegister(); }); // Lors de la déconnexion, on se délie du serveur de notifications AppFramework.addEventListener('user-logout', function() { fnPushUnregister(); }); // Au cas où on recoit une demande d'enregistrement navigator.mozSetMessageHandler('push-register', function(e) { // On verifie la connexion if (AppFramework.isUserLoggedIn) { fnPushRegister(); } }); // Cet evenement recevra les messages navigator.mozSetMessageHandler('push', function(message) { switch(message.pushEndpoint){ case endPointEmail: console.log('New email'); break; case endPointIM: console.log('New IM'); break; } }); // Connecte les notifications Push au serveur function fnPushRegister() { var reqEmail = navigator.push.register(); reqEmail.onsuccess = function(e) { endPointEmail = e.target.result; storeOnAppServer("email", endPointEmail); } var reqIm = navigator.push.register(); reqIm.onsuccess = function(e) { endPointIM = e.target.result; storeOnAppServer("im", endPointIM); } } // Déconnecte les notifications Push au serveur function fnPushUnregister() { navigator.push.unregister(endPointEmail); navigator.push.unregister(endPointIM); }
Malheureusement, cette technologie n’est pas complètement terminé et de nombreux changements peuvent arriver, comme le prouve le passage de la technologie PushAPI à SimplePush.
Lien : MDN : WebAPI SimplePush
Lien : KodeClutz : Push notifications for the Open Web
API et MarketPlace
Mozilla, faisant très bien leur boulot, a fourni une API pour accéder au MarketPlace.
Il est possible de faire de nombreuses choses avec cette API :
- Récupérer des informations sur une application
- Signaler une application abusive ou un utilisateur abusif
- Gérer son compte utilisateur
- Gérer ses applications
- Gérer les échanges entre les modérateurs d’applications et les développeurs
- Définir des comptes pour le paiement
- Faire des paiements et voir des statuts
- Gérer les votes d’application (listing, ajout et modification)
- Lister les applications en attente de validation
- Faire une recherche sur le MarketPlace
- Lister les catégories
- Lister les régions disponibles
- Lister les paramètres de configuration
- Valider une application
- Poster et mettre à jour une application
- Ajouter une copie d’écran ou une vidéo
- Demander une validation pour une application
- Télécharger une copie des applications publiques du Marketplace
Pour pouvoir l’utiliser, il faut se connecter au MarketPlace pour récupérer la clé publique et la clé secrète : https://marketplace.firefox.com/developers/api. Attention ! Vu que c’est une API basé sur OAuth, vous devrez fournir un nom d’application et une adresse de redirection. Un second moyen d’authentification est disponible avec Persona.
Lien : Doc : Firefox MarketPlace API
Lien : GitHub : mozilla/Marketplace.PHP
Lien : GitHub : mozilla/Marketplace.Python
Lien : Wiki : Mozilla API
WebAPI : Network Information
On récupère tout d’abord l’objet qui gère la connexion :
var oConnection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
On peut récupérer quelques informations sur la connexion :
var iBandwidth = oConnection.bandwidth; if(iBandwidth == 0){ console.log('Offline'); } else if(iBandwidth == 'infinity'){ console.log('Inconnu'); } else { console.log('Bande passante estimée : ' + iBandwidth + 'Mb/s'); } var bMetered = oConnection.metered; if(bMetered == true){ console.log('La connexion est mesurée.'); } else { console.log('La connexion n\'est pas mesurée.'); }
On peut observer les changement via un listener ‘change’ :
function fnConnection_change() { console.log("Bande passante : " + oConnection.bandwidth + " Mb/s"); if (oConnection.metered) { console.log('La connexion est mesurée'); } } oConnection.addEventListener("change", fnConnection_change);
Lien : MDN : Network_Information
Lien : Objet : navigator.connection
Ajouter un commentaire