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
veyaidle
: 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
veyaunlocked
: 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.
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.
Ç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.
- Bu bilgiyi nasıl kullanmayı planladığınızı WICG Discourse ileti dizisinde paylaşın.
#IdleDetection
hashtag'ini kullanarak @ChromiumDev adresine tweet gönderip bu tweet'i nerede ve nasıl kullandığınızı bize bildirin.
Faydalı bağlantılar
- Herkese açık açıklayıcı
- Taslak spesifikasyon
- Idle Detection API Demosu | Boşta Kalma Algılama API'sı Demo kaynağı
- İzleme hatası
- ChromeStatus.com girişi
- Yanıp Sönen Bileşen:
Blink>Input
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.