Cara menambahkan UI Penginstalan yang Lebih Kaya

App store memberikan ruang bagi developer untuk menampilkan aplikasi mereka sebelum penginstalan, dengan screenshot dan informasi teks yang membantu pengguna membuat pilihan untuk menginstal aplikasi. UI penginstalan yang lebih lengkap menyediakan ruang yang serupa bagi developer aplikasi web untuk mengundang pengguna menginstal aplikasi mereka, langsung dari browser. UI yang ditingkatkan ini tersedia di lingkungan Chrome untuk Android dan desktop.

Dialog default

Lihat contoh di bawah untuk pengalaman default, yang tidak memberikan konteks yang memadai.

Dialog penginstalan default browser untuk desktop.
Dialog penginstalan default di desktop


Dialog penginstalan default browser untuk seluler.
Dialog penginstalan default di seluler

UI Penginstalan yang Lebih Lengkap

Untuk mendapatkan dialog UI Instal yang Lebih Lengkap, bukan perintah default kecil biasa, tambahkan kolom screenshots dan description ke manifes web Anda. Lihat contoh Squoosh.app di bawah ini:

UI Instal yang Lebih Lengkap di desktop dan perangkat seluler
UI penginstalan yang lebih lengkap di desktop dan perangkat seluler.

Dialog Richer Install UI terdiri dari konten kolom description dan screenshots dalam manifes web.

Untuk memicu dialog, Anda hanya perlu menambahkan minimal satu screenshot untuk faktor bentuk yang sesuai, tetapi sebaiknya juga tambahkan deskripsi. Lihat detail untuk bidang tersebut di bawah.

Screenshot

Tangkapan layar benar-benar membuat hal yang 'lebih kaya' ke UI penginstalan baru dan kami sangat merekomendasikan penggunaannya. Dalam manifes, Anda menambahkan anggota screenshots, yang menggunakan array yang memerlukan setidaknya satu gambar dan Chrome akan menampilkan hingga delapan gambar. Contohnya ditampilkan di bawah ini.

 "screenshots": [
   
{
     
"src": "source/image1.png",
     
"sizes": "640x320",
     
"type": "image/png",
     
"form_factor": "wide",
     
"label": "Wonder Widgets"
   
}
]

Screenshot harus memenuhi kriteria berikut:

  • Lebar dan tinggi minimal 320 piksel dan maksimal 3.840 piksel.
  • Dimensi maksimum tidak boleh lebih dari 2,3 kali panjang dimensi minimum.
  • Semua screenshot dengan nilai faktor bentuk yang sama harus memiliki rasio aspek yang identik.
  • Hanya format gambar JPEG dan PNG yang didukung.
  • Hanya delapan screenshot yang akan ditampilkan. Jika lebih banyak ditambahkan, agen pengguna akan mengabaikannya.

Selain itu, Anda perlu menyertakan ukuran dan jenis gambar agar dapat dirender dengan benar. Lihat demo ini.

form_factor menunjukkan kepada browser apakah screenshot akan muncul di lingkungan desktop (wide) atau di perangkat seluler (narrow).

Deskripsi

Anggota description menjelaskan aplikasi di perintah penginstalan, untuk mengundang pengguna agar mempertahankan aplikasi.

Dialog akan ditampilkan meskipun tanpa description, tetapi sangat dianjurkan. Ada batas maksimum mulai setelah 7 baris teks (sekitar 324 karakter) dan deskripsi yang lebih panjang akan dipotong dan elipsis ditambahkan (seperti yang dapat Anda lihat dalam contoh ini).

{

"description": "Compress and compare images with different codecs
right in your browser
."
}
Deskripsi ditambahkan
Deskripsi ditambahkan.
Deskripsi lebih panjang yang terpotong.
Deskripsi yang lebih panjang akan terpotong.

Deskripsi akan ditampilkan di bagian atas perintah penginstalan.

Anda mungkin telah melihat dari screenshot bahwa dialog penginstalan juga mencantumkan asal aplikasi. Origin yang terlalu panjang untuk muat UI akan terpotong. Hal ini juga dikenal sebagai eliding dan digunakan sebagai langkah keamanan untuk melindungi pengguna.

Bacaan lebih lanjut

Demo

<!DOCTYPE html>
<html lang="en">
 
<head>
   
<meta charset="utf-8" />
   
<meta name="viewport" content="width=device-width, initial-scale=1" />
   
<meta name="color-scheme" content="dark light" />
   
<link rel="manifest" href="manifest.json" />
   
<title>How to add Richer Install UI to your web app</title>
   
<!-- TODO: Devsite - Removed inline handlers -->
   
<!-- <script>
      if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
          navigator.serviceWorker.register('sw.js');
        });
      }
    </script>
    <script type="module" src="script.js"></script> -->

 
</head>
 
<body>
   
<h1>How to add Richer Install UI to your web app</h1>
   
<ol>
     
<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>
        When you click on install a dialog similar to the ones from app stores
        will be displayed.
     
</li>
     
<li>
        The dialog includes the `description` and `screenshots` set in the app
        manifest.
     
</li>
     
<li>
        Screenshots should be different depending if the app is being installed
        on a mobile or desktop device, according to the `form_factor` value set
        for the screenshots on the manifest
     
</li>
   
</ol>
 
</body>
</html>

       
// The install button.
const installButton = document.querySelector('button');

// Only relevant for browsers that support installation.
if ('BeforeInstallPromptEvent' in window) {
 
// Variable to stash the `BeforeInstallPromptEvent`.
  let installEvent
= null;

 
// Function that will be run when the app is installed.
 
const onInstall = () => {
   
// Disable the install button.
    installButton
.disabled = true;
   
// No longer needed.
    installEvent
= null;
 
};

  window
.addEventListener('beforeinstallprompt', (event) => {
   
// Do not show the install prompt quite yet.
    event
.preventDefault();
   
// Stash the `BeforeInstallPromptEvent` for later.
    installEvent
= event;
   
// Enable the install button.
    installButton
.disabled = false;
 
});

  installButton
.addEventListener('click', async () => {
   
// If there is no stashed `BeforeInstallPromptEvent`, return.
   
if (!installEvent) {
     
return;
   
}
   
// Use the stashed `BeforeInstallPromptEvent` to prompt the user.
    installEvent
.prompt();
   
const result = await installEvent.userChoice;
   
// If the user installs the app, run `onInstall()`.
   
if (result.outcome === 'accepted') {
      onInstall
();
   
}
 
});

 
// The user can decide to ignore the install button
 
// and just use the browser prompt directly. In this case
 
// likewise run `onInstall()`.
  window
.addEventListener('appinstalled', () => {
    onInstall
();
 
});
}