pwaGeolocation()
: Geolocation authorization requestThe pwaGeolocation()
function offers the user a button to authorize geolocation.
In order for the function to be functional, these elements must be added to the DOM:
pwa-permission-geolocation-btn
: PWA geolocation permission request buttonpwa-permission-remove
: PWA Geolocation Permission Revocation Explanation Insert
<button class="pwa-permission-geolocation-btn">
{...}
</button>
<div class="pwa-permission-remove">
To remove permission, please go to your device or browser settings
</div>
We hide the elements
.pwa-permission-geolocation-btn,
.pwa-permission-remove {
display: none;
}
If the elements have the class is-visible
, we display them
.pwa-permission-geolocation-btn.is-visible,
.pwa-permission-remove.is-visible {
display: block;
}
const pwaGeolocation = async() => {
...
}
We set the DOM elements to be manipulated as variables
const pwaPermissionGeolocationBtn = document.querySelector('.pwa-permission-geolocation-btn')
const pwaPermissionRemove = document.querySelector('.pwa-permission-remove')
const pwaGeolocationCurrentPosition = () => {
To display the geolocation authorization request prompt, we retrieve the user's position
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
We add the is-active
class to the button
pwaPermissionGeolocationBtn.classList.add('is-active')
If the user has accepted geolocation
const permissionStatus = await navigator.permissions.query({ name: 'geolocation' })
if (permissionStatus.state === "granted") {
We add the is-active
class to the button
pwaPermissionGeolocationBtn.classList.add('is-active')
pwaPermissionGeolocationBtn.addEventListener('click', () => {
If the user has already accepted geolocation
if(pwaPermissionGeolocationBtn.classList.contains('is-active')) {
Display the permission revocation explanation insert
pwaPermissionRemove.classList.add('is-visible')
Otherwise, we ask for authorization by retrieving the position of the user
pwaGeolocationCurrentPosition()
If you click on the insert
pwaPermissionRemove.addEventListener('click', () => {
Hide permission revocation explanation insert
pwaPermissionRemove.classList.remove('is-visible')
pwaGeolocation()
On pwabunga.js, the pwaGeolocation()
function is called in the pwaParams()
function
pwaGeolocation()
function
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 and PWA install buttonpwaUpdate()
: Application updatepwaShare()
: Using device native sharingpwaParams()
: PWA parameters insert