B2G OS

Garder la main sur la géolocalisation même si l'application n'est plus visible

Cette traduction est incomplète. Aidez à traduire cet article depuis l'anglais.

Non standard
Cette fonctionnalité n'est pas en voie de standardisation au W3C, mais elle est supportée par la plateforme Firefox OS. Bien que son implémentation puisse changer dans le futur et qu'elle n'est pas largement supportée par les différents navigateurs, elle est utilisable pour du code dédié aux applications Firefox OS.

Cette API est disponible sur Firefox OS pour des applications internes seulement.

Une application Firefox OS peut continuer à utiliser le service de géolocalisation alors même qu'elle n'est plus visible. Ceci peut être obtenu via un appel à MozWakeLock conjointement avec watchPosition() de cette façon, l'application pourra continuer à utiliser le GPS bien que n'étant plus au premier plan.

Toute application désirant conserver l'accès au service de géolocalisation alors que l'écran est éteint ou que cette application se retrouve en arrière plan, doit obtenir un verrou spécial avant de ne plus être visible.

Pour obtenir un tel verrou, il suffit d'appeler la méthode Navigator.requestWakeLock() avec l'argument 'gps'.

var lock = window.navigator.requestWakeLock('gps');

Ici, les développeurs d'applications portent une lourde responsabilté. Ils doivent être certains des raisons pour lesquelles ils ont besoin du service de géolocalisation et surtout savoir quand l'arrêter. Le risque, avec ce verrou, vient de ce que les utilisateurs de votre application peuvent très bien oublier de fermer l'appli lorsqu'ils ont fini de l'utiliser - ce qui se soldera par une diminution importante de la charge de la batterie, inutilement. Si vous n'êtes pas certain à 100 % que l'obtention d'un verrou de géolocalisation est gérable dans tous les cas de figure, alors vous devez proposer une option pour activer ou désactiver ce verrou de géolocalisation dans les paramètres de votre appli.

Si vous ne libérez pas du tout votre verrou de géolocalisation, il sera automatiquement libéré lorsque votre appli se terminera. Cependant il y a de nombreux cas où vous pouvez libérer ce verrou vous-même - notamment lorsque l'utilisateur désactive cette option dans vos paramètres applicatifs, ou encore lorsque votre appli ne requiert plus d'utiliser la géolocalisation. Pour libérer le verrou, vous appelez unlock() qui est la méthode prévue :

lock.unlock();

Les verrous de géolocalisation sont disponibles, à la fois dans les applis hébergées et les applis packagées - au sens de la plateforme Firefox.

Example

var id, target, options;
var wakeLock;

function success(pos) {
  var crd = pos.coords;

  if (target.latitude === crd.latitude && target.longitude === crd.longitude) {
    console.log('Congratulations, you reached the target');
    navigator.geolocation.clearWatch(id);
    wakeLock.unlock();
  }
}

function error(err) {
  console.warn('ERROR(' + err.code + '): ' + err.message);
}

target = {
  latitude : 0,
  longitude: 0
};

options = {
  enableHighAccuracy: false,
  timeout: 5000,
  maximumAge: 0
};

wakeLock = window.navigator.requestWakeLock('gps');
id = navigator.geolocation.watchPosition(success, error, options);

Voir aussi

  • Navigator.requestWakeLock(), pour poser un verrou sur une ressource.
  • MozWakeLock, l'interface représentant un verrou et permettant sa gestion, depuis sa création en passant par sa conservation en mémoire, et pour finir en le libérant.

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : Pierre.Fauconnier
 Dernière mise à jour par : Pierre.Fauconnier,