Botón de retroceso en cordova / phongap meteoro construir para Android no cerrar la aplicación de forma coherente

He construido y la aplicación para Android con meteorito y phonegap / cordova: https://play.google.com/store/apps/details?id=com.idqkd3gsl4qt51152xgy

Funciona decentemente bien (especialmente dado que no soy realmente un programador), pero un problema de UX con el que he estado luchando es que la aplicación no se cerrará consistentemente al presionar el botón de retroceso en mi teléfono. De vez en cuando trabaja en la primera prensa, pero la mayor parte del tiempo tengo que atascarlo 5-6 veces en una fila para conseguir la aplicación para cerrar.

Estoy usando el último enrutador de hierro. El resto de los paquetes que estoy usando no parecen ser particularmente relevantes para este problema, pero son los siguientes sólo por si acaso:

Paquetes de paquetes estándares coffeescript natestrauser: font-awesome@4.1.0 cuentas-contraseña aldeed: autoform aldeed: colección2 nemo64: bootstrap menos alanning: roles joshowens: cuentas-entrada mrt: accounts-admin-ui-bootstrap-3 mizzao: jquery -ui hierro: router sacha: spin raix: empujar mizzao: bootboxjs meteorhacks: kadira bootstrap3-media-query

El repo se puede ver aquí: https://github.com/The3vilMonkey/BrewsOnTap

3 Solutions collect form web for “Botón de retroceso en cordova / phongap meteoro construir para Android no cerrar la aplicación de forma coherente”

No puedo especificar la razón exacta de este problema aparte de que parece que en el inicio hay una especie de redirección sucediendo con aplicaciones cordova. La mejor solución que he encontrado es coger el evento popstate y cuando regrese a la salida de inicio o suspender la aplicación .. Prefiero suspender de esa manera cuando el usuario vuelve a la aplicación no comienza su ciclo de vida desde el principio .

if(Meteor.isCordova){ Meteor.startup(function(){ window.onpopstate = function () { if (history.state && history.state.initial === true){ navigator.app.exitApp(); //or to suspend meteor add cordova:org.android.tools.suspend@0.1.2 //window.plugins.Suspend.suspendApp(); } }; }); } 

Una advertencia que me hizo cuando usé por primera vez esto fue redirigir a una página de inicio de sesión si el usuario no ha iniciado sesión. Si está utilizando este método en una aplicación que hace esto, usted querrá cambiar a la prestación de la entrada Página en su lugar en lugar de redirigir de lo contrario su aplicación saldrá / suspenderá inmediatamente.

En mi caso, hice una mezcla de las dos respuestas anteriores para que funcione bien.

 document.addEventListener("backbutton", function(){ if (history.state && history.state.initial === true) { navigator.app.exitApp(); } else { history.go(-1); } }); 

Mientras que la respuesta de Kelly funciona, no terminó siendo funcionalmente correcta para mi situación particular. Un punto importante a tener en cuenta sobre esa solución es que saldrá tan pronto como el botón de retroceso le haga volver a la página inicial y no cuando presione el botón de retroceso mientras está en la página inicial.

En última instancia utilicé el escucha del backbutton de cordova para ver si el backbutton fue presionado:

 if Meteor.isCordova Meteor.startup -> document.addEventListener("backbutton", -> if document.location.pathname is "/" navigator.app.exitApp() else history.go(-1) 

Y luego si estoy en la raíz de mi aplicación de salir / suspender, de lo contrario simplemente volver en la historia.

Usando el escuchador de eventos backbutton parece anular su funcionalidad por defecto, así que llamar a history.go (-1) era necesario en mi caso.

También tenga en cuenta que esta solución se rompería si desea un historial verdadero que podría volver a través del historial (potencialmente golpear la raíz de su aplicación varias veces) antes de existir en el punto de entrada inicial. Una combinación de mi respuesta y de Kelly podría funcionar para eso. Me parece que mientras que podría ser el comportamiento esperado para los sitios web, no es realmente para aplicaciones móviles.

  • Imágenes externas no se muestran en la aplicación de Android - Meteor - Córdoba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.