Praktik terbaik izin web

Permintaan izin adalah mekanisme utama web untuk melindungi kemampuan canggih yang berpotensi berbahaya bagi privasi dan keamanan pengguna. Dengan dialog izin, browser bertujuan untuk memastikan bahwa pengguna bermaksud mengizinkan situs yang meminta 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 mengetahui 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 menemui lebih sedikit perintah yang tidak perlu yang tidak perlu, sehingga developer mendapatkan lebih sedikit keputusan "blokir". Artikel ini diakhiri dengan beberapa pola kode untuk menggunakan API yang dibatasi izin, dan praktik terbaik untuk membantu pengguna melakukan pemulihan dari status yang diblokir.

Praktik terbaik perintah

Anda harus meminta izin setelah interaksi pengguna, saat pengguna dapat memahami alasan Anda mengajukan permintaan, dan manfaat yang akan mereka dapatkan dengan mengizinkannya. Jika memungkinkan, Anda harus mengizinkan pengguna menggunakan cara alternatif untuk menyelesaikan fungsi yang sama. Sebagai pedoman umum, minta izin lebih jarang dengan memilih momen saat Anda meminta izin dengan cermat mengurangi kemungkinan pengguna sampai ke status diblokir yang sulit dipulihkan. Praktik terbaik berikut menawarkan detail selengkapnya tentang setiap saran ini.

Jangan pernah bertanya saat pemuatan halaman atau tanpa interaksi pengguna

Meminta izin kepada pengguna saat pemuatan halaman sama dengan meminta informasi sensitif kepada pelanggan saat mereka masuk ke toko fisik. Melihat permintaan izin (mungkin di antara beberapa dialog lain untuk pendaftaran newsletter dan izin cookie) adalah pengalaman yang sangat mengecewakan. Pengguna tidak akan memahami mengapa mereka ditanya dan bagaimana mereka akan mendapatkan manfaat.

Meskipun aplikasi web tidak dapat berfungsi tanpa akses ke kemampuan tertentu, Anda harus memberikan kesempatan kepada pengguna untuk memahami mengapa hal itu diperlukan. Misalnya, dengan menampilkan dialog izin dengan perintah Anda sendiri yang menjelaskan kebutuhan dan memberikan pilihan kepada pengguna (misalnya, jika memungkinkan, dengan memberikan cara alternatif untuk menyelesaikan fungsi yang sama). Jika Anda tidak dapat memikirkan waktu yang tepat untuk meminta izin daripada saat pemuatan halaman, ada beberapa contoh nanti dalam panduan ini.

Situasi yang juga buruk 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% dari perintah tersebut yang diizinkan. Setelah interaksi pengguna, izinkan rasio naik menjadi 30%. Jadi, hanya minta izin setelah pengguna berinteraksi dengan halaman dalam bentuk tertentu.

Tanyakan hanya ketika pengguna dapat memahami alasan Anda bertanya

Keputusan izin sering kali merupakan keputusan privasi. Berdasarkan framework integritas kontekstual, kami tahu bahwa keputusan privasi bersifat sangat kontekstual. Memahami alasan diperlukan akses dapat dianggap sebagai aspek utama dari hal ini. Oleh karena itu, sebaiknya hanya minta kemampuan yang Anda perlukan 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 yang jelas bagi pengguna mengapa kemampuan tersebut membantu. Tujuannya adalah memudahkan pengguna untuk memahami konteks penggunaan.

Riset pengguna kami menunjukkan bahwa pengguna jauh lebih mungkin 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 peroleh sebagai imbalan atas pemberian izin akses. Sementara itu, admin akan sering menutup atau mengabaikan dialog izin. Dengan izin satu kali, mereka mungkin mengizinkan satu kali kunjungan terlebih dahulu. Aplikasi Anda harus mendukung perilaku ini.

Menyediakan 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 tersebut terhubung ke VPN. Pengguna lain mungkin tidak ingin memberikan akses papan klip karena mereka memilih untuk tetap memegang kendali dan memicu peristiwa ini dengan kombinasi tombol secara manual. Dalam situasi seperti ini, penting untuk memberikan cara alternatif guna 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 kunci atau menu konteks. Dengan notifikasi, tawarkan agar orang-orang menerima email, bukan notifikasi push.

Pola yang berguna adalah menggunakan UI alternatif sebagai penjelasan mengapa akses dapat bermanfaat. Pengguna yang melihat opsi untuk memasukkan lokasi di samping tombol yang memicu geolokasi API akan merasa memegang kendali atas apa yang akan terjadi karena mereka mengerti bahwa mereka juga dapat mengetik alamat. 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 lakukan.

Jangan sampai diri Anda diblokir, sulit untuk memulihkan diri dari

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 tidak sopan akan terus membombardir pengguna dengan perintah. Oleh karena itu, pemulihan status kemampuan yang diblokir sengaja memerlukan sedikit upaya dari pengguna. Oleh karena itu, hindari meminta izin kepada pengguna dalam situasi yang kemungkinan besar tidak akan mengizinkan akses oleh banyak pengguna.

Cara umum untuk melakukannya adalah dengan menggunakan pre-prompt, yang menjelaskan kepada pengguna apa yang akan terjadi dan mengapa aplikasi memerlukan kemampuan yang akan Anda minta. Anda dapat memicu dialog izin browser hanya jika pengguna bereaksi positif terhadap pra-perintah tersebut. Ada situasi saat pengguna mungkin perlu memulihkan diri dari status tersebut. Lihat bagian Membantu pengguna pulih dari status diblokir untuk mengetahui informasi selengkapnya.

Perhatikan konten pihak ketiga

Ada sumber dialog izin yang tidak terduga yang harus 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 di situs Anda, terutama jika perintah tersebut tidak mengikuti praktik terbaik yang telah diuraikan. Agar tetap dapat mengontrol pengalaman pengguna, Anda harus membaca dengan cermat dokumentasi library dan skrip pihak ketiga yang ditambahkan ke kode Anda sendiri.

Kapan harus meminta izin

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

  • Setelah pengguna mengklik tombol yang bertuliskan "gunakan lokasi saya" di samping kolom formulir untuk memasukkan alamat secara manual.
  • Setelah pengguna subscribe ke channel video atau postingan, dan mengklik tombol afirmatif pada dialog yang menjelaskan bahwa update dapat dikirimkan sebagai email atau notifikasi ke ponsel atau desktop mereka.
  • Setelah pengguna tiba di halaman yang mempersiapkan mereka untuk bergabung ke panggilan video dan menjawab dengan tegas bahwa mereka ingin dilihat dan didengar dengan segera (lihat studi kasus dari Google Meet ini).

Pola kode untuk meminta izin

Mendapatkan izin untuk menggunakan API dapat dilakukan melalui berbagai cara, bergantung pada API tersebut. Beberapa API (biasanya lebih lama) menggunakan model yang membuat browser otomatis meminta izin saat pertama kali Anda mencoba menggunakan API tersebut. 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 memungkinkan Anda secara eksplisit meminta izin terlebih dahulu menggunakan metode statis. Contoh yang baik adalah Notification.requestPermission() untuk mengizinkan notifikasi, atau DeviceOrientationEvent.requestPermission() yang kurang umum, yang merupakan bagian dari Device Orientation Events API. Perlu diperhatikan bahwa beberapa browser mungkin secara 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

  • 43
  • 79
  • 46
  • 16

Sumber

Membantu pengguna pulih dari status diblokir

Untuk membantu pengguna memecahkan masalah akses, deteksi bahwa mereka memblokir akses menggunakan Permissions API dan menawarkan panduan tentang cara mengubah setelan. 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 persisnya untuk mengubah status izin bervariasi menurut browser, sehingga Anda mungkin ingin menawarkan deskripsi yang cocok berdasarkan string agen pengguna dan untuk browser yang paling umum digunakan di produk Anda.

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

Kontrol situs di browser Chrome.

Perintah muat ulang setelah mengubah izin menggunakan kontrol situs.

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