Como borrar el historial de navegacion en ionic framework

publicado por: Anonymous

Hola comunidad tenga una duda acerca del uso de $ionicHistory que hace parte de las extensión Navigation de las extensiones javascript/angular.

Quisiera saber como evitar volver atrás cuando este en uno de los dos menus, dependiendo del rol del usuario que halla ingresado.

estructura de la app

Quisiera resolver las siguientes inquietudes

  1. Solo puede dar al botón de atrás si la vista no es la del menú (sea estudiante o profesor)
  2. En el caso de android, existe el botón atrás, sea físico o digital, si esta en la vista o template de cualquiera de los dos menús, entonces, al dar atras, debe salir de la aplicacion
  3. Evitar que guarde rutas o vistas en este historial, para evitar conflictos en un futuro.

solución

Tu problema puede resolverse usando el método clearHistory() del servicio $ionicHistory tanto en tu controller de la vista estudiante o profesor puedes llamar a ese método y esto evitará que se pueda navegar hacia atrás ya que ese método elimina el historial excepto la vista actual(por eso es necesario que lo hagas en la vista del estudiante o profesor).

...
.controller('EstudianteCtrl', function($ionicHistory) {
    ...
    $ionicHistory.clearHistory();
});

También puedes usar el método nextViewOptions() y desabilitar el botón atrás de esta forma

 $ionicHistory.nextViewOptions({
     disableBack: true // Esto pone en `null` la vista anterior
 });

Pero esto debes hacerlo desde la vista anterior(La vista “cargando”) ya que eso aplica a la próxima vista a mostrar antes de transicionar a ella.

Por último para hacer que tu aplicacion salga al presionar el boton back tienes que usar el servicio $ionicPlatform usando onHardwareBackButton pero te estas adentrando inadvertidamente en un problema:

  1. Si sales de tu aplicación al hacer back corres el riesgo que tus usuarios salgan de la aplicación sin quererlo, sobre todo si tienes muchas vistas en profundidad en tu navegación. Atrás…, Atrás…, Atrás…, Salir…Ups!!!
  2. La mayoría de las aplicaciones móviles implementan una forma de salir al llegar a la vista del home usando el botón back lo cual se ha convertido practicamente en un standard.
  3. Tu quieres mantener a los usuarios dentro de tu aplicación y no fuera de ella 😉

La solución que yo le veo a eso es usar dos pulsaciones back en lugar de una mostrando un toast con un mensaje con algo así como “Presione nuevamente para salir”

El toast lo puedes instalar con un plugin que puedes encontrar en https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin usando

cordova plugin add cordova-plugin-x-toast

Luego en el evento platformReady estableces el evento(para asegurarse de que el plugin haya cargado)

$ionicPlatform.ready(function () {
    var closeApp = false;
    $ionicPlatform.onHardwareBackButton(function () {
            if ($state.is('mivistaraiz')) {
                if (closeApp === true) {
                    navigator.app.exitApp();
                }
                else {
                    closeApp = true;
                    $timeout(function () {
                        closeApp = false;
                    }, 2000);
                    notifications.notify("Presione nuevamente para salir", "short", "bottom");
                }
            }
        });
});

Puedes cambiar el timeout para que sea más grande pero básicamente lo que hace es salir si se presiona el back en un intervalo de 2 segundos sino vuelve a mostrar el toast, evitando así que tus usuarios salgan de la aplicación por accidente.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *