Boşta Algılama API'si ile etkin olmayan kullanıcıları tespit edin

Kullanıcının cihazını etkin olarak kullanmadığını öğrenmek için Boşta Kalma Algılama API'sını kullanın.

Boşta Kalma Algılama API'sı nedir?

Boşta Algılama API'sı kullanıcı boşta kaldığında geliştiricileri uyarır. Bu şekilde klavye, fare ve ekranla etkileşim olmaması, ekran koruyucunun etkinleştirilmesi, ekranın kilitlenmesi veya farklı bir ekrana geçilmesi gibi durumlar belirtilir. Geliştirici tarafından tanımlanan bir eşik, bildirimi tetikler.

Boşta Kalma Algılama API'si için önerilen kullanım alanları

Bu API'yi kullanabilecek sitelere örnek olarak aşağıdakiler verilebilir:

  • Sohbet uygulamaları veya online sosyal ağ siteleri, kullanıcıya kişilerinin o anda erişilebilir olup olmadığını bildirmek için bu API'yi kullanabilir.
  • Herkese açık kiosk uygulamaları (ör. müzelerde) artık hiç kimse kioskla etkileşimde bulunmazsa "ana sayfa" görünümüne dönmek için bu API'yi kullanabilir.
  • Grafik çizmek gibi pahalı hesaplamalar gerektiren uygulamalar, bu hesaplamaları kullanıcının cihazıyla etkileşimde bulunduğu anlarla sınırlandırabilir.

Mevcut durum

Adım Durum
1. Açıklayıcı oluşturun Tamamlandı
2. İlk spesifikasyon taslağını oluşturma Tamamlandı
3. Geri bildirim alma ve tasarımı yineleme Devam ediyor
4. Kaynak denemesi Sona erenler
5. Lansman Chromium 94

Boşta Kalma Algılama API'si nasıl kullanılır?

Özellik algılama

Boşta Algılama API'sinin desteklenip desteklenmediğini kontrol etmek için şunu kullanın:

if ('IdleDetector' in window) {
  // Idle Detector API supported
}

Boşta Algılama API'sı kavramları

Boşta Algılama API'si kullanıcı, kullanıcı aracısı (yani tarayıcı) ve kullanımdaki cihazın işletim sistemi arasında belirli bir etkileşim düzeyinin olduğunu varsayar. Bu, iki boyutta temsil edilir:

  • Kullanıcı boşta kalma durumu: active veya idle: Kullanıcı, kullanıcı aracısıyla bir süredir etkileşimde bulunmuş veya etkileşimde bulunmamıştır.
  • Ekran boşta kalma durumu: locked veya unlocked: Sistemde, kullanıcı aracısıyla etkileşimi engelleyen etkin bir ekran kilidi (ör. ekran koruyucu) vardır.

active ile idle arasındaki fark için kullanıcı, kullanıcı aracısı ve işletim sistemi arasında farklılık gösterebilecek buluşsal yöntemler gerekir. Ayrıca, makul düzeyde genel bir eşik olmalıdır (bkz. Güvenlik ve İzinler).

Model, belirli içerikle (yani API'yi kullanan bir sekmedeki web sayfası), bütün olarak kullanıcı aracısıyla veya işletim sistemiyle etkileşimi kasıtlı olarak ayırt etmemektedir. Bu tanım kullanıcı aracısına bırakılır.

Boşta Algılama API'sını Kullanma

Boşta Algılama API'sini kullanırken ilk adım 'idle-detection' izninin verildiğinden emin olmaktır. Bu izin verilmezse IdleDetector.requestPermission() üzerinden istekte bulunmanız gerekir. Bu yöntemi çağırmak için kullanıcı hareketi gerektiğini unutmayın.

// Make sure 'idle-detection' permission is granted.
const state = await IdleDetector.requestPermission();
if (state !== 'granted') {
  // Need to request permission first.
  return console.log('Idle detection permission not granted.');
}

Daha sonra ikinci adım IdleDetector örneğini oluşturmaktır. Minimum threshold,60.000 milisaniyedir (1 dakika). Son olarak IdleDetector'in start() yöntemini çağırarak boşta kalma algılamasını başlatabilirsiniz. Boşta kalma algılamasını parametre olarak iptal etmek için milisaniye cinsinden istenen boşta threshold değerine ve isteğe bağlı olarak AbortSignal bulunan signal değerine sahip bir nesneyi alır.

try {
  const controller = new AbortController();
  const signal = controller.signal;

  const idleDetector = new IdleDetector();
  idleDetector.addEventListener('change', () => {
    const userState = idleDetector.userState;
    const screenState = idleDetector.screenState;
    console.log(`Idle change: ${userState}, ${screenState}.`);
  });

  await idleDetector.start({
    threshold: 60000,
    signal,
  });
  console.log('IdleDetector is active.');
} catch (err) {
  // Deal with initialization errors like permission denied,
  // running outside of top-level frame, etc.
  console.error(err.name, err.message);
}

AbortController'in abort() yöntemini çağırarak boşta kalma algılamasını iptal edebilirsiniz.

controller.abort();
console.log('IdleDetector is stopped.');

Geliştirici Araçları desteği

Chromium 94'ten itibaren, aslında boşta olmadan DevTools'da boşta kalma etkinlikleri emülasyonu yapabilirsiniz. Geliştirici Araçları'nda Sensors (Sensörler) sekmesini açın ve Emulate Idle Detector status (Boşta Algılayıcı durumunu emüle et) seçeneğini bulun. Aşağıdaki videoda çeşitli seçenekleri görebilirsiniz.

Geliştirici Araçları'nda, Boşta Algılayıcı durum emülasyonu.

Kuklacı desteği

Puppeteer 5.3.1 sürümünden itibaren, web uygulamanızın davranışının nasıl değiştiğini programatik olarak test etmek için çeşitli boşta kalma durumlarını emüle edebilirsiniz.

Demografi

60 saniye boyunca işlem yapılmadığında içeriğini silen Geçici Tuval demosunu izleyerek Idle Detection API'yi çalışırken görebilirsiniz. Bunun, çocukların üzerinde çizim yapabileceği bir alışveriş mağazasında dağıtıldığını hayal edebiliyorsunuz.

Geçici Tuval demosu

Çoklu dolgu

Boşta Algılama API'sinin bazı özellikleri çoklu doldurulabilir özelliktedir ve idle.ts gibi boşta kalma algılama kitaplıkları mevcuttur ancak bu yaklaşımlar yalnızca web uygulamasının kendi içerik alanıyla sınırlıdır: Web uygulaması bağlamında çalışan kitaplığın, giriş etkinlikleri için yüksek oranda yoklama yapması veya görünürlük değişikliklerini dinlemesi gerekir. Ancak daha kısıtlayıcı olsa da kitaplıklar, kullanıcının içerik alanının dışında boşta kaldığında (örneğin, kullanıcı farklı bir sekmede olduğunu veya bilgisayarından tamamen çıkış yaptığını) bugünü bildiremez.

Güvenlik ve izinler

Chrome ekibi, Boşta Kalma Algılama API'sini Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme bölümünde tanımlanan (kullanıcı kontrolü, şeffaflık ve ergonomi) temel ilkeleri kullanarak tasarlamıştır ve uygulamıştır. Bu API'nin kullanımı 'idle-detection' izni ile kontrol edilir. API'yi kullanmak için bir uygulamanın üst düzey güvenli bağlamda da çalışıyor olması gerekir.

Kullanıcı denetimi ve gizlilik

Kötü amaçlı kişilerin yeni API'leri kötüye kullanmasını her zaman önlemek isteriz. Bağımsız görünen ancak aslında aynı tüzel kişi tarafından kontrol edilen web siteleri, kullanıcıların boşta kalma bilgilerini elde edebilir ve farklı kaynaklardaki benzersiz kullanıcıları tanımlamak için verileri ilişkilendirebilir. Boşta Algılama API'si bu tür saldırıları hafifletmek için bildirilen boşta kalma etkinliklerinin ayrıntı düzeyini sınırlar.

Geri bildirim

Chrome ekibi, Boşta Kalma Algılama API'si ile ilgili deneyimlerinizi öğrenmek istiyor.

Bize API tasarımı hakkında bilgi verin

API'de beklediğiniz gibi çalışmayan bir durum mu var? Fikrinizi uygulamak için gereken yöntem veya özellikler eksik mi? Güvenlik modeliyle ilgili bir sorunuz veya yorumunuz mu var? İlgili GitHub deposuna özellik sorunu bildiriminde bulunun veya mevcut bir soruna düşüncelerinizi ekleyin.

Uygulamayla ilgili bir sorunu bildirin

Chrome'un uygulamasında bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı? new.crbug.com adresinde hata bildiriminde bulunun. Mümkün olduğunca fazla ayrıntı eklediğinizden ve yeniden oluşturmaya ilişkin basit talimatları eklediğinizden emin olun ve Bileşenler kutusuna Blink>Input yazın. Glitch, hızlı ve kolay yeniden oluşturmalar paylaşmak için idealdir.

API'ye desteği gösterin

Boşta Kalma Algılama API'sini kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chrome ekibinin özelliklere öncelik vermesine yardımcı olur ve diğer tarayıcı satıcılarına onları desteklemenin ne kadar kritik olduğunu gösterir.

Faydalı bağlantılar

Teşekkür

Boşta Algılama API'sı, Sam Goto tarafından uygulanmıştır. Maksim Sadym tarafından DevTools desteği eklendi. Bu makaleyi yazdıkları yorumlar için Joe Medley, Kayce Basques ve Reilly Grant'e teşekkür ederiz. Lokomotif resim, Unsplash'ta Fernando Hernandez tarafından çekilmiştir.