Praktik terbaik izin web

Permintaan izin adalah mekanisme utama web untuk melindungi kemampuan canggih yang berpotensi berbahaya bagi privasi dan keamanan pengguna. Dengan perintah izin, browser bertujuan untuk memastikan bahwa pengguna ingin mengizinkan situs peminta mengakses kemampuan yang dimaksud. Permintaan izin digunakan untuk sejumlah API, termasuk pengambilan media (kamera dan mikrofon), geolokasi, akses penyimpanan, MIDI, dan notifikasi (lihat dokumentasi Permissions API di MDN untuk informasi selengkapnya).

Panduan ini menguraikan praktik terbaik untuk menampilkan permintaan izin kepada pengguna berdasarkan statistik penggunaan Chrome dan riset pengguna. Saat mengikuti praktik terbaik ini, pengguna akan melihat lebih sedikit perintah yang tidak perlu, sehingga developer mendapatkan lebih sedikit keputusan "blokir". Artikel ini ditutup dengan beberapa pola kode untuk menggunakan API yang dibatasi izin, dan praktik terbaik untuk membantu pengguna memulihkan dari status yang diblokir.

Praktik terbaik perintah

Anda harus meminta izin setelah interaksi pengguna, pada saat pengguna dapat memahami alasan Anda meminta, dan manfaat yang akan mereka dapatkan jika mengizinkan. Jika memungkinkan, Anda harus mengizinkan pengguna menggunakan cara alternatif untuk mencapai fungsi yang sama. Sebagai panduan umum, meminta izin lebih jarang dengan memilih momen saat Anda meminta dengan cermat akan mengurangi kemungkinan pengguna Anda mengalami status pemblokiran yang sulit dipulihkan. Praktik terbaik berikut menawarkan detail selengkapnya tentang setiap saran ini.

Jangan pernah meminta saat halaman dimuat atau tanpa interaksi pengguna

Meminta izin kepada pengguna saat halaman dimuat sama dengan meminta informasi sensitif kepada pelanggan saat mereka masuk ke toko fisik. Melihat permintaan izin (mungkin di antara beberapa permintaan lain untuk pendaftaran newsletter dan izin cookie) adalah pengalaman yang sangat mengganggu. Pengguna tidak akan memahami alasan mereka diminta dan manfaat yang akan mereka dapatkan.

Meskipun aplikasi web Anda tidak dapat berfungsi tanpa akses ke kemampuan tertentu, Anda harus memberi pengguna kesempatan untuk memahami alasan diperlukannya kemampuan tersebut. Misalnya, dengan mendahului perintah izin dengan perintah Anda sendiri yang menjelaskan kebutuhan dan memberi pengguna pilihan (misalnya, jika memungkinkan, dengan menyediakan cara alternatif untuk mencapai fungsi yang sama). Jika Anda tidak dapat memikirkan waktu yang lebih tepat untuk meminta izin selain saat pemuatan halaman, ada beberapa contoh di panduan ini.

Situasi yang sama buruknya untuk meminta izin adalah tanpa interaksi pengguna sebelumnya (juga dikenal sebagai aktivasi pengguna sementara). Telemetri Chrome menunjukkan bahwa 77% permintaan izin di Chrome Desktop ditampilkan tanpa sinyal niat pengguna yang sangat mendasar sehingga hanya 12% permintaan tersebut yang diizinkan. Setelah interaksi pengguna, izinkan tarif meningkat menjadi 30%. Jadi, hanya minta izin setelah pengguna berinteraksi dengan halaman dalam beberapa bentuk.

Hanya minta jika pengguna dapat memahami alasan Anda meminta

Keputusan izin sering kali merupakan keputusan privasi. Berdasarkan framework integritas kontekstual, kami tahu bahwa keputusan privasi sangat kontekstual. Memahami alasan akses diperlukan dapat dianggap sebagai aspek utama dari hal ini. Oleh karena itu, Anda hanya boleh meminta kemampuan yang diperlukan untuk memberikan nilai kepada pengguna (dan jika pengguna cenderung setuju dengan Anda bahwa mereka memang akan mendapatkan nilai). Selain itu, Anda harus meminta izin pada saat sudah jelas bagi pengguna mengapa kemampuan tersebut bermanfaat. Tujuannya adalah untuk memudahkan pengguna memahami konteks penggunaan.

Riset pengguna kami menunjukkan bahwa pengguna cenderung lebih banyak mengizinkan akses saat mereka memahami alasan situs meminta akses dan juga merasakan manfaatnya. Kami juga mendapati bahwa pengguna ingin menjelajahi situs yang tidak dikenal terlebih dahulu untuk lebih memahami nilai yang dapat mereka dapatkan sebagai imbalan atas pemberian akses. Sementara itu, mereka sering kali menutup atau mengabaikan permintaan izin. Dengan izin satu kali, mereka mungkin mengizinkan satu kunjungan terlebih dahulu. Aplikasi Anda harus mendukung perilaku ini.

Berikan cara alternatif untuk mencapai fungsi yang sama jika memungkinkan

Hasil dari beberapa kemampuan mungkin tidak membantu pengguna. Misalnya, geolokasi perangkat desktop tanpa sensor GPS dapat menampilkan lokasi yang salah karena pengguna terhubung ke VPN. Pengguna lain mungkin tidak ingin memberikan akses papan klip karena mereka lebih suka tetap mengontrol dan memicu peristiwa ini dengan kombinasi tombol secara manual. Dalam situasi seperti ini, penting untuk menyediakan cara alternatif untuk mencapai hasil yang sama. Misalnya, jika meminta izin geolokasi, tawarkan kolom teks tempat pengguna dapat memasukkan kode pos atau alamat sendiri. Dengan papan klip, pastikan elemen yang akan disalin juga dapat dipilih dan disalin melalui kombinasi tombol atau menu konteks. Dengan notifikasi, tawarkan agar orang menerima email, bukan notifikasi push.

Pola yang berguna adalah menggunakan UI alternatif juga sebagai penjelasan mengapa akses dapat bermanfaat. Pengguna yang melihat opsi untuk memasukkan lokasi di samping tombol yang memicu geolocation API akan merasa dapat mengontrol apa yang akan terjadi, karena mereka memahami bahwa mereka juga dapat mengetik alamat mereka. Demikian pula, jika ada pilihan antara menerima notifikasi melalui push atau email, atau bergabung ke rapat tanpa mengizinkan akses kamera dan mikrofon, pengguna akan lebih memahami konsekuensi yang mereka buat secara lebih alami.

Jangan sampai akun Anda diblokir karena sulit untuk memulihkannya

Setelah pengguna memutuskan untuk tidak mengizinkan akses ke kemampuan yang dibatasi izin secara permanen, browser akan mematuhi keputusan tersebut. Jika memungkinkan untuk terus meminta akses, situs yang berniat jahat akan terus membombardir pengguna dengan permintaan. Oleh karena itu, pemulihan dari status kemampuan yang diblokir secara sengaja memerlukan sedikit upaya dari pengguna. Oleh karena itu, hindari meminta izin kepada pengguna dalam situasi saat kemungkinan banyak pengguna tidak akan mengizinkan akses.

Cara umum untuk melakukannya adalah menggunakan yang disebut pra-perintah, tempat Anda menjelaskan kepada pengguna apa yang akan terjadi dan alasan aplikasi Anda memerlukan kemampuan yang akan Anda minta. Anda hanya boleh memicu permintaan izin browser jika pengguna bereaksi positif terhadap pra-permintaan tersebut. Ada situasi saat pengguna mungkin perlu memulihkan dari status tersebut secara sah. Lihat bagian Membantu pengguna memulihkan dari status diblokir untuk mengetahui informasi selengkapnya.

Perhatikan konten pihak ketiga

Ada sumber permintaan izin yang tidak terduga yang perlu diperhatikan. Jika Anda menyertakan skrip pihak ketiga di situs, skrip tersebut dapat memicu dialog izin yang tidak ingin Anda tampilkan. Hal ini dapat memengaruhi pengalaman pengguna terhadap situs Anda, terutama jika perintah tersebut tidak mengikuti praktik terbaik yang telah diuraikan. Agar tetap dapat mengontrol pengalaman pengguna, Anda harus membaca dokumentasi library dan skrip pihak ketiga yang Anda tambahkan ke kode Anda sendiri dengan cermat.

Kapan harus meminta izin

Berikut adalah beberapa contoh momen yang cocok untuk meminta izin, dengan mengikuti praktik terbaik yang telah dijelaskan:

  • Setelah pengguna mengklik tombol yang bertuliskan "gunakan lokasi saya" di samping kolom formulir untuk memasukkan alamat secara manual.
  • Setelah pengguna berlangganan channel video atau postingan, dan mengklik tombol afirmatif pada dialog yang menjelaskan bahwa info terbaru dapat dikirim sebagai email atau notifikasi ke ponsel atau desktop mereka.
  • Setelah pengguna membuka halaman yang mempersiapkannya untuk bergabung ke panggilan video dan menjawab dengan tegas bahwa ia ingin terlihat dan didengar dalam perintah awal (lihat studi kasus dari Google Meet ini).

Pola kode untuk meminta izin

Mendapatkan izin untuk menggunakan API dilakukan melalui berbagai cara, bergantung pada API. Beberapa API (biasanya yang lebih lama) menggunakan model saat browser secara otomatis meminta izin saat pertama kali Anda mencoba menggunakan API. Salah satu contohnya adalah Geolocation API saat memanggil navigator.geolocation.getCurrentPosition().

try {
  navigator
.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
  console
.error(error);
}

API lain menggunakan model yang mengharuskan Anda meminta izin secara eksplisit terlebih dahulu menggunakan metode statis. Contohnya adalah Notification.requestPermission() untuk mengizinkan notifikasi, atau DeviceOrientationEvent.requestPermission() yang kurang umum, yang merupakan bagian dari Device Orientation Events API. Perhatikan bahwa beberapa browser mungkin otomatis memberikan izin ke API tertentu. Misalnya, Chrome selalu mengizinkan akses ke orientasi perangkat, sedangkan Safari menampilkan perintah.

const result = await DeviceOrientationEvent.requestPermission();
console
.log(`The user's decision when prompted to use the Device Orientation
Events API was: ${result}.`);
if (result === 'granted') {
 
/* Use the API. */
}

Cara memeriksa status izin

Untuk memeriksa apakah Anda dapat menggunakan API tertentu, gunakan metode navigator.permissions.query() dari Permissions API.

const result = await navigator.permissions.query({ name: 'geolocation' });
console
.log(`The result of querying for the Geolocation API is:
$
{result.state}.`);
if (result.state === 'granted') {
 
// Use the API.
}

Dukungan Browser

  • Chrome: 43.
  • Edge: 79.
  • Firefox: 46.
  • Safari: 16.

Sumber

Membantu pengguna memulihkan dari status diblokir

Untuk membantu pengguna memecahkan masalah akses, deteksi bahwa mereka memblokir akses menggunakan Permissions API dan tawarkan panduan tentang cara mengubah setelan mereka. Misalnya, saat pengguna berinteraksi dengan elemen UI yang terkait dengan kemampuan yang dibatasi izin, gunakan pola yang dijelaskan di bagian sebelumnya dan buka dialog pemecahan masalah. Langkah-langkah persis untuk mengubah status izin bervariasi menurut browser, jadi sebaiknya Anda menawarkan deskripsi yang cocok berdasarkan string agen pengguna dan untuk browser yang paling sering digunakan di produk Anda.

Di Chrome, pengguna harus membuka Kontrol Situs dengan mengklik ikon "setel" di sisi kiri kolom URL. Di sini, mereka dapat mengaktifkan izin masing-masing. Dalam beberapa kasus, mereka mungkin harus memuat ulang halaman, sebelum menggunakan kemampuan tersebut. Dalam hal ini, panel pesan akan ditampilkan di bagian atas jendela yang menawarkan untuk memuat ulang saat mengklik tombol yang sesuai.

Kontrol situs di browser Chrome.

Perintah muat ulang setelah mengubah izin menggunakan kontrol situs.

UI serupa untuk mengontrol izin ada di browser lain (misalnya, lihat cara kerjanya di Firefox).