Cara membuat badge aplikasi

Badge digunakan untuk menyampaikan informasi yang tidak mendesak kepada pengguna. Misalnya, nilai ini digunakan untuk menunjukkan status aplikasi atau jumlah item yang belum dibaca. Cara klasik untuk membuat badge aplikasi adalah menambahkan angka ke favicon. Di browser modern, setelah aplikasi diinstal, ada cara bawaan untuk menambahkan badge ke ikon aplikasi di taskbar sistem operasi.

Menggunakan metode navigator.setAppBadge()

Metode navigator.setAppBadge() menetapkan badge pada ikon yang terkait dengan aplikasi terinstal. Metode ini mengambil argumen tunggal opsional, yaitu bilangan bulat yang akan digunakan sebagai nilai badge. Jika angkanya ditetapkan ke 0, badge aplikasi akan dihapus. Tidak memberikan argumen akan menghasilkan badge generik, biasanya ditampilkan sebagai titik berwarna.

Ikon aplikasi yang menampilkan ikon sebenarnya dengan angka 3 sebagai nilai badge.

Dukungan Browser

  • 81
  • 81
  • x
  • 17

Sumber

Cara klasik

Menambahkan angka ke favicon

Jika aplikasi belum diinstal, Anda dapat menambahkan nomor ke favicon. Ada banyak cara untuk melakukannya, misalnya, dengan menggambar favicon secara dinamis ke kanvas dengan info badge yang ditambahkan dan menampilkannya sebagai URL Blob, atau untuk membuat gambar SVG dengan info badge sebagai URL data.

Favicon yang menampilkan ikon sebenarnya dengan angka 5 sebagai nilai badge.

{i>Progressive enhancement <i}

Cuplikan di bawah ini menggunakan elemen kustom <favicon-badge></favicon-badge> yang memungkinkan developer menetapkan badge secara deklaratif pada favicon yang ditentukan melalui atribut src dengan meneruskan bilangan bulat ke atribut badge. Saat pengguna menginstal aplikasi, badge "diupgrade" ke badge sistem operasi native.

import 'https://unpkg.com/favicon-badge@2.0.0/dist/FavIconBadge.js';

// DOM references.
const favicon = document.querySelector('favicon-badge');
const installButton = document.querySelector('button');

// Feature detection.
const supportsAppBadge = 'setAppBadge' in navigator;

let setAppBadge
;

// For the demo simply set the badge between [0, 9].
let i
= 0;
const getAppBadgeValue = () => {
 
if (i > 9) {
    i
= 0;
 
}
 
return i++;
};

// Set the badge on the favicon.
const setAppBadgeFavicon = (value) => {
  favicon
.badge = value;
};

// Set the native operating system badge.
const setAppBadgeNative = (value) => {
  navigator
.setAppBadge(value);
}

// If the app is installed and the Badging API is supported,
// set the badge on the native operating system. Else, fall
// back to the favicon.
if (
  matchMedia
('(display-mode: standalone)').matches &&
  supportsAppBadge
) {
  setAppBadge
= setAppBadgeNative;
} else {
  setAppBadge
= setAppBadgeFavicon;
}

// Set a new badge every second.
setInterval
(() => {
  setAppBadge
(getAppBadgeValue());
}, 1000);

// If installation is supported…
if ('BeforeInstallPromptEvent' in window) {
  let installEvent
= null;
 
const onInstall = () => {
   
// After installation, "upgrade" to the native operating system badge.
    installButton
.disabled = true;
    installEvent
= null;
   
if (supportsAppBadge) {
      favicon
.badge = false;
      setAppBadge
= setAppBadgeNative;
   
}
 
};

 
// …listen for the `beforeinstallprompt` event.
  window
.addEventListener('beforeinstallprompt', (event) => {
    event
.preventDefault();
    installEvent
= event;
    installButton
.disabled = false;
 
});

 
// Deal with installation.
  installButton
.addEventListener('click', async () => {
   
if (!installEvent) {
     
return;
   
}
    installEvent
.prompt();
   
const result = await installEvent.userChoice;
   
if (result.outcome === 'accepted') {
      onInstall
();
   
}
 
});

 
// Listen for the `appinstalled` in case the user installs the app manually.
  window
.addEventListener('appinstalled', (event) => {
    onInstall
();
 
});
}

Bacaan lebih lanjut

Demo

<!DOCTYPE html>
<html lang="en">
 
<head>
   
<meta charset="utf-8" />
   
<meta name="viewport" content="width=device-width, initial-scale=1" />
   
<link rel="manifest" href="manifest.json" />
   
<title>How to create an app badge</title>
   
<link rel="stylesheet" href="style.css" />
   
<!-- TODO: Devsite - Removed inline handlers -->
   
<!-- <script>
      if ('serviceWorker' in navigator) {
        window.addEventListener('load', async () => {
          const registration = await navigator.serviceWorker.register(
            'sw.js',
          );
          console.log(
            'Service worker registered for scope',
            registration.scope,
          );
        });
      }
    </script>
    <script src="script.js" type="module"></script> -->

 
</head>
 
<body>
   
<h1>How to create an app badge</h1>
   
<ol>
     
<li>
        Watch the favicon. You should see a counter that updates each second
        integrated into the favicon.
       
<img
         
src="../favicon.png"
         
style="width: 250px; height: auto"
         
width="528"
         
height="74"
         
alt="Favicon with counter."
       
/>
     
</li>
     
<li>
        Install the app by clicking the button below. After the installation,
        the button is disabled.
       
<p>
         
<button disabled type="button">Install</button>
       
</p>
     
</li>
     
<li>
        Watch the app icon in your operating system's task bar. You should see a
        counter that updates each second as an app badge.
       
<img
         
src="../app-badge.png"
         
style="width: 80px; height: auto"
         
width="282"
         
height="388"
         
alt="App badge with counter."
       
/>
     
</li>
   
</ol>
   
<favicon-badge src="../favicon.svg" textColor="#fff" badge="" />
 
</body>
</html>

        html
{
 
box-sizing: border-box;
 
font-family: system-ui, sans-serif;
 
color-scheme: dark light;
}

*, *:before, *:after {
 
box-sizing: inherit;
}

body
{
 
margin: 1rem;
}

img
{
 
height: auto;
 
max-width: 100%;
 
display: block;
}
       

       
import 'https://unpkg.com/favicon-badge@2.0.0/dist/FavIconBadge.js';

// The `