pwaGeolocation()
: Demande d'autorisation de la géolocalisationLa fonction pwaGeolocation()
permet de proposer à l'utilisateur un bouton pour autoriser la géolocalisation.
Afin que la fonction soit fonctionnelle, il faut ajouter ces éléments au DOM :
pwa-permission-geolocation-btn
: bouton de demande d'autorisation de la géolocalisation de la PWApwa-permission-remove
: Encart d'explications de révocation de l'autorisation de la géolocalisation de la PWA
<button class="pwa-permission-geolocation-btn">
{...}
</button>
<div class="pwa-permission-remove">
To remove permission, please go to your device or browser settings
</div>
On cache les éléments
.pwa-permission-geolocation-btn,
.pwa-permission-remove {
display: none;
}
Si les éléments ont la classe is-visible
, on les affichent
.pwa-permission-geolocation-btn.is-visible,
.pwa-permission-remove.is-visible {
display: block;
}
const pwaGeolocation = async () => {
...
}
Nous mettons en variable les éléments du DOM à manipuler
const pwaPermissionGeolocationBtn = document.querySelector('.pwa-permission-geolocation-btn')
const pwaPermissionRemove = document.querySelector('.pwa-permission-remove')
const pwaGeolocationCurrentPosition = () => {
Pour faire apparaitre le prompt de demande d'autorisation de la géolocalisation, on récupère la position de l'utilisateur
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
On ajoute la classe is-active
au bouton
pwaPermissionGeolocationBtn.classList.add('is-active')
Si l'utilisateur a accepté la géolocalisation
const permissionStatus = await navigator.permissions.query({ name: 'geolocation' })
if (permissionStatus.state === "granted") {
On ajoute la classe is-active
au bouton
pwaPermissionGeolocationBtn.classList.add('is-active')
pwaPermissionGeolocationBtn.addEventListener('click', () => {
Si l'utilisateur a déjà accepté la géolocalisation
if(pwaPermissionGeolocationBtn.classList.contains('is-active')) {
On affiche l'encart d'explications de révocation de l'autorisation
pwaPermissionRemove.classList.add('is-visible')
Sinon, on demande l'autorisation en récupérant la position de l'utilisateur
pwaGeolocationCurrentPosition()
Si on clique sur l'encart
pwaPermissionRemove.addEventListener('click', () => {
On cache l'encart d'explications de révocation de l'autorisation
pwaPermissionRemove.classList.remove('is-visible')
pwaGeolocation()
Sur pwabunga.js, la fonction pwaGeolocation()
est appelé dans la fonction pwaParams()
pwaGeolocation()
const pwaGeolocation = async () => {
const pwaPermissionGeolocationBtn = document.querySelector('.pwa-permission-geolocation-btn')
const pwaPermissionRemove = document.querySelector('.pwa-permission-remove')
const pwaGeolocationCurrentPosition = () => {
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
pwaPermissionGeolocationBtn.classList.add('is-active')
})
}
const permissionStatus = await navigator.permissions.query({ name: 'geolocation' });
if (permissionStatus.state === "granted") {
pwaPermissionGeolocationBtn.classList.add('is-active')
}
pwaPermissionGeolocationBtn.addEventListener('click', () => {
if(pwaPermissionGeolocationBtn.classList.contains('is-active')) {
pwaPermissionRemove.classList.add('is-visible')
} else {
pwaGeolocationCurrentPosition()
}
})
pwaPermissionRemove.addEventListener('click', () => {
pwaPermissionRemove.classList.remove('is-visible')
})
}
pwaInstall()
: Promotion et bouton d'installation de la PWApwaUpdate()
: Mise à jour de l'applicationpwaShare()
: Utilisation du partage natif de l'appareilpwaParams()
: Encart des paramètres de la PWA