안녕하세요. IT김군입니다.


Ionic Framework로 Cross Platform을 개발할 시 IOS는 종료의 기능을 지원하지 않으니 Android의 종료기능을 구현하셔야 될텐데요.


저 같은 경우는 뒤로가기 두 번으로 App을 종료하는 기능을 자주 사용합니다.


모든 페이지에 다 적용되도록 app.component.ts에 작업하였습니다.


우선 import 작업과 생성자에 선언 작업을 아래와 같이 해줍니다.

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

constructor(platform : Platform, private app : App, private toastCtrl : ToastController)


위의 작업이 완료되셨다면 저는 생성자 platform.ready().then(() => {'여기'}); 저 플랫폼레디 내부에 아래 소스를 넣었습니다.

// 뒤로가기 두 번 종료
      platform.registerBackButtonAction(() => {
        const overlay = this.app._appRoot._overlayPortal.getActive();
        const nav = this.app.getActiveNav();
        const closeDelay = 2000;
        const spamDelay = 500;

        if(overlay && overlay.dismiss) {
          overlay.dismiss();
        } else if(nav.canGoBack()){
          nav.pop();
        } else if(Date.now() - this.lastBack > spamDelay && !this.allowClose) {
          this.allowClose = true;
          let toast = this.toastCtrl.create({
            message: "'뒤로가기' 버튼을 연속으로 두 번 누르시면 App이 종료됩니다.",
            duration: closeDelay,
            dismissOnPageChange: true
          });
          toast.onDidDismiss(() => {
            this.allowClose = false;
          });
          toast.present();
        } else if(Date.now() - this.lastBack < closeDelay && this.allowClose) {
          platform.exitApp();
        }

        this.lastBack = Date.now();
      });

넣고 나면 정상작동하는 것을 확인하실 수 있습니다.


궁금하신 점이나 제가 틀린 부분이 있다면 댓글달아주세요.


감사합니다.


WRITTEN BY
IT김군
S/W 개발자 김군의 메모장

,