Welcome to the fourth entry on the Progressive Web Application with Django series. In this chapter we will learn how to install our webapp as a native application. Very useful and really easy.
Allowing native installation
With a small change to the source code, we can ask the user if they want to install our supercool webapp as a “native” app.
let beforeInstallPromptEvent = null;
let installed = false;
async function installPWA() {
if (beforeInstallPromptEvent === null || installed) {
return;
}
try {
beforeInstallPromptEvent.prompt();
const { outcome } = await beforeInstallPromptEvent.userChoice;
if (outcome === 'accepted') {
console.log("App install dialog accepted!");
beforeInstallPromptEvent = null;
installed = true;
}
} catch(e) {
console.error(e);
}
}
We can also listen to a couple of events to customize the responses and behavior of our webapp in every step of the process:
window.addEventListener('beforeinstallprompt', (e) => {
beforeInstallPromptEvent = e;
});
window.addEventListener('appinstalled', () => {
installed = true;
});
The user needs to fire the event, so an install button is a good place to call the new code:
When clicked, the user will see a browser dialog asking for the installation like this:
If accepted, the webapp will be registered on the operating system, with its own launcher icon:
Executing as a standalone app
Once installed, the web app will launch in its own window, providing a more integrated experience with styling based on the manifest (see previous chapters). Like this:
Note that you can customize the icon, the behavior of the webapp, colors, etc. in the PWA manifest. You can read more about this here:
About the list
Among the Python and Docker posts, I will also write about other related topics, like:
- Software architecture
- Programming environments
- Linux operating system
- Etc.
If you found some interesting technology, programming language or whatever, please, let me know! I’m always open to learning something new!
About the author
I’m Andrés, a full-stack software developer based in Palma, on a personal journey to improve my coding skills. I’m also a self-published fantasy writer with four published novels to my name. Feel free to ask me anything!
Source link
lol