Web izinleriyle ilgili en iyi uygulamalar

İzin istemleri, kullanıcıların gizliliği ve güvenliği için potansiyel olarak tehlikeli olan güçlü özellikleri korumak amacıyla web'de kullanılan ana mekanizmadır. Tarayıcılar, izin istemleriyle kullanıcının istenen web sitesinin söz konusu özelliğe erişmesine izin vermeyi amaçlar. İzin istemleri; medya yakalama (kamera ve mikrofon), coğrafi konum, depolama alanı erişimi, MIDI ve bildirimler dahil olmak üzere çeşitli API'ler 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 istatistikleri ve kullanıcı araştırmalarına dayalı olarak kullanıcılara izin istemleri göstermeyle ilgili en iyi uygulamalar özetlenmiştir. Bu en iyi uygulamalara uyulduğunda, kullanıcılar daha az gereksiz istemle karşılaşır. Bu da geliştiricilerin daha az "engelleme" kararı almasına neden olur. Makale, izin denetimine tabi API'lerle çalışmayla ilgili bazı kod kalıpları ve kullanıcıların engellenen durumdan kurtulmasına yardımcı olacak en iyi uygulamalarla sona erer.

İstemlerle ilgili en iyi uygulamalar

İzin istemeniz gereken zaman, kullanıcı etkileşiminden sonra, kullanıcıların neden izin istediğinizi ve izin vererek ne gibi avantajlar elde edeceklerini anlayabileceği bir andır. Mümkün olduğunda, kullanıcıların aynı işlevi gerçekleştirmek için alternatif bir yöntem kullanmasına izin vermelisiniz. Genel bir kural olarak, izin isteğinde bulunduğunuz anları dikkatlice seçerek daha seyrek izin istemek, kullanıcılarınızın geri dönüşü zor bir engellenmeye girme olasılığını azaltır. Aşağıdaki en iyi uygulamalarda bu önerilerin her biri hakkında daha fazla bilgi verilmektedir.

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

Sayfa yüklenirken kullanıcılardan izin istemek, fiziksel bir mağazaya giren bir müşteriden hassas bir bilgi istemeye eşdeğerdir. İzin istemi (muhtemelen bültene kaydolma ve çerez izni için diğer birkaç istem arasında) görmek çok can sıkıcı bir deneyimdir. Kullanıcılar neden bu istemin kendilerine yapıldığını ve bu durumdan nasıl yararlanacaklarını anlamaz.

Web uygulamanız belirli bir özelliğe erişmeden çalışamıyor olsa bile kullanıcılara bu özelliğe neden ihtiyaç duyulduğunu anlama fırsatı vermelisiniz. Örneğin, izin isteğinin önüne, ihtiyacı açıklayan ve kullanıcılara bir seçenek sunan (örneğin, mümkün olduğunda aynı işlevi gerçekleştirmek için alternatif yöntemler sağlayarak) kendi isteminizi ekleyerek. Sayfa yüklenirken izin istemekten daha iyi bir zaman düşünemiyorsanız bu kılavuzun ilerleyen bölümlerinde birkaç örnek verilmiştir.

İzin istemek için benzer şekilde kötü bir durum da önceden kullanıcı etkileşimi olmadan izin istemektir (geçici kullanıcı etkinleştirme olarak da bilinir). Chrome telemetrisi, Masaüstü Chrome'daki izin istemlerinin% 77'sinin kullanıcı amacına dair bu kadar temel bir sinyal 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 ücretlerin %30'a yükselmesine izin verin. Bu nedenle, yalnızca kullanıcı sayfayla bir şekilde etkileşime geçtikten sonra izin isteyin.

Yalnızca kullanıcıların neden sorduğunuzu anlayabileceği durumlarda isteyin

İzin kararları genellikle gizlilikle ilgilidir. Bağlamsal bütünlük çerçevesine göre, gizlilikle ilgili kararların bağlama göre değiştiğini biliyoruz. Erişimin neden gerekli olduğunu anlamak bunun önemli bir yönü olarak kabul edilebilir. Bu nedenle, yalnızca kullanıcılara değer sağlamak için ihtiyaç duyduğunuz özellikleri (ve kullanıcıların gerçekten değer elde edecekleri konusunda sizinle aynı fikirde olabilecekleri özellikleri) istemeniz gerekir. Ayrıca, kullanıcının bu özelliğin neden yararlı olduğunu anlayabileceği bir zamanda izin istemeniz gerekir. Amaç, kullanıcılarınızın kullanım bağlamını mümkün olduğunca kolay bir şekilde anlamasını sağlamaktır.

Kullanıcı araştırmamız, kullanıcıların bir sitenin neden erişim istediğini anladıkları ve bir avantaj gördükleri durumlarda erişime izin verme olasılıklarının önemli ölçüde arttığını gösteriyor. Ayrıca, kullanıcıların erişim izni vermeleri karşılığında elde edebilecekleri değeri daha iyi anlamak için önce bilmedikleri siteleri keşfetmeyi beklediklerini de görüyoruz. Bu sırada izin istemlerini genellikle kapatır veya yoksayar. Tek seferlik izinlerde, ilk olarak tek bir ziyarete izin verilebilir. Uygulamanızın bu davranışları desteklemesi gerekir.

Mümkün olduğunda aynı işlevi yerine getirmek için alternatif yöntemler sunun

Bazı özelliklerin sonucu kullanıcılar için yararlı olmayabilir. Örneğin, GPS sensörü olmayan bir masaüstü cihazın coğrafi konumu, kullanıcı VPN'ye bağlı olduğu için yanlış konum döndürebilir. Diğer kullanıcılar, kontrolü ellerinde tutmayı ve bu etkinlikleri tuş kombinasyonlarıyla manuel olarak tetiklemeyi tercih ettikleri için pano erişimi sağlamak istemeyebilir. Bu gibi durumlarda, aynı sonuçları elde etmek için alternatif bir yöntem sunmak önemlidir. Örneğin, coğrafi konum izni istiyorsanız kullanıcılarınızın posta kodunu veya adresi kendilerinin girebileceği bir metin alanı sunun. Panoda, kopyalanacak öğelerin klavye tuş kombinasyonu veya içerik menüsü aracılığıyla da seçilip kopyalanabildiğinden emin olun. Bildirimlerde, kullanıcılara push bildirimleri yerine e-posta alma seçeneği sunun.

Erişimin neden yararlı olabileceğine dair açıklama olarak alternatif kullanıcı arayüzünü kullanmak faydalı bir yöntemdir. Coğrafi konum API'sini tetikleyen bir düğmenin yanında konum girme seçeneği gören kullanıcılar, adreslerini de yazabileceklerini bildiklerinden ne olacağının kontrolünü ellerinde tutmuş hissederler. Benzer şekilde, bildirimleri push veya e-posta üzerinden alma ya da kamera ve mikrofon erişimine izin vermeden toplantıya katılma arasında bir seçim varsa kullanıcılar yaptıkları tercihleri daha doğal bir şekilde anlayabilir.

Engellenmiş bir duruma girmeyin. Bu durumdan kurtulmak zordur.

Kullanıcı, izin denetimine tabi bir özelliğe erişime kalıcı olarak izin vermemeye karar verdiğinde tarayıcılar bu kararı dikkate alır. Erişim isteğinde bulunmaya devam etmek mümkün olsaydı kötü niyetli siteler kullanıcıları isteklerle bombardımana tutmaya devam ederdi. Bu nedenle, bir özelliğin engellenen durumundan kurtulmak için kullanıcının biraz çaba göstermesi gerekir. Bu nedenle, birçok kullanıcının erişime izin vermeyeceği durumlarda kullanıcılardan izin istemekten kaçının.

Bunu yapmanın yaygın bir yolu, kullanıcılarınıza ne olacağını ve uygulamanızın isteyecek olduğunuz yeteneğe neden ihtiyaç duyduğunu açıkladığınız bir ön istem kullanmaktır. Yalnızca kullanıcılar bu tür bir ön istemi olumlu şekilde yanıtladığında tarayıcının izin istemini tetiklemelisiniz. Kullanıcıların bu durumdan yasal olarak kurtarılması gerekebilecek durumlar vardır. Bu konuda daha fazla bilgi için Kullanıcıların engellendikten sonra hesaplarını kurtarmasına yardımcı olma bölümüne bakın.

Üçüncü taraf içeriklerine dikkat edin

Dikkat edilmesi gereken beklenmedik bir izin istemi kaynağı var. Sitenize üçüncü taraf komut dosyaları eklerseniz bu komut dosyaları, göstermek istemediğiniz izin istemlerini tetikleyebilir. Bu durum, özellikle bu tür istemler daha önce belirtilen en iyi uygulamalara uymuyorsa kullanıcıların web sitenizle ilgili deneyimini etkileyebilir. Kullanıcılarınızın deneyimlerinin kontrolünü elinizde tutmak için kendi kodunuza eklediğiniz üçüncü taraf kitaplık ve komut dosyalarının belgelerini dikkatlice okumanız gerekir.

Ne zaman izin isteğinde bulunabilirsiniz?

Daha önce açıklanan en iyi uygulamalara uygun olarak, izin istemek için uygun olan birkaç ana örnek verilmiştir:

  • Kullanıcı, adresi manuel olarak girmek için bir form alanının yanındaki "konumumu kullan" düğmesini tıkladığında.
  • Kullanıcı bir video kanalına veya yayına abone olduktan ve güncellemelerin telefonlarına ya da masaüstü bilgisayarlarına e-posta veya bildirim olarak gönderilebileceğini açıklayan bir iletişim kutusunda onay düğmesini tıkladıktan sonra.
  • Kullanıcı, görüntülü görüşmeye katılmaya hazırlandığı sayfaya geldiğinde ve ön istemde görünmek ve duyulmak istediğini olumlu şekilde yanıtladığında (Google Meet'teki bu örnek çalışmayı inceleyin).

İzin istemek için kod kalıpları

API kullanma izni, API'ye bağlı olarak farklı yöntemlerle alınır. Bazı (genellikle eski) API'ler, API'yi ilk kez kullanmaya çalıştığınızda tarayıcının otomatik olarak izin istediği bir model kullanır. Örneğin, navigator.geolocation.getCurrentPosition() çağrısı yapılırken Coğrafi Konum API'si.

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 istemeniz gereken bir model kullanır. Bildirimlere izin vermek için Notification.requestPermission() veya Device Orientation Events API'nin bir parçası olan daha az yaygın DeviceOrientationEvent.requestPermission() buna örnek gösterilebilir. Bazı tarayıcıların belirli API'lere otomatik olarak izin verebileceğini unutmayın. Örneğin, Chrome her zaman cihazın yönüne erişime izin 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

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

Kaynak

Kullanıcıların engellenen durumdan kurtulmasına yardımcı olma

Kullanıcıların erişim sorunlarını gidermesine yardımcı olmak için Permissions API'yi kullanarak erişimi engellediklerini algılayın ve ayarlarını nasıl değiştirecekleri konusunda onlara bir kılavuz sunun. Örneğin, kullanıcılar izin denetimine tabi bir özellikle ilişkili kullanıcı arayüzü öğeleriyle etkileşime geçtiğinde ö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 gereken adımlar tarayıcıya göre değişir. Bu nedenle, kullanıcı aracısı dizesine ve ürününüzde en yaygın olarak kullanılan tarayıcılara göre eşleşen açıklamalar sunabilirsiniz.

Chrome'da kullanıcılar, adres çubuğunun sol tarafındaki "ayar" simgesini tıklayarak Site Denetimleri'ne gitmelidir. Burada ilgili izni etkinleştirebilirler. Bazı durumlarda, özelliği kullanmadan önce sayfayı yeniden yüklemeleri gerekebilir. Bu durumda, ilgili düğme tıklandığında yeniden yükleme seçeneğini sunan bir mesaj çubuğu pencerenin üst kısmında gösterilir.

Chrome Tarayıcı'daki site kontrolleri.

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

İzinleri kontrol etmek için diğer tarayıcılarda da benzer kullanıcı arayüzleri bulunur (örneğin, Firefox'ta bu işlemin nasıl yapıldığına bakın).