/ / Por qué el evento de reanudación de Cordova no se activa en modo de bloqueo de energía / Modo de suspensión en iOS usando sencha - ios, iphone, cordova, sencha-touch, sencha-architect

¿Por qué Cordova no reanuda el evento en modo de bloqueo de energía / modo de suspensión en iOS usando sencha - ios, iphone, cordova, sencha-touch, sencha-architect?

En mi aplicación si el usuario bloquea el móvil.Necesito navegar a la pantalla de inicio de sesión. He implementado el evento de reanudación para navegar por la pantalla de inicio de sesión si el usuario desbloquea el dispositivo. ¿Alguien puede decir por qué el evento de reanudación de Cordova no se activa en modo de bloqueo de energía / modo de suspensión en iOS

¿Hay algún otro evento que deba usar en modo de bloqueo?

P.S Está trabajando para minimizar la aplicación y maximizarla.

Respuestas

1 para la respuesta № 1

Aunque en iOS se dispara un evento de reanudación cuandominimizando o maximizando una aplicación presionando el botón de inicio, parece que no se activa un evento de reanudación al "cerrar" o "mirar" la aplicación presionando el botón de encendido al menos en iOS.

Una posible solución JS podría ser buscarinactividad. Supongamos que cuando una aplicación no ha recibido ningún evento activado por un usuario durante un tiempo (30 segundos y si no se ha activado un evento de pausa real desde entonces), por ejemplo, eventos de clic / toque, se puede suponer que la aplicación todavía puede ejecutar algo de código (por lo que todavía está en primer plano) y está "en pausa":

// threshold for inactivity state
var idleTimeout = 30000;
// variable that holds the time in seconds, which indicates how long the app has not received certain events
var timeInSecondsPassed = 0;
// interval instance
var intervalInstance = null;
// variable to handle the transition from "pause" to "resume" state
var inPauseState = false;

function startPauseListener() {
timeInSecondsPassed = 0;
var resetPassedTime = function(){
timeInSecondsPassed = 0;
// has the app reached the "pause" state and
// currently receiving certain events -> the "resume" state is reached
if(inPauseState){
inPauseState = false;
// the "resume" state is reached here
// so the same code might be executed here as it is in the resume-listener
}
};
document.ontouchstart = resetPassedTime;
document.onclick = resetPassedTime;
document.onscroll = resetPassedTime;
document.onkeypress = resetPassedTime;
intervalInstance = setInterval(checkPauseState,1000);
}

function clearPauseListener() {
clearInterval(intervalInstance);
timeInSecondsPassed = 0;
}

function checkPauseState() {
timeInSecondsPassed += 1000;
if (timeInSecondsPassed >= idleTimeout) {
inPauseState = true;
timeInSecondsPassed = 0;
// run further code here to handle "pause" state
// at this point it is assumed as soon as the app receives click/touch-events again a "resume" state is reached.
}
}

function onDeviceReady() {
// handle android devices so that the interval is stopped when a real pause event is fired and started when a real resume event is fired
document.addEventListener("resume", function(){
startPauseListener();
// your actual code to handle real resume events
}, false);

document.addEventListener("pause", function(){
clearPauseListener();
}, false);
}

Cabe señalar que cuando la aplicación es realmentepausado para que se active un evento de pausa, el código anterior no se ejecuta en IOS sino en Android, por eso es posible que deba manejar este szenario en Android de manera diferente al adelantarse tanto en el curriculum vitae como en la escucha de pausa en Android cuando la aplicación está minimizado por el botón de inicio, el intervalo se seguiría ejecutando y consume CPU en segundo plano.

¡Y tenga en cuenta también que es solo una especie de código conceptual y no se ha probado en ningún dispositivo!

Espero que esto ayude.


0 para la respuesta № 2

Hay un evento específico de iOS llamado active que "detecta cuando los usuarios deshabilitan el botón Bloquear para desbloquear el dispositivo con la aplicación ejecutándose en primer plano".

Consulte la documentación en la parte inferior de la resume página del documento:

https://cordova.apache.org/docs/en/5.1.1/cordova/events/events.resume.html