Web izinleriyle ilgili en iyi uygulamalar

İzin istemleri, kullanıcıları gizlilikleri ve güvenlikleri için tehlikeli olabilecek güçlü özelliklerden korumak için web'in kullandığı temel mekanizmadır. Tarayıcılar, kullanıcının belirli bir web sitesinde bir özelliğe izin vermek istediğini onaylamayı amaçlar. Medya yakalama (kamera ve mikrofon), coğrafi konum, depolama alanı erişimi, MIDI ve bildirimler dahil olmak üzere bir dizi API için izinler uygulayabilirsiniz.

Chrome kullanım istatistikleri ve kullanıcı araştırmasına dayalı olarak kullanıcılara izin istemleri gösterirken aşağıdaki uygulamaları kullanın. Bu uygulamalar kullanıldığında, kullanıcılarınız daha az gereksiz istemle karşılaşır ve bu da daha az engelleme kararı alınmasına yol açar.

Bu belgenin sonunda, izinle korunan API'ler için bazı kod kalıpları ve kullanıcıların engellenen durumdan kurtulmalarına nasıl yardımcı olabileceğiniz açıklanmaktadır.

İstem yazmayla ilgili en iyi uygulamalar

Kullanıcı etkileşiminden sonra izin isteyin. Bu sayede kullanıcılar, neden izin istediğinizi ve erişime izin vermenin kendilerine ne gibi faydalar sağlayacağını anlayabilir.

Mümkün olduğunda aynı görevi tamamlamak için alternatif yöntemler sunun. Doğru anı dikkatlice seçerek kullanıcılarınızın kurtarılması zor bir engellenmiş duruma girme olasılığını azaltırsınız.

Sayfa yüklenirken veya kullanıcı etkileşimi olmadan asla istemeyin.

Sayfa yüklendiğinde izin istemek, bir müşteriden fiziksel mağazaya girerken hassas bilgilerini istemeye eşdeğerdir. İzin istemi, muhtemelen bülten kaydı ve çerez izniyle ilgili diğer istemlerle birlikte gösterildiğinde rahatsız edici bir deneyim yaşanır. Kullanıcılar neden izin istendiğini ve bu durumun kendilerine nasıl fayda sağlayacağını anlamaz.

Web uygulamanız belirli bir özelliğe erişmeden çalışamasa bile kullanıcılara bu özelliğin neden gerekli olduğunu anlama fırsatı verin. Örneğin, izin isteminden önce istemin neden gerekli olduğunu açıklayın ve kullanıcılara bir seçenek sunun (ör. aynı işlevi gerçekleştirmek için alternatif yollar sağlayarak). İzin istemek için sayfa yüklemeden daha iyi bir an düşünemiyorsanız bu kılavuzun ilerleyen bölümlerinde birkaç örnek verilmiştir.

Önceden kullanıcı etkileşimi olmadan izin istemek de etkili değildir. Bu durum, geçici kullanıcı etkinleştirme olarak bilinir. Chrome telemetrisi, masaüstündeki izin istemlerinin% 77'sinin kullanıcı niyeti sinyali olmadan gösterildiğini ve sonuç olarak bu istemlerin yalnızca% 12'sine izin verildiğini gösteriyor. Kullanıcı etkileşiminden sonra izin oranları %30'a yükselir.

Yalnızca kullanıcı sayfayla etkileşim kurduktan sonra izin isteyin.

Yalnızca kullanıcılar neden izin vermeleri gerektiğini anlayabildiğinde izin isteyin.

İzin kararları genellikle gizlilik kararlarıdır. Bağlamsal bütünlük çerçevesine göre gizlilik kararlarının bağlama bağlı olduğunu biliyoruz. Erişimin neden gerekli olduğunu anlamak çok önemlidir. Yalnızca değer sağlamak için ihtiyaç duyduğunuz özellikleri istemelisiniz. Kullanıcılar, bu özelliklerin kendilerine değer katacağını kabul etmelidir. Ayrıca, kullanıcınız için özelliğin neden faydalı olduğu açıkça belli olduğunda izin isteyin. Kullanıcıların kullanım bağlamını anlamasını kolaylaştırın.

Kullanıcı araştırmamız, kullanıcıların bir sitenin neden erişim istediğini anladıklarında ve bir fayda elde edeceğini düşündüklerinde erişime izin verme olasılığının önemli ölçüde arttığını gösteriyor. Ayrıca, kullanıcıların erişime izin vermeleri karşılığında elde edebilecekleri değeri daha iyi anlamak için önce tanımadıkları siteleri keşfetmeyi beklediğini de görüyoruz. Bu süre zarfında izin istemlerini genellikle kapatır veya yoksayarlar. Tek seferlik izinler sayesinde, önce tek bir ziyaret için izin verebilirler. Uygulamanızda bu davranışları destekleyin.

Alternatifler sunma

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, kullanıcı bir VPN'ye bağlı olduğundan 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 durumlarda, aynı sonuçları elde etmenin alternatif bir yolunu sunun.

Örneğin, coğrafi konum izni istiyorsanız kullanıcılara posta kodu veya adres girebilecekleri bir metin alanı sunun. Öğelerin klavye kısayolu veya bağlam menüsü kullanılarak seçilip panoya kopyalanmasına izin verin. Bildirimler için push bildirimleri yerine e-posta seçeneği sunun.

Faydalı bir kalıp, alternatif kullanıcı arayüzünü erişimin neden faydalı olabileceğine dair açıklama olarak da kullanmaktır. Coğrafi konum API'sini tetikleyen bir düğmenin yanında konum girme seçeneğini gören kullanıcılar, adreslerini yazabileceklerini anladıkları için kontrolün kendilerinde olduğunu hisseder. Benzer şekilde, push veya e-posta yoluyla bildirim alma ya da kamera ve mikrofon erişimine izin vermeden toplantıya katılma seçenekleri varsa kullanıcılar bu seçeneklerin avantaj ve dezavantajlarını anlar.

Engellenen durumlardan kaçınma

Bir kullanıcı, izin gerektiren bir özelliğe erişimi kalıcı olarak reddettiğinde tarayıcılar bu karara uyar. Erişim istemeye devam etmek mümkün olsaydı kötü amaçlı siteler, kullanıcıları istemlerle bombardımana tutardı. Bir özelliğin engellenmiş durumundan kurtulmak için kasıtlı olarak çaba gösterilmesi gerekir. Kullanıcıların erişime izin vermeyeceği durumlarda izin istemeyin.

Bunu yapmanın yaygın bir yolu, kullanıcılarınıza ne olacağını ve uygulamanızın, isteyeceğiniz özelliği neden kullanması gerektiğini açıkladığınız bir ö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 tetiklemelisiniz. Kullanıcıların bu durumdan kurtulması gerekebileceği durumlar olabilir. Bu konuda daha fazla bilgi için Kullanıcıların engellenen durumdan kurtulmasına yardımcı olma bölümüne bakın.

Üçüncü taraf içeriklere dikkat edin

İzin istemlerinin beklenmedik kaynaklarına dikkat edin. Sitenizdeki üçüncü taraf komut dosyaları, istenmeyen izin istemlerine neden olabilir. Bu durum, özellikle istemler en iyi uygulamalara uygun değilse kullanıcı deneyimini etkileyebilir. Kullanıcı deneyimini kontrol altında tutmak için kodunuza eklediğiniz tüm üçüncü taraf kitaplıklarının ve komut dosyalarının belgelerini okuyun.

Ne zaman izin isteyebilirsiniz?

Aşağıda, en iyi uygulamalara uygun olarak izin istemek için uygun olan anlara dair birkaç örnek verilmiştir:

  • Kullanıcı, bir form alanının yanındaki Konumumu kullan'ı tıkladıktan sonra adresi manuel olarak girerken.
  • Kullanıcı bir video kanalına veya gönderiye abone olduktan ve güncellemelerin e-posta ya da 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ığı bir sayfaya ulaştıktan ve ön istemde görülmek ve duyulmak istediğini onayladıktan sonra. Google Meet örnek olay incelemesinde daha fazla bilgi edinin.

Kod kalıpları

API'ye bağlı olarak, API kullanma izni farklı yollarla verilir. Bazı eski API'lerde, tarayıcının API'yi ilk kez kullanmaya çalıştığınızda otomatik olarak izin istediği bir model kullanılır. Bunun bir örneği, navigator.geolocation.getCurrentPosition() çağrılırken kullanılan Coğrafi Konum API'sidir.

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

Diğer API'ler, önce statik bir yöntemle açıkça izin istediğiniz bir model kullanır. Bildirimlere izin vermek için kullanılan Notification.requestPermission() veya daha az yaygın olan DeviceOrientationEvent.requestPermission() (Cihaz Yönlendirme Etkinlikleri API'sinin bir parçasıdır) iyi bir örnektir.

Bazı tarayıcılar, belirli API'lere otomatik olarak izin verir. Örneğin, Chrome her zaman cihaz 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. */
}

İzin durumunu kontrol etme

Browser Support

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

Source

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

Kullanıcıların engellenmiş durumdan kurtulmasına yardımcı olma

Kullanıcıların erişim sorunlarını gidermesine yardımcı olmak için, izinler API'sini kullanarak erişimi engellediklerini tespit edin ve ayarlarını nasıl değiştireceklerine dair bir kılavuz sunun. Kullanıcılar, izinlerle korunan bir özellikle ilişkili kullanıcı arayüzü öğeleriyle etkileşime girdiğinde izin durumunu kontrol edin ve bir sorun giderme iletişim kutusu açın.

İzin durumunu değiştirme adımları tarayıcıya göre değişir. Bu nedenle, en çok tercih edilen tarayıcılar için kullanıcı aracısı dizesine göre eşleşen açıklamalar sunun.

Kullanıcılar Chrome'da izinleri değiştirmek için adres çubuğunda bulunan Site bilgilerini görüntüle > Site ayarları'nı kullanabilir. Bazı durumlarda, bir özelliği kullanmadan önce sayfayı yeniden yüklemeleri gerekebilir. Bu durumda, pencerenin üst kısmında siteyi yeniden yüklemeyi teklif eden bir mesaj çubuğu görünür.

Chrome tarayıcıdaki site kontrolleri.

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

İzinleri kontrol etmek için benzer kullanıcı arayüzleri Firefox gibi diğer tarayıcılarda da bulunur.