web-dev-qa-db-ja.com

Ionic 4:アプリケーションを再ロードするハードウェアの戻るボタン

プロジェクトに取り組んでいて、問題が発生している:

ハードウェア戻るボタンリロードアプリケーション(Angularルーターを使用しています)。

アプリケーションを終了するための私のコード:

_  ionViewDidEnter(){
      this.subscription = this.platform.backButton.subscribe(()=>{
          navigator['app'].exitApp();
      });
  }

  ionViewWillLeave(){
        this.subscription.unsubscribe();
  }
_

同じロジックが他のアプリケーションで動作している間。しかし、このアプリケーションでは、アプリケーションの再読み込みは終了していません。

PS:私はplatform.ready()にも入れようとしましたが、うまくいきませんでした。

8
Najam Us Saqib

解決済み:

SideMenu/Tabsの @ rtpHarry テンプレートによる言及には、アプリケーションがルートページにそれを再ロードするように導く履歴があります。履歴をクリアすることで解決できました。

ionViewDidEnter(){
  navigator['app'].clearHistory();    
}

ルートページで履歴を消去するだけで、ハードウェアの[戻る]ボタンは、アプリケーションを再ロードする代わりに閉じます。

2
Najam Us Saqib

IONIC 4を使用すると、ソフトボタンとハードバックボタン間の競合を処理するために開発された新しいメソッドsubscribeWithPriorityがあります。以下のようにコードを変更してみてください:

_ this.platform.backButton.subscribeWithPriority(1, () => {
        navigator['app'].exitApp();
 });
_

subscribeWithPriority()は、イベントの実行後にイベントの伝播を停止します。高い優先度でサブスクライブし、デフォルトのナビゲーションではなく優先ナビゲーションを実行すると、期待どおりに機能します。

詳細については、次のリファレンスドキュメントをご覧ください:
https://github.com/ionic-team/ionic/commit/6a5aec8b5d76280ced5e8bb8fd9ea6fe75fe6795
https://medium.com/@aleksandarmitrev/ionic-hardware-back-button-nightmare-9f4af35cbf​​b

更新:

  • この新しいバージョンのexitApp cordovaプラグイン を使用してみてください。私はまだ試していませんが、人気から有望に見えます。
  • また、Navcontrollerからページスタックを空にするか、ホーム画面に移動してみてください。これにより、サイドメニューとタブページがあるアプリのリロードが発生しているようです... this.navCtrl.pop() / this._navCtrl.navigateBack('HomeScreen')を呼び出し、exitAppを呼び出します。

注:タブとSideMenuには独自のルーティングモジュールがあるため、アプリのナビゲーションが非常に複雑になります。

3
Amith Kumar

アプリにサイドメニューはありますか?これは私もこの問題を抱えているときのようです。

インスペクタを見ると、window.historyの長さは1です。

一部のアプリでは表示されませんが、サイドメニューを設定したアプリはこのように動作します。ホームページを押すと、画面が白くなり、アプリがリロードされます。

私が言うように、インスペクターを見ると、ステップバックする履歴があり、それが行おうとしていることがわかります。そして、その履歴ステップが何であれ、それはホームページに押し戻されるだけでした。ナビゲーションシステムの独自のコントロールを設定するサイドメニュー。

言葉の表現が不適切な言葉を多分言ったかもしれませんが、私自身はこれを解決していないので、私が見つけたものをあなたに知らせたいと思っていました...

私のシナリオでは、バックコードで終了を実行することすらしていませんでした。押し続けると、アプリが「再起動」するように見えることに気づきました。

1
rtpHarry