Manifes aplikasi web adalah file yang Anda buat yang memberi tahu browser cara Anda ingin konten web ditampilkan sebagai aplikasi di sistem operasi. Manifes dapat menyertakan informasi dasar seperti nama, ikon, dan warna tema aplikasi; preferensi lanjutan, seperti orientasi yang diinginkan dan pintasan aplikasi; serta metadata katalog, seperti screenshot.
Setiap PWA harus menyertakan satu manifes per aplikasi, biasanya dihosting di folder root, dan ditautkan di semua halaman HTML tempat PWA Anda dapat diinstal. Ekstensi resminya adalah .webmanifest
, sehingga Anda dapat memberi nama manifes seperti app.webmanifest
.
Menambahkan manifes aplikasi web ke PWA Anda
Untuk membuat manifes aplikasi web, buat file teks dengan objek JSON yang berisi setidaknya kolom name
dengan nilai string:
app.webmanifest:
{
"name": "My First Application"
}
Namun, membuat file saja tidak cukup, browser juga harus mengetahui keberadaannya.
Menautkan ke manifes
Agar browser mengetahui manifes aplikasi web Anda, Anda harus menautkannya ke PWA menggunakan elemen HTML <link>
dan atribut rel
yang ditetapkan ke manifest
di semua halaman HTML PWA Anda. Cara ini mirip dengan cara Anda menautkan stylesheet CSS ke dokumen.
index.html:
<html lang="en">
<title>This is my first PWA</title>
<link rel="manifest" href="/app.webmanifest">
Men-debug manifes
Untuk memastikan manifes disiapkan dengan benar, Anda dapat menggunakan Inspector di Firefox dan DevTools di setiap browser berbasis Chromium.
Untuk browser Chromium
Di DevTools
- Di panel kiri, pada bagian Application, pilih Manifest.
- Periksa kolom manifes seperti yang diuraikan oleh browser.
Untuk Firefox
- Buka Inspector.
- Buka tab Aplikasi.
- Pilih opsi Manifes di panel kiri.
- Periksa kolom manifes seperti yang diuraikan oleh browser.
Mendesain pengalaman PWA
Setelah PWA Anda terhubung ke manifesnya, saatnya mengisi kolom lainnya untuk menentukan pengalaman bagi pengguna.
Kolom dasar
Kumpulan kolom pertama mewakili informasi inti tentang PWA Anda. File ini digunakan untuk mem-build ikon dan jendela PWA yang diinstal serta menentukan cara pengaktifannya. Bagian-bagian tersebut adalah:
name
- Nama lengkap PWA Anda. Nama akan muncul bersama ikon di layar utama, peluncur, dok, atau menu sistem operasi.
short_name
- Opsional, nama PWA Anda yang lebih singkat, digunakan jika tidak ada cukup ruang untuk menampilkan nilai lengkap kolom
name
. Pastikan panjangnya tidak lebih dari 12 karakter untuk meminimalkan kemungkinan pemotongan. icons
- Array objek ikon dengan kolom
src
,type
,sizes
, danpurpose
opsional, yang menjelaskan gambar yang harus merepresentasikan PWA. start_url
- URL yang harus dimuat PWA saat pengguna memulainya dari ikon yang diinstal. Jalur absolut direkomendasikan, jadi jika halaman beranda PWA Anda adalah root situs, Anda dapat menetapkannya ke'/' untuk membukanya saat aplikasi dimulai. Jika Anda tidak memberikan URL awal, browser dapat menggunakan URL tempat PWA diinstal sebagai awal. Halaman tersebut dapat berupa deep link, seperti detail produk, bukan layar utama Anda.
display
- Salah satu dari
fullscreen
,standalone
,minimal-ui
, ataubrowser
, yang menjelaskan cara OS menggambar jendela PWA. Anda dapat membaca lebih lanjut berbagai mode tampilan di Bab Desain Aplikasi. Sebagian besar kasus penggunaan menerapkanstandalone
. id
- String yang secara unik mengidentifikasi PWA ini dengan PWA lain yang mungkin dihosting di origin yang sama. Jika tidak ditetapkan,
start_url
akan digunakan sebagai nilai penggantian. Perlu diingat bahwa dengan mengubahstart_url
pada masa mendatang (seperti saat mengubah nilai string kueri), Anda dapat menghapus kemampuan browser untuk mendeteksi bahwa PWA sudah diinstal.
Ikon
Ikon PWA Anda adalah identitas visualnya di seluruh perangkat pengguna saat diinstal, jadi penting untuk menentukan setidaknya satu ikon. Karena properti icons
adalah kumpulan objek ikon, Anda dapat menentukan beberapa ikon dalam berbagai format untuk memberikan pengalaman ikon terbaik bagi pengguna. Setiap browser akan memilih satu atau beberapa ikon berdasarkan kebutuhannya dan sistem operasi tempatnya diinstal, ikon yang lebih mendekati spesifikasi yang diperlukan.
Jika Anda hanya perlu memilih satu ukuran ikon, ukurannya harus 512x512 piksel. Namun, sebaiknya berikan lebih banyak ukuran, termasuk gambar berukuran 192x192, 384x384, dan 1024x1024 piksel.
"icons": [
{
"src": "icons/512.png",
"type": "image/png",
"sizes": "512x512"
},
{
"src": "icons/1024.png",
"type": "image/png",
"sizes": "1024x1024"
}
]
Jika Anda tidak menyediakan ikon atau ikon tidak dalam ukuran yang direkomendasikan, di beberapa platform Anda tidak akan lulus kriteria penginstalan. Di platform lain, ikon akan otomatis dibuat, misalnya dari screenshot PWA atau dengan menggunakan ikon generik.
Ikon yang dapat disamarkan
Beberapa sistem operasi, seperti Android, menyesuaikan ikon dengan berbagai ukuran dan bentuk. Misalnya, di Android 12, produsen atau setelan yang berbeda dapat mengubah bentuk ikon dari lingkaran menjadi persegi hingga persegi dengan sudut membulat. Untuk mendukung jenis ikon adaptif ini, Anda dapat menyediakan ikon yang dapat disamarkan menggunakan kolom purpose
.
Untuk melakukannya, berikan file gambar persegi yang ikon utamanya berada dalam “zona aman”, yaitu lingkaran yang berpusat di ikon dengan radius 40 persen dari lebar ikon. (Lihat gambar di bawah.) Perangkat yang mendukung ikon yang dapat disamarkan akan menyamarkan ikon Anda sesuai kebutuhan.
Berikut adalah contoh ikon yang dapat disamarkan yang dirender dalam sejumlah bentuk yang biasa digunakan:
Pada gambar berikut, jika Anda menggunakan ikon di sebelah kiri sebagai ikon maskable, Anda akan mendapatkan hasil yang buruk di perangkat saat mask bentuk diterapkan.
Gambar ini dapat digunakan dengan lebih banyak padding.
Ikon maskable harus berukuran minimal 512x512. Setelah dibuat, Anda dapat menambahkannya ke koleksi icons
untuk meningkatkan pengalaman bagi perangkat yang didukung:
"icons": [
{
"src": "/icons/512.png",
"type": "image/png",
"sizes": "512x512"
},
{
"src": "/icons/1024.png",
"type": "image/png",
"sizes": "1024x1024"
},
{
"src": "/icons/512-maskable.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "maskable"
},
]
Umumnya, jika ikon yang dapat disamarkan tidak ditampilkan dengan baik, Anda dapat meningkatkannya dengan menambahkan lebih banyak padding. Maskable.app adalah alat online gratis untuk menguji dan membuat versi ikon yang dapat disamarkan.
Jika ikon Anda memiliki tujuan umum dan dapat disamarkan, Anda dapat menetapkan kolom purpose
ke "any maskable"
. Lihat dokumentasi Manifes Aplikasi Web MDN untuk mengetahui detailnya.
Kolom yang direkomendasikan
Kumpulan kolom berikutnya yang akan disertakan adalah kolom yang akan meningkatkan pengalaman pengguna, meskipun tidak diperlukan untuk penginstalan.
theme_color
- Warna default untuk aplikasi, terkadang memengaruhi cara OS menampilkan situs (misalnya, warna jendela dan panel judul di desktop, atau warna status bar di perangkat seluler). Warna ini dapat diganti oleh elemen
theme-color
<meta>
HTML. background_color
- Warna placeholder yang akan ditampilkan di latar belakang aplikasi sebelum stylesheet-nya dimuat. Safari di iOS dan iPadOS serta sebagian besar browser desktop saat ini mengabaikan kolom ini.
scope
- Mengubah cakupan navigasi PWA, yang memungkinkan Anda menentukan apa yang ditampilkan dan tidak ditampilkan dalam jendela aplikasi yang diinstal. Misalnya, jika Anda menautkan ke halaman di luar cakupan, halaman tersebut akan dirender di browser dalam aplikasi, bukan dalam jendela PWA Anda. Namun, hal ini tidak akan mengubah cakupan pekerja layanan Anda.
Gambar berikutnya menunjukkan cara kolom theme_color
digunakan untuk panel judul di perangkat desktop saat Anda menginstal PWA.
Saat menentukan warna dalam manifes, seperti dalam theme_color
dan background_color
, Anda harus menggunakan warna bernama CSS, seperti salmon
atau orange
, warna RGB seperti #FF5500
, atau fungsi warna tanpa transparansi seperti rgb()
atau hsl()
. Lihat Bab desain aplikasi untuk informasi selengkapnya.
Coba
Layar pembuka
Di beberapa perangkat, gambar statis dirender saat PWA Anda dimuat untuk memberikan masukan langsung kepada pengguna.
Android menggunakan nilai theme_color
, background_color
, dan icon
untuk membuat layar pembuka.
Saat Anda menginstal PWA di Android, perangkat akan membuat layar pembuka dengan informasi yang berasal dari manifes Anda seperti yang terlihat pada diagram berikut.
Di sisi lain, Safari di iOS dan iPadOS tidak menggunakan manifes aplikasi web untuk membuat layar pembuka. Sebagai gantinya, mereka menggunakan gambar yang ditautkan dari elemen <link>
eksklusif yang mirip dengan cara mereka menangani ikon. Lihat Bab Peningkatan untuk mengetahui detail selengkapnya.
Kolom yang diperluas
Kumpulan kolom berikutnya menawarkan informasi tambahan tentang PWA Anda. Semuanya bersifat opsional.
lang
- Tag bahasa yang menentukan bahasa utama nilai manifes, seperti
en
untuk bahasa Inggris,pt-BR
untuk bahasa Portugis Brasil, atauin
untuk bahasa Hindi. dir
- Arah untuk menampilkan kolom manifes yang mendukung arah (seperti
name
,short_name
, dandescription
). Nilai yang valid adalahauto
,ltr
(kiri ke kanan), danrtl
(kanan ke kiri). orientation
- Orientasi yang diinginkan untuk aplikasi setelah diinstal. Game dapat menetapkannya untuk meminta orientasi khusus lanskap. Beberapa nilai diterima, tetapi jika disertakan, biasanya
portrait
ataulandscape
secara eksplisit.
Kolom promosi
Kumpulan kolom keempat memungkinkan Anda memberikan informasi promosi tentang PWA, misalnya, dalam alur penginstalan, listingan, dan hasil penelusuran.
description
- Penjelasan tentang fungsi PWA.
screenshots
- Array objek screenshot dengan
src
,type
, dansizes
(mirip dengan objekicons
) yang dimaksudkan untuk menampilkan PWA. Tidak ada batasan ukuran. categories
- Array kategori yang harus dimiliki PWA untuk digunakan sebagai petunjuk untuk listingan, secara opsional dari daftar kategori yang diketahui. Nilai ini biasanya ditulis dalam huruf kecil.
iarc_rating_id
- Kode sertifikasi International Age Rating Coalition untuk PWA, jika Anda memilikinya. Ini dimaksudkan untuk digunakan guna menentukan usia yang sesuai untuk PWA Anda.
Anda dapat melihat cara kerja kolom promosi ini sekarang. Misalnya, di Android, jika PWA dapat diinstal dan Anda memberikan nilai untuk setidaknya kolom description
dan screenshots
, pengalaman dialog penginstalan akan berubah dari panel info "Tambahkan ke layar utama" yang sederhana, menjadi dialog penginstalan yang lebih lengkap dan mirip dengan dialog dari app store.
Di Android, Anda bisa mendapatkan UI penginstalan yang lebih baik jika memberikan nilai untuk kolom promosi, seperti yang dapat Anda lihat di video berikutnya
Lihat cara kerja kolom promosi ini:
Kolom Kemampuan
Terakhir, ada sejumlah kolom yang terkait dengan berbagai kemampuan yang dapat digunakan PWA Anda di browser yang didukung, seperti kolom shortcuts
, share_target
, display_override
seperti yang kita bahas di Bab Kemampuan. Ada juga kolom, seperti related_apps
dan prefer_related_apps
(lihat Bab deteksi untuk mengetahui informasi selengkapnya), untuk menghubungkan PWA Anda ke aplikasi yang diinstal, sering kali dari app store.
Banyak kolom baru mungkin muncul di masa mendatang saat browser menambahkan lebih banyak kemampuan ke Progressive Web App.