Travailler sur un projet et coincé dans un problème:
Application de rechargement du bouton de retour du matériel (j'utilise Angular Router dans cette application).
Mon code pour quitter l'application:
ionViewDidEnter(){
this.subscription = this.platform.backButton.subscribe(()=>{
navigator['app'].exitApp();
});
}
ionViewWillLeave(){
this.subscription.unsubscribe();
}
Bien que la même logique fonctionne dans d'autres applications. mais dans cette application son rechargement de l'application ne la quitte pas.
P.S: je l'ai également essayé de mettre dans platform.ready()
mais pas de chance.
Résolu:
Comme mentionné par @ rtpHarry le modèle de SideMenu/Tabs a l'historique qui conduit l'application à se recharger automatiquement sur la page racine. j'ai pu résoudre ce problème en effaçant l'historique.
ionViewDidEnter(){
navigator['app'].clearHistory();
}
sur votre page racine, effacez simplement votre historique et votre bouton de retour matériel fermera l'application au lieu de la recharger.
Avec IONIC 4 , il y a une nouvelle méthode subscribeWithPriority
développée pour gérer la course entre les boutons retour doux et dur. Essayez de modifier votre code comme ci-dessous:
this.platform.backButton.subscribeWithPriority(1, () => {
navigator['app'].exitApp();
});
subscribeWithPriority()
arrête la propagation de l'événement après son exécution et si nous nous abonnons avec une priorité élevée et exécutons notre navigation préférée au lieu de celle par défaut, alors cela fonctionnera comme vous le souhaitez.
Plus de documents de référence pour plus de détails:
https://github.com/ionic-team/ionic/commit/6a5aec8b5d76280ced5e8bb8fd9ea6fe75fe6795
https://medium.com/@aleksandarmitrev/ionic-hardware-back-button-nightmare-9f4af35cbfb
MISES À JOUR:
this.navCtrl.pop() / this._navCtrl.navigateBack('HomeScreen')
, puis appelez exitApp
.REMARQUE: Les onglets et SideMenu, car ceux-ci ont leur propre module de routage, créent beaucoup de complexité avec la navigation dans les applications.
Avez-vous un menu latéral dans votre application? Je suis juste curieux, car cela semble être le cas lorsque je reçois également ce problème.
Si vous regardez dans votre inspecteur, vous verrez que window.history
a une longueur de 1.
Je ne le vois pas dans certaines de mes applications, mais l'application que j'ai configurée dans le menu latéral agit de cette façon - sur la page d'accueil si vous appuyez sur l'écran devient blanc, puis il recharge l'application.
Comme je le dis, regarder dans l'inspecteur montre qu'il y a une histoire à laquelle revenir, ce qu'il essaie de faire, et quelle que soit cette étape de l'histoire, elle la repousse simplement vers la page d'accueil, ce qui m'a fait me demander si c'était le cas le menu latéral configurant sa propre commande du système de navigation.
J'ai probablement dit une terminologie mal formulée, mais comme je n'ai pas résolu cela moi-même, j'ai pensé que je vous ferais simplement savoir ce que j'avais trouvé ... j'espère que cela vous aidera à aller de l'avant.
Dans mon scénario, je n'essayais même pas de faire la sortie sur le code retour - je viens de remarquer que l'application semblerait "redémarrer" si je continuais à appuyer en arrière.