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

Kullanıcının cihazını etkin olarak kullanmadığı zamanları öğrenmek için Idle Detection API'yi kullanın.

Idle Detection API nedir?

Idle Algılama API'si, bir kullanıcı boşta kaldığında geliştiricileri bilgilendirir. Bu durum, klavyeyle etkileşim, fare, ekran, ekran koruyucunun etkinleştirilmesi, ekranın kilitlenmesi, veya farklı bir ekrana geçebilirsiniz. Geliştirici tarafından tanımlanan bir eşik, bildirimi tetikler.

Idle Detection API için önerilen kullanım alanları

Bu API'yi kullanabilecek sitelere örnek olarak şunlar verilebilir:

  • Sohbet uygulamaları veya çevrimiçi sosyal ağ siteleri, kullanıcıya bu durumu bildirmek için bu API'yi kullanabilir. bu kullanıcının kişilerine şu anda erişilebilir.
  • Herkese açık kiosk uygulamaları (ör. müzelerde) bu API'yi kullanarak "ana sayfaya" dönebilir. kiosk'u kontrol edin.
  • Pahalı hesaplamalar gerektiren, grafik çizmek gibi uygulamalar, bu hesaplamaları, kullanıcının cihazıyla etkileşimde bulunduğu anlarla sınırlandırabilir.

Mevcut durum

Step Durum
1. Açıklayıcı oluşturun Tamamlandı
2. İlk spesifikasyon taslağını oluşturun Tamamlandı
3. Geri bildirim toplama tasarımı yineleyin Devam ediyor
4. Kaynak denemesi Tamamlandı
5. Lansman Chromium 94

Idle Detection API'yi kullanma

Özellik algılama

Idle Detection API'nin desteklenip desteklenmediğini kontrol etmek için şunu kullanın:

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

Boşta Algılama API'si kavramları

Idle Detection API, kullanıcı ile kullanıcı arasında belirli bir düzeyde etkileşim olduğunu kullanıcı aracısı (yani tarayıcı) ve kullanılan cihazın işletim sistemi. Bu, iki boyutta gösterilir:

  • Kullanıcının boşta kalma durumu: active veya idle: Kullanıcının sahip olduğu veya olmadığı belirli bir süre boyunca kullanıcı aracısıyla etkileşimde bulunmuş olması gerekir.
  • Ekran boşta kalma durumu: locked veya unlocked: Sistemin, engelleyen bir etkin ekran kilidi (ör. ekran koruyucu) olduğundan kullanıcı aracısıyla etkileşimde bulunur.

active öğesini idle ile ayırt etmek için kullanıcı, kullanıcı aracısı ve ve işletim sistemi. Ayrıca makul ölçüde genel bir eşik olmalıdır. (bkz. Güvenlik ve İzinler).

Modelin belirli bir içerikle etkileşimi kasıtlı olarak resmen ayırmaması (yani, API'yi kullanan bir sekmedeki web sayfası), bir bütün olarak kullanıcı aracısı veya işletim sistemi; bu tanım kullanıcı aracısına bırakılır.

Idle Detection API'yi kullanma

Idle Detection API'yi kullanmanın ilk adımı: ('idle-detection') izninin verildiğinden emin olun. İzin verilmezse şunları yapmanız gerekir: IdleDetector.requestPermission() aracılığıyla istekte bulunabilirsiniz. Bu yöntemi çağırmak için kullanıcı hareketinin 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.');
}

İkinci adım, IdleDetector öğesini örneklendirmektir. Minimum threshold,60.000 milisaniyedir (1 dakika). Son olarak, IdleDetector öğesinin start() yöntemi. İstenen boşta kalma değeri threshold olan bir nesneyi milisaniye cinsinden alır ve isteğe bağlı bir signal AbortSignal parametresiyle boşta kalma algılamasını iptal edebilir.

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);
}

Boşta kalma algılamasını AbortController abort() yöntemidir.

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

Geliştirici Araçları desteği

Chromium 94'ten başlayarak, boşta kalmaksızın Geliştirici Araçları'nda boşta kalma etkinliklerini emüle edebilirsiniz. Geliştirici Araçları'nda Sensörler sekmesini açın ve Boşta Algılayıcı Durumunu Simüle Et'i bulun. Aşağıdaki videoda çeşitli seçenekleri görebilirsiniz.

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

Puppeteer desteği

Puppeteer 5.3.1 sürümünden itibaren, çeşitli boşta kalma durumları emülasyonu web uygulaması davranışının nasıl değiştiğini programlı bir şekilde test etmek için kullanılır.

Demo

Boşta Algılama API'sinin işleyiş şeklini silen Geçici Tuval demosu ile içerik 60 saniye boyunca herhangi bir işlem yapılmadığında. Bu projenin bir departmana dağıtıldığı çizimleri için harika bir dükkan.

Geçici Tuval demosu

Çoklu dolgu

Idle Detection API'nin bazı özellikleri çoklu doldurulabilir ve idle.ts gibi boşta kalma algılama kitaplıkları varsa Ancak şu yaklaşımlar web uygulamasının kendi içerik alanıyla sınırlıdır: Web uygulaması bağlamında çalışan kitaplık giriş etkinlikleri için yüksek düzeyde yoklama yapması veya görünürlük değişikliklerini dinlemesi gerekiyor. Daha kısıtlayıcı bir şekilde ise, kitaplıklar bugün kullanıcıların ne zaman boşta kaldığını söyleyemez içerik alanının dışında (ör. kullanıcı farklı bir sekmede olduğunda) veya bilgisayarından tamamen çıkış yapmış olabilir.

Güvenlik ve izinler

Chrome ekibi, Idle Detection API'yi temel ilkeleri kullanarak tasarlayıp uyguladı Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme'de açıklandığı şekilde dahil olmak üzere tüm bunları kapsar. Bu API'nin kullanım özelliği 'idle-detection' izni. API'yi kullanmak için bir uygulamanın aynı zamanda üst düzey güvenli içerik.

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 gibi görünen web siteleri ancak aslında aynı tüzel kişi tarafından kontrol edilen cihazların, kullanıcıların boşta kalma bilgilerini farklı kaynaklardaki benzersiz kullanıcıları tanımlamak için veriler arasında ilişki kurun. Bu tür saldırıları azaltmak için Idle Detection API, bildirilen boşta kalma etkinliklerinin ayrıntı düzeyini sınırlandırır.

Geri bildirim

Chrome ekibi, Idle Detection API ile ilgili deneyimleriniz hakkında bilgi almak istiyor.

Bize API tasarımı hakkında bilgi verin

API'de beklediğiniz gibi çalışmayan bir şey mi var? Veya eksik yöntemler mi var? gereken özellikler veya özellikler neler olabilir? Güvenlik modeliyle ilgili bir sorunuz veya yorumunuz mu var? İlgili GitHub deposunda bir spesifikasyon sorunu bildirin, veya düşüncelerinizi mevcut bir soruna ekleyebilirsiniz.

Uygulamayla ilgili bir sorunu bildirin

Chrome'un uygulanmasıyla ilgili bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı? new.crbug.com adresinden hata bildiriminde bulunun. Açıklamalarınızı mümkün oldukça detaylandırmaya çalışın. basit yeniden oluşturma talimatlarını uygulayın ve Bileşenler kutusuna Blink>Input yazın. Glitch, hızlı ve kolay yeniden oluşturmalar paylaşmak için idealdir.

API'ye desteğinizi gösterin

Idle Detection API'yi kullanmayı planlıyor musunuz? Herkese açık desteğiniz Chrome ekibinin şunları yapmasına yardımcı olur: ve diğer tarayıcı tedarikçilerine söz konusu özellikleri desteklemenin ne kadar önemli olduğunu gösterir.

Faydalı bağlantılar

Teşekkür

Boşta Algılama API'si Sam Goto tarafından uygulandı. Geliştirici Araçları desteği, Maksim Sadym tarafından eklendi. Joe Medley sayesinde, Kayce Basques ve Bu makaleyle ilgili yorumları için Reilly Grant'e teşekkür ederiz. Lokomotif resim, Fernando Hernandez tarafından Lansmanı kaldırın.