web-dev-qa-db-fra.com

Ne demander des informations de géolocalisation qu'en réponse à un geste de l'utilisateur?

Je viens de mettre à jour vers Chrome 64 et j'ai commencé à remarquer ce message dans notre webapp:

[Violation] Only request geolocation information in response to a user gesture.

Cela semble trop restrictif. Je n'ai pas à cliquer plusieurs fois sur "Mettre à jour l'emplacement" lorsque je navigue dans Google Maps. Quelle est l'alternative au sondage de position?

Nous utilisons actuellement le code suivant:

let locInt = self.setInterval(function(){
    navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
},5000);

Notre application est basée sur la localisation et repose sur une position constamment mise à jour. Quelle est la méthode préférée ici?

9
Devil's Advocate

La méthode watchPosition() vous permet d'enregistrer un gestionnaire que le navigateur appelle automatiquement chaque fois que la position de l'appareil change. Ceci est préférable au vote.

id = navigator.geolocation.watchPosition(success[, error[, options]])

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition

6
Kayce Basques

Il semble qu'il y ait une recommandation de Google pas pour charger la géolocalisation au chargement de la page:

Les utilisateurs sont méfiants ou confus par les pages qui demandent automatiquement leur emplacement au chargement de la page. Plutôt que de demander automatiquement l'emplacement d'un utilisateur lors du chargement de la page, liez la demande au geste d'un utilisateur, par exemple en appuyant sur le bouton "Rechercher les magasins à proximité". Assurez-vous que le geste exprime clairement et explicitement la nécessité de l'emplacement de l'utilisateur.

Et peu importe si vous utilisez watchPosition() ou getCurrentPosition():

Lighthouse collecte le JavaScript qui a été exécuté lors du chargement de la page. Si ce code contient des appels à geolocation.getCurrentPosition () ou geolocation.watchPosition () et que l'autorisation de géolocalisation n'a pas déjà été accordée, l'emplacement de l'utilisateur a été demandé.

Nous avons également remarqué qu'il y a un retard considérable dans l'obtention de la géolocalisation de l'utilisateur depuis cette mise à jour Chrome.

16
Stephan