PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Progi1984 : Firefox OS : Dev Tips #5

lundi 1 juillet 2013 à 10:30

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

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 :

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.

Gravatar de Progi1984
Original post of Progi1984.Votez pour ce billet sur Planet Libre.

Articles similaires