Gestione dello standby su iPad utilizzando Javascript

Per quanto riguarda gli eventi iPad, come determinare se / quando l’iPad passa da uno stato di attesa a uno stato di standby?

Quello che vorrei fare è mettere la mia app Web Mobile-Safari in uno stato bloccato quando l’iPad diventa inattivo / in standby e chiedere un PIN quando si ritriggers.

Sono d’accordo sul fatto che ci dovrebbe essere un segnale che puoi colbind per sapere quando un’applicazione si addormenta e quando si ritriggers, ma dovresti essere in grado di capire quando Safari si triggers indirettamente.

Quando la webview va in secondo piano, Safari mette tutto in esso per dormire. Mette in pausa qualsiasi video, rimanda la richiesta di rete, interrompe l’aggiornamento dell’interfaccia utente e mette in pausa tutte le operazioni setInterval / setTimeout. Lo stesso JS non sarà mai a conoscenza (per quanto posso dire) di come sono andate queste cose, ma può dire che è successo. Il modo più semplice per usarlo consiste nel creare un metodo regolarmente richiamato e verificare se è stato un LUNGO inaspettatamente a partire dall’ultimo aggiornamento. Se ti aspetti che qualcosa si aggiorni ogni 10 secondi e siano trascorsi cinque minuti, puoi essere abbastanza sicuro che il dispositivo si è svegliato. Ecco un rapido esempio che ho pensato:

var intTime = new Date().getTime(); var getTime = function() { var intNow = new Date().getTime(); if (intNow - intTime > 1000) { console.log("I JUST WOKE UP") } intTime = intNow; setTimeout(getTime,500); }; getTime(); 

Questo rileva quando l’utente è tornato da un’altra scheda, ha rimosso la console per sviluppatori o ha riportato Safari dallo sfondo. Ho impostato l’intervallo a mezzo secondo; è ansible impostarlo su qualsiasi cosa tu abbia bisogno, anche se penso che valori molto bassi avranno problemi di concorrenza e probabilmente bruceranno la batteria sul dispositivo inutilmente.

Mobile Safari non ha accesso a questo livello di stato dell’hardware. Il più che penso sia per l’acceleratore.

Una ansible soluzione che ha funzionato per me è quella di usare

 $(window).on('blur', function(){});