Web izinleriyle ilgili en iyi uygulamalar

İzin istemleri, kullanıcıların gizliliği ve güvenliği açısından tehlikeli olabilecek güçlü özellikleri koruyan web'in ana mekanizmasıdır. İzin istemleriyle tarayıcılar, kullanıcının istekte bulunan web sitesinin söz konusu özelliğe erişmesine izin vermeyi amaçladığından emin olmayı amaçlar. İzin istemleri, medya yakalama (kamera ve mikrofon), coğrafi konum, depolama erişimi, MIDI ve bildirimler dahil olmak üzere çeşitli API için kullanılır (daha fazla bilgi için MDN'deki Permissions API dokümanlarına bakın).

Bu kılavuzda, Chrome kullanım istatistiklerine ve kullanıcı araştırmalarına dayalı olarak kullanıcılara izin istemleri göstermeyle ilgili en iyi uygulamalar ana hatlarıyla açıklanmaktadır. Kullanıcılar bu en iyi uygulamaları izlerken daha az sayıda gereksiz istemle karşılaşacaktır. Bu, geliştiricilerin daha az "engelleme" kararı almasına neden olacaktır. Makalenin sonunda, izinli API'lerle çalışmaya yönelik bazı kod kalıpları ve kullanıcıların engellenen bir durumdan kurtarmasına yardımcı olacak en iyi uygulamalar yer almaktadır.

En iyi uygulamaları isteme

Bir kullanıcı etkileşiminden sonra, kullanıcıların neden istediğinizi ve izin vermenin ne gibi bir fayda sağlayacağını anlaması için izin istemelisiniz. Mümkün olduğunda, kullanıcıların aynı işlevi sağlamak için alternatif yöntemler kullanmasına izin vermelisiniz. Genel bir kural olarak, izin istediğiniz anları dikkatli bir şekilde seçerek daha seyrek izin istemek, kullanıcılarınızın iyileşmesi zor olan engellenmiş bir duruma geçme olasılığını azaltır. Aşağıdaki en iyi uygulamalar, bu önerilerin her biri hakkında daha fazla ayrıntı sunmaktadır.

Sayfa yüklenirken veya kullanıcı etkileşimi olmadan hiçbir zaman sorma

Sayfa yüklemede kullanıcılardan izin isteme, fiziksel mağazaya giren müşteriden hassas bir bilgi istemeye eşdeğerdir. İzin istemini görmek (muhtemelen bültene kaydolma ve çerez izni ile ilgili diğer birkaç istemle birlikte) son derece rahatsız edici bir deneyimdir. Kullanıcılar neden kendilerine sorulduğunu ve nasıl faydalı olacaklarını anlamazlar.

Web uygulamanız belirli bir özelliğe erişmeden çalışamazsa bile kullanıcılara bunun neden gerekli olduğunu anlamaları için bir fırsat vermelisiniz. Örneğin, ihtiyacı açıklayan ve kullanıcılara seçenek sunan kendi isteminizle (örneğin, mümkünse aynı işlevi gerçekleştirmek için alternatif yöntemler sunarak) izin istemini sunabilirsiniz. İzin istemek için sayfanın yüklenmesinden daha iyi bir zaman alamıyorsanız bu kılavuzun ilerleyen bölümlerinde yer alan birkaç örneği inceleyebilirsiniz.

Önceki kullanıcı etkileşiminin olmaması da benzer şekilde kötü bir durum olabilir (geçici kullanıcı etkinleştirme olarak da bilinir). Chrome telemetri verileri, Masaüstü Chrome'daki izin istemlerinin% 77'sinin bu kadar temel bir kullanıcı niyeti sinyali olmadan gösterildiğini ve sonuç olarak bu tür istemlerin yalnızca %12'sine izin verildiğini gösteriyor. Kullanıcı etkileşiminden sonra oranlar %30'a yükselir. Bu nedenle, yalnızca kullanıcı sayfayla bir şekilde etkileşimde bulunduktan sonra izin isteyin.

Yalnızca kullanıcılar neden sorduğunuzu anlayabildiklerinde sor

İzin kararları genellikle gizlilikle ilgili kararlardır. Bağlamsal bütünlük çerçevesine dayanarak gizlilik kararlarının büyük ölçüde bağlama dayalı olduğunu biliyoruz. Erişimin neden gerekli olduğunu anlamak, bu konunun temel unsurlarından biri olarak kabul edilebilir. Bu nedenle, yalnızca kullanıcılara değer sunmak için gereken (ve kullanıcıların gerçekten değer elde edecekleri konusunda sizinle hemfikir olacakları) özellikleri istemelisiniz. Ayrıca, kullanıcının bu özelliğin neden faydalı olduğunu anladığı bir anda izin istemeniz gerekir. Amaç, kullanıcılarınızın kullanım bağlamını kolayca anlamalarını sağlamaktır.

Kullanıcı araştırmamız, bir sitenin neden erişim istediğini anladığında ve aynı zamanda fayda olduğunu düşünen kullanıcıların, erişim izni verme olasılıklarının önemli ölçüde daha yüksek olduğunu gösteriyor. Ayrıca kullanıcıların, erişime izin verme karşılığında elde edebilecekleri değeri daha iyi anlamak için öncelikle tanımadıkları siteleri keşfetmeyi beklediklerini görüyoruz. Bu sırada izin istemlerini genellikle kapatır veya yoksayarlar. Tek seferlik izinlerle önce tek bir ziyarete izin verebilirler. Uygulamanızın bu davranışları desteklemesi gerekir.

Mümkün olduğunda aynı işlevi elde etmek için alternatif yöntemler sağlama.

Bazı özelliklerin sonuçları kullanıcılar için faydalı olmayabilir. Örneğin, GPS sensörü olmayan bir masaüstü cihazın coğrafi konumu, VPN'e bağlı olduğu için yanlış konuma döndürülebilir. Diğer kullanıcılar, kontrolün sizde olmasını ve bu etkinlikleri tuş kombinasyonlarıyla manuel olarak tetiklemeyi tercih ettikleri için pano erişimi vermek istemeyebilir. Bu gibi durumlarda aynı sonuçlara ulaşmak için alternatif bir yöntem sunmak önemlidir. Örneğin, coğrafi konum izni istiyorsanız kullanıcılarınızın posta kodu girebilecekleri veya adres girebilecekleri bir metin alanı sunun. Pano kullanarak, kopyalanacak öğelerin bir tuş kombinasyonu veya içerik menüsü aracılığıyla da seçilebildiğinden ve kopyalanabileceğinden emin olun. Bildirimler sayesinde, kullanıcıların push bildirimleri yerine e-posta almasını sağlayın.

Alternatif kullanıcı arayüzünü, erişimin neden faydalı olabileceğine dair açıklama olarak kullanmak da faydalı bir modeldir. Coğrafi konum API'sini tetikleyen bir düğmenin yanına konum girme seçeneğini gören kullanıcılar, olacakların kontrolünü ellerinde hissederler. Çünkü yalnızca adreslerini yazabileceklerini anlarlar. Benzer şekilde, push veya e-posta aracılığıyla bildirim alma ya da kamera ve mikrofon erişimine izin vermeden toplantıya katılma arasında seçim yapılabiliyorsa kullanıcılar, bu dengeyi kurmanın avantajlarını daha doğal bir şekilde anlar.

Kendinizi engellenmiş bir duruma getirmeyin, geri dönüşü zordur

Kullanıcı, izinli bir özelliğe kalıcı olarak izin vermemeye karar verdiğinde tarayıcılar bu kararı dikkate alır. Erişim istemeye devam edebilseydiniz, kötü amaçlı siteler kullanıcıları istem bombardımanına göndermeye devam ederdi. Bu nedenle, bir özelliğin engellenmiş durumundan kurtarmak için bilinçli olarak kullanıcının biraz çaba göstermesi gerekir. Bu nedenle, çok sayıda kullanıcının erişime izin vermemesinin muhtemel olduğu durumlarda kullanıcılardan izin istemeyin.

Bunu yapmanın yaygın bir yolu, kullanıcılarınıza ne olacağını ve uygulamanızın isteyeceğiniz özelliğe neden ihtiyaç duyduğunu açıkladığınız ön istem kullanmaktır. Tarayıcının izin istemini yalnızca kullanıcılar bu tür bir ön isteme olumlu yanıt verdiğinde tetiklemeniz gerekir. Kullanıcıların bu durumdan kurtulması gereken durumlar olabilir. Bu konuda daha fazla bilgi için Kullanıcıların engellenen durumdan kurtulmasına yardımcı olma bölümüne göz atın.

Üçüncü taraf içeriklerine dikkat edin

Dikkat edilmesi gereken beklenmedik bir izin istemi kaynağı vardır. Sitenize üçüncü taraf komut dosyaları eklerseniz bu komut dosyaları, göstermek istemediğiniz izin istemlerini tetikleyebilir. Bu durum, özellikle de söz konusu istemler daha önce ana hatları verilen en iyi uygulamalara uygun değilse kullanıcıların web sitenizdeki deneyimini etkileyebilir. Kullanıcılarınızın deneyimlerini kontrol edebilmek için kendi kodunuza eklediğiniz üçüncü taraf kitaplık ve komut dosyaları ile ilgili dokümanları dikkatlice okumanız gerekir.

Ne zaman izin isteyebilirsiniz?

Yukarıda açıklanan en iyi uygulamaları izleyerek izin istemede etkili olan anlara birkaç örnek verebiliriz:

  • Bir kullanıcı manuel olarak adres girmek için bir form alanının yanındaki "konumumu kullan" düğmesini tıkladıktan sonra.
  • Bir kullanıcı bir video kanalına veya gönderilere abone olduktan ve güncellemelerin telefonuna ya da masaüstüne e-posta veya bildirim olarak iletilebileceğini açıklayan iletişim kutusundaki olumlu düğmesini tıkladıktan sonra.
  • Kullanıcı, kendisini görüntülü görüşmeye katılmaya hazırlayan ve önceden istemde görülmek ve duyulmak istediğini olumlu bir şekilde belirten bir sayfaya geldikten sonra (Google Meet'teki bu örnek olayı inceleyin).

İzin istemek için kod kalıpları

API kullanma izni alma süreci, API'ye bağlı olarak farklı yollarla gerçekleşir. Bazı (genellikle daha eski) API'ler, API'yi ilk kez kullanmayı denediğinizde tarayıcının otomatik olarak izin istediği bir modeli kullanır. navigator.geolocation.getCurrentPosition() çağrısı yapılırken kullanılan Coğrafi Konum API'si de bu API'ye örnek olarak verilebilir.

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

Diğer API'ler, önce statik bir yöntem kullanarak açıkça izin istemenizin gerektiği bir model kullanır. Bildirimlere izin vermek için Notification.requestPermission() veya Device Orientation Events API'nin bir parçası olan daha seyrek kullanılan DeviceOrientationEvent.requestPermission() iyi bir örnektir. Bazı tarayıcıların, belirtilen API'lere otomatik olarak izin verebileceğini unutmayın. Örneğin, Chrome bir cihazın yönüne her zaman erişim izni verirken Safari bir istem gösterir.

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. */
}

İzinlerin durumunu kontrol etme

Belirli bir API'yi kullanıp kullanamayacağınızı kontrol etmek için Permissions API'deki navigator.permissions.query() yöntemini kullanın.

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.
}

Tarayıcı Desteği

  • 43
  • 79
  • 46
  • 16

Kaynak

Kullanıcıların engellendik durumları kurtarmasına yardımcı olma

Kullanıcıların erişim sorunlarını gidermelerine yardımcı olmak için Permissions API'yi kullanarak erişimi engellediklerini tespit edin ve onlara ayarlarını nasıl değiştirecekleri konusunda bir kılavuz sunun. Örneğin, kullanıcılar izin korumalı bir özellikle ilişkilendirilmiş kullanıcı arayüzü öğeleriyle etkileşimde bulunduğunda, önceki bölümde açıklanan kalıbı kullanın ve bir sorun giderme iletişim kutusu açın. İzin durumunu değiştirmek için tam olarak izlenecek adımlar tarayıcıya göre değişir. Bu nedenle, kullanıcı aracısı dizesine ve ürününüzde en sık kullanılan tarayıcılara dayalı olarak eşleşen açıklamalar sunmak isteyebilirsiniz.

Kullanıcılar Chrome'da adres çubuğunun sol tarafındaki "ayarlar" simgesini tıklayarak Site Denetimleri'ne gitmelidir. Burada, ilgili izni açabilirler. Bazı durumlarda, özelliği kullanmadan önce sayfayı yeniden yüklemeleri gerekebilir. Bu durumda, pencerenin üst kısmında, ilgili düğme tıklandığında yeniden yükleme yapmayı teklif eden bir mesaj çubuğu gösterilir.

Chrome tarayıcıda site denetimleri.

Site denetimlerini kullanarak izinleri değiştirdikten sonra yeniden yükleme istemi.

İzinleri kontrol etmek için kullanılan benzer kullanıcı arayüzleri diğer tarayıcılarda da mevcuttur (örneğin, Firefox'ta nasıl çalıştığına bakın).