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

Cet article Firefox OS : Dev Tips #5 est apparu en premier sur RootsLabs.

Vus : 1936
Publié par Progi1984 : 78