Utilizza l'API Rilevamento inattività per sapere quando l'utente non sta utilizzando attivamente il dispositivo.
Che cos'è l'API Idle Detection?
L'API Idle Detection avvisa gli sviluppatori quando un utente è inattivo, indicando ad esempio la mancanza di interazione con tastiera, mouse, schermo, attivazione di un salvaschermo, blocco dello schermo, o lo spostamento su un'altra schermata. La notifica viene attivata da una soglia definita dallo sviluppatore.
Casi d'uso suggeriti per l'API Idle Detection
Ecco alcuni esempi di siti che possono utilizzare questa API:
- Le applicazioni di chat o i siti di social network online possono utilizzare questa API per comunicare all'utente se i loro contatti sono attualmente raggiungibili.
- Le app kiosk esposte al pubblico, ad esempio nei musei, possono utilizzare questa API per tornare alla "casa" per vedere se nessuno interagisce più con il kiosk.
- App che richiedono calcoli costosi, ad esempio per disegnare grafici possono limitare questi calcoli ai momenti in cui l'utente interagisce con il dispositivo.
Stato attuale
Passaggio | Stato |
---|---|
1. Crea messaggio esplicativo | Completato |
2. Crea la bozza iniziale delle specifiche | Completato |
3. Raccogli feedback e esegui l'iterazione del design | In corso |
4. Prova dell'origine | Completato |
5. Lancio | Chromium 94 |
Come utilizzare l'API Idle Detection
Rilevamento delle caratteristiche
Per verificare se l'API Idle Detection è supportata, utilizza:
if ('IdleDetector' in window) {
// Idle Detector API supported
}
Concetti sull'API Idle Detection
L'API Idle Detection presuppone che ci sia un certo livello di coinvolgimento tra l'utente, lo user agent (ossia il browser) e il sistema operativo del dispositivo in uso. ed è rappresentato in due dimensioni:
- Lo stato di inattività dell'utente:
active
oidle
: l'utente ha o non ha ha interagito con lo user agent per un certo periodo di tempo. - Lo stato di inattività dello schermo:
locked
ounlocked
: il sistema ha un blocco schermo attivo (ad esempio un salvaschermo) che impedisce e l'interazione con lo user agent.
Distinguere active
da idle
richiede un'euristica che può variare in base a utente, user agent
e il sistema operativo. Deve anche essere una soglia abbastanza approssimativa.
(vedi Sicurezza e autorizzazioni).
Il modello non distingue intenzionalmente tra le interazioni con determinati contenuti (ovvero la pagina web in una scheda che utilizza l'API), lo user agent nel suo complesso o il sistema operativo; questa definizione viene lasciata allo user agent.
Utilizzo dell'API Idle Detection
Per utilizzare l'API Idle Detection, occorre innanzitutto
per assicurarti che venga concessa l'autorizzazione 'idle-detection'
.
Se l'autorizzazione non viene concessa, devi
richiedilo tramite IdleDetector.requestPermission()
.
Tieni presente che per chiamare questo metodo è necessario un gesto dell'utente.
// 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.');
}
Il secondo passaggio consiste nell'creare un'istanza per IdleDetector
.
Il valore minimo di threshold
è 60.000 millisecondi (1 minuto).
Puoi finalmente avviare il rilevamento di inattività chiamando il metodo
Metodo start()
di IdleDetector
.
Prende un oggetto con il valore threshold
inattivo desiderato in millisecondi
e un signal
facoltativo con un
AbortSignal
:
per interrompere il rilevamento di inattività come parametri.
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);
}
Puoi interrompere il rilevamento di inattività chiamando il metodo
di AbortController
abort()
.
controller.abort();
console.log('IdleDetector is stopped.');
Assistenza per DevTools
A partire da Chromium 94, puoi emulare gli eventi di inattività in DevTools senza essere effettivamente inattivo. In DevTools, apri la scheda Sensori e cerca Emula lo stato del rilevatore di inattività. Puoi vedere le varie opzioni nel seguente video.
Assistenza per burattini
A partire dalla versione 5.3.1 di Puppeteer, puoi emulare i vari stati di inattività per testare in modo programmatico come cambia il comportamento della tua app web.
Demo
Puoi vedere l'API Idle Detection in azione con la demo temporanea di Canvas che ne elimina i contenuti dopo 60 secondi di inattività. Si potrebbe immaginare che il deployment venga eseguito in un reparto un negozio dove i bambini sfondono i loro scarabocchi.
Polyfill
Alcuni aspetti dell'API Idle Detection è la possibilità di eseguire il polyfill e librerie di rilevamento di inattività come idle.ts, ma questi approcci sono limitati all'area dei contenuti di un'app web: La libreria in esecuzione nel contesto dell'app web deve effettuare costoso sondaggio per gli eventi di input o ascoltare cambiamenti di visibilità. In modo più restrittivo, tuttavia, le librerie non possono rilevare oggi quando un utente diventa inattivo al di fuori dell'area dei suoi contenuti (ad es. quando un utente si trova in una scheda diversa o si sono scollegati del tutto dal computer).
Sicurezza e autorizzazioni
Il team di Chrome ha progettato e implementato l'API Idle Detection utilizzando i principi fondamentali
definita in Controllo dell'accesso a potenti funzionalità della piattaforma web,
tra cui controllo dell'utente, trasparenza ed ergonomia.
La possibilità di utilizzare questa API è controllata
Autorizzazione 'idle-detection'
.
Per utilizzare l'API, un'app deve inoltre essere in esecuzione in un
contesto sicuro di primo livello.
Controllo e privacy degli utenti
Vogliamo sempre impedire che utenti malintenzionati facciano un uso improprio delle nuove API. Siti web apparentemente indipendenti, ma che in realtà sono controllate dalla stessa entità, potrebbero ottenere informazioni relative all'inattività dell'utente e correlare i dati per identificare gli utenti unici tra origini. Per mitigare questo tipo di attacchi, L'API Idle Detection limita la granularità degli eventi di inattività segnalati.
Feedback
Il team di Chrome vuole conoscere la tua esperienza con l'API Idle Detection.
Parlaci della progettazione dell'API
C'è qualcosa nell'API che non funziona come previsto? Oppure mancano metodi o le proprietà necessarie per implementare la tua idea? Hai una domanda o un commento sul modello di sicurezza? Segnala un problema relativo alle specifiche sul repository GitHub corrispondente o aggiungi le tue opinioni a un problema esistente.
Segnalare un problema con l'implementazione
Hai trovato un bug nell'implementazione di Chrome? Oppure l'implementazione è diversa dalle specifiche?
Segnala un bug all'indirizzo new.crbug.com. Includi il maggior numero di dettagli possibile,
semplici istruzioni per la riproduzione e inserisci Blink>Input
nella casella Componenti.
Glitch è la soluzione perfetta per condividere riproduzioni in modo facile e veloce.
Mostra il supporto per l'API
Intendi utilizzare l'API Idle Detection? Il tuo supporto pubblico aiuta il team di Chrome a dare la priorità alle funzionalità e indica agli altri fornitori di browser quanto sia fondamentale supportarli.
- Spiega come intendi utilizzarlo nel thread del discorso di WicG.
- Invia un tweet a @ChromiumDev utilizzando l'hashtag
#IdleDetection
: e facci sapere dove e come lo utilizzi.
Link utili
- Spiegazione pubblica
- Specifiche in bozza
- Demo dell'API Idle Detection | Origine demo dell'API Idle Detection
- Monitoraggio del bug
- Voce ChromeStatus.com
- Componente Blink:
Blink>Input
Ringraziamenti
L'API Idle Detection è stata implementata da Sam Goto. Il supporto per DevTools è stato aggiunto da Maksim Sadym. Grazie a Joe Medley, Kayce Basques e Reilly Grant per le sue recensioni su questo articolo. L'immagine hero è di Fernando Hernandez su Rimuovi schermo.