Выйти из приложения с помощью IONIC 3 с определенной страницы с помощью кнопки "Назад"

Я пытаюсь выйти из приложения с определенной страницы (HometabsPage), используя кнопку "Назад". Я использую ниже код:

  var lastTimeBackPress = 0;
  var timePeriodToExit = 2000;

  platform.registerBackButtonAction(() => {
    let view = this.nav.getActive();
    if (view.component.name == 'SignInPage' ) {
      if (new Date().getTime() - lastTimeBackPress < timePeriodToExit) {
        platform.exitApp(); //Exit from app
      } else {
        this.common.presentToast("Press back again to exit App?", "bottom");
        lastTimeBackPress = new Date().getTime();
      }
    } else {
      this.nav.pop({});
    }
  });

В моем приложении есть два раздела SignIn и Hometabs. Над кодом хорошо работает на странице входа.

if (view.component.name == 'SignInPage')

Но я пытаюсь использовать " HometabsPage " вместо " SignInPage ", после чего на всех страницах показывается тостовое сообщение.

Пожалуйста, помогите мне.

2 ответа

Решение

@Neotrixs После входа в систему установите HomeTabsPage в качестве своей корневой страницы. Это предотвратит возврат вашего приложения в LoginPage.
Для аппаратной кнопки возврата я сделал это следующими способами:

/* REGISTERING BACK BUTTON TO HANDLE HARDWARE BUTTON CLICKED */
  registerBackButton(){
    let backButton = this.platform.registerBackButtonAction(() => {
      var stackSize = this.nav.length();
      if(stackSize < 1)
        this.askForPressAgain();
      else
        this.nav.pop();  
    },1);

  }

  /*ASKING FOR PRESS BACK BUTTON AGAIN*/
  askForPressAgain(){
    let view = this.nav.getActive();
    if (view.component.name == 'ProjectsPage' || view.component.name == 'LoginPage') {
      if ((new Date().getTime() - this.lastTimeBackPress) < this.timePeriodToExit) {
        this.platform.exitApp(); //Exit from app
      } else {
        this.toast.showBottomToast(BACK_BTN_MESSAGE);
        this.lastTimeBackPress = new Date().getTime();
      }
    }

}

В приведенном выше коде сначала я проверил размер стека, если он меньше 1, а затем показал тост для подтверждения выхода из приложения.
Надеюсь, это поможет вам или кому-то еще.

Ionic последняя версия 3.xx

Файл app.component.ts:

import { Platform, Nav, Config, ToastController } from 'ionic-angular';

constructor(public toastCtrl: ToastController, public platform: Platform) {
    platform.ready().then(() => {
        //back button handle
        //Registration of push in Android and Windows Phone
        var lastTimeBackPress = 0;
        var timePeriodToExit  = 2000;

        platform.registerBackButtonAction(() => {
            // get current active page
            let view = this.nav.getActive();
            if (view.component.name == "TabsPage") {
                //Double check to exit app
                if (new Date().getTime() - lastTimeBackPress < timePeriodToExit) {
                    this.platform.exitApp(); //Exit from app
                } else {
                    let toast = this.toastCtrl.create({
                        message:  'Press back again to exit App?',
                        duration: 3000,
                        position: 'bottom'
                    });
                    toast.present();
                    lastTimeBackPress = new Date().getTime();
                }
            } else {
                // go to previous page
                this.nav.pop({});
            }
        });
    });
}
Другие вопросы по тегам