L'API Screen Wake Lock consente di impedire ai dispositivi di oscurare o bloccare lo schermo quando un'applicazione deve rimanere in esecuzione.
Che cos'è l'API Screen Wake Lock?
Per evitare di consumare la batteria, la maggior parte dei dispositivi entra rapidamente in modalità di sospensione quando non è attiva. Anche se questo va bene per la maggior parte del tempo, alcune applicazioni devono mantenere attivo lo schermo per completare il loro lavoro. Alcuni esempi sono le app di cucina che mostrano i passaggi di una ricetta o un gioco come Ball Puzzle, che utilizza le API di movimento del dispositivo per l'input.
L'API Screen Wake Lock consente di impedire al dispositivo di oscurare e bloccare lo schermo. Questa funzionalità consente nuove esperienze che, finora, richiedevano un'app specifica per la piattaforma.
L'API Screen Wake Lock riduce la necessità di soluzioni alternative ingannevoli e potenzialmente dispendiose di energia. Risponde ai difetti di un'API meno recente, che si limitava al semplice mantenimento dello schermo e presentava una serie di problemi di sicurezza e privacy.
Casi d'uso suggeriti per l'API Screen Wake Lock
RioRun, un'app web sviluppata da The Guardian, è stato un caso d'uso perfetto (anche se non è più disponibile). L'app ti permette di fare un tour audio virtuale di Rio, seguendo il percorso della maratona olimpica del 2016. Senza i wakelock, gli schermi degli utenti si disattivavano spesso durante la riproduzione del tour, rendendo difficile l'utilizzo.
Naturalmente, ci sono molti altri casi d'uso:
- Un'app di ricette che mantiene lo schermo acceso mentre cucini una torta o cucini la cena
- Un'app di carte d'imbarco o di biglietti che mantiene lo schermo attivo finché non viene scansionato il codice a barre
- Un'app in stile kiosk che mantiene lo schermo acceso in modo continuo
- Un'app di presentazione basata sul web che mantiene lo schermo acceso durante una presentazione
Stato attuale
Passaggio | Stato |
---|---|
1. Crea messaggio esplicativo | N/A |
2. Crea una bozza iniziale della specifica | Completato |
3. Raccogli feedback e ottimizza il design | Completato |
4. Prova dell'origine | Completo |
5. Avvia | Completato |
Utilizzo dell'API Screen Wake Lock
Tipi di wakelock
L'API Screen Wake Lock attualmente fornisce un solo tipo di wakelock: screen
.
Wakelock di screen
Un wakelock di screen
impedisce allo schermo del dispositivo di disattivarsi
in modo che l'utente possa vedere le informazioni visualizzate sullo schermo.
Attivazione del wakelock schermo
Per richiedere un wakelock schermo, devi chiamare il metodo navigator.wakeLock.request()
che restituisce un oggetto WakeLockSentinel
.
Passi a questo metodo il tipo di wakelock desiderato come parametro,
che attualmente è limitato a 'screen'
e pertanto è facoltativo.
Il browser può rifiutare la richiesta per vari motivi (ad esempio,
perché il livello di carica della batteria è troppo basso),
quindi è buona norma includere la chiamata in un'istruzione try…catch
.
Il messaggio dell'eccezione conterrà ulteriori dettagli in caso di errore.
Rilascio di un wakelock schermo
Devi anche trovare un modo per rilasciare il blocco riattivazione schermo, che si ottiene chiamando il
metodo release()
dell'oggetto WakeLockSentinel
.
Se non memorizzi un riferimento a WakeLockSentinel
, non è possibile rilasciare il blocco manualmente, ma verrà rilasciato una volta che la scheda corrente sarà invisibile.
Se vuoi rilasciare automaticamente il blocco riattivazione schermo
dopo un determinato periodo di tempo,
puoi utilizzare window.setTimeout()
per chiamare release()
, come mostrato nell'esempio seguente.
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request();
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock released:', wakeLock.released);
});
console.log('Screen Wake Lock released:', wakeLock.released);
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
L'oggetto WakeLockSentinel
ha una proprietà denominata released
che
indica se una sentinel è già stata rilasciata.
Il suo valore è inizialmente false
e cambia in true
una volta inviato un
evento "release"
. Questa proprietà consente agli sviluppatori web di sapere
quando è stato rilasciato un blocco, in modo che non debbano tenerne traccia manualmente.
È disponibile a partire da Chrome 87.
Ciclo di vita del wakelock dello schermo
Quando giochi con la demo della funzionalità di riattivazione schermo, noterai che i wakelock dello schermo sono sensibili alla visibilità delle pagine. Ciò significa che il wakelock schermo verrà rilasciato automaticamente quando riduci a icona una scheda o una finestra oppure esci da una scheda o una finestra in cui è attivo il blocco riattivazione schermo.
Per riacquisire il wakelock schermo,
ascolta l'evento visibilitychange
e richiedi un nuovo blocco riattivazione schermo quando si verifica:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
Riduci al minimo l'impatto sulle risorse di sistema
Dovresti usare un blocco attivazione schermo nella tua app? L'approccio da adottare dipende dalle esigenze della tua app. In ogni caso, dovresti utilizzare l'approccio più leggero possibile per la tua app per ridurre al minimo il suo impatto sulle risorse di sistema.
Prima di aggiungere un wakelock schermo alla tua app, valuta se è possibile risolvere i tuoi casi d'uso con una delle seguenti soluzioni alternative:
- Se la tua app esegue download di lunga durata, puoi utilizzare il recupero in background.
- Se la tua app sincronizza i dati da un server esterno, potresti utilizzare la sincronizzazione in background.
Demo
Dai un'occhiata alla demo di Blocco attivazione schermo e alla fonte della demo. Osserva come il wakelock schermo viene rilasciato automaticamente quando cambi scheda o app.
Wakelock dello schermo nel Task Manager del sistema operativo.
Puoi utilizzare la gestione delle attività del sistema operativo per verificare se un'applicazione impedisce al computer di eseguire la sospensione. Il video seguente mostra la funzionalità Monitoraggio attività di macOS che indica che Chrome ha un wakelock dello schermo attivo che mantiene attivo il sistema.
Feedback
Il Web Platform Incubator Community Group (WICG) e il team di Chrome vogliono conoscere le tue opinioni ed esperienze con l'API Screen Wake Lock.
Parlaci della progettazione dell'API
C'è qualcosa nell'API che non funziona come previsto? Oppure mancano metodi o proprietà di cui hai bisogno per implementare la tua idea?
- Segnala un problema di specifica sul repository GitHub dell'API Screen Wake Lock o aggiungi le tue opinioni a un problema esistente.
Segnala un problema con l'implementazione
Hai trovato un bug nell'implementazione di Chrome? Oppure l'implementazione è diversa dalle specifiche?
- Segnala un bug all'indirizzo https://new.crbug.com. Assicurati di includere il maggior numero di dettagli possibile, fornisci istruzioni semplici per riprodurre il bug e imposta Componenti su
Blink>WakeLock
. Glitch funziona benissimo per condividere riproduzioni rapide e semplici.
Mostra il supporto dell'API
Hai intenzione di utilizzare l'API Screen Wake Lock? Il tuo supporto pubblico aiuta il team di Chrome a dare la priorità alle funzionalità e mostra ad altri fornitori di browser quanto è fondamentale supportarle.
- Condividi come prevedi di utilizzare l'API nel thread del discorso WiCG.
- Invia un tweet a @ChromiumDev usando l'hashtag
#WakeLock
e facci sapere dove e come lo stai usando.
Link utili
- Specifica Consiglio sui candidati | Bozza dell'editor
- Demo Blocco attivazione schermo | Fonte della demo Blocco riattivazione schermo
- Bug di monitoraggio
- Voce ChromeStatus.com
- Sperimentazione con l'API Wake Lock
- Componente Blink:
Blink>WakeLock
Ringraziamenti
Immagine hero di Kate Stone Matheson su Unsplash. Video del Task Manager per gentile concessione di Henry Lim.