Opracowałem PWA (oparty na Tab) przy użyciu Ionic 3. Działa to dobrze, dopóki przycisk powrotu sprzętu lub przycisk wstecz przeglądarki nie zostanie naciśnięty w przeglądarce Androida. Jeśli działa na ekranie głównym, naciśnięcie przycisku sprzętowego spowoduje zamknięcie aplikacji. Jeśli aplikacja działa w chrome na Androidzie (tylko testowane w chrome), sprzężenie zwrotne sprzętu lub przeglądarka spowrotem załaduje pierwszą stronę PWA, a nie poprzednio odwiedzaną. Jak radzić sobie z tymi zdarzeniami w Ionic 3 PWA?Jak radzić sobie ze sprzętowym przyciskiem Back w PWA opracowanym przy użyciu Ionic3
Używam leniwe obciążenie dla wszystkich stron.
Co próbowałem dotąd:
zgodnie jgw96 w komentarzu here, myślałem IonicPage będzie obsługiwać nawigację siebie. Ale to nie działa.
Zastosowana platform.registerBackButtonAction, ale nie jest przeznaczona dla PWA.
Zgodnie z sugestią Webruster poniżej w odpowiedziach, wypróbowany kod w app.component.ts. Ale bez zmian. Kod
publikacji:
import { Component, ViewChild } from '@angular/core';
import { Nav, Platform, AlertController, Alert, Events, App, IonicApp, MenuController } from 'ionic-angular';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
@ViewChild(Nav) nav: Nav;
rootPage:any = 'TabsPage';
constructor(public platform: Platform,
public alertCtrl: AlertController, public events: Events,
public menu: MenuController,
private _app: App,
private _ionicApp: IonicApp) {
platform.ready().then(() => {
this.configureBkBtnprocess();
});
}
configureBkBtnprocess() {
if (window.location.protocol !== "file:") {
window.onpopstate = (evt) => {
if (this.menu.isOpen()) {
this.menu.close();
return;
}
let activePortal = this._ionicApp._loadingPortal.getActive() ||
this._ionicApp._modalPortal.getActive() ||
this._ionicApp._toastPortal.getActive() ||
this._ionicApp._overlayPortal.getActive();
if (activePortal) {
activePortal.dismiss();
return;
}
if (this._app.getRootNav().canGoBack())
this._app.getRootNav().pop();
};
this._app.viewDidEnter.subscribe((app) => {
history.pushState (null, null, "");
});
}
}
}
więc czego się spodziewasz, to znaczy to, co powinno się dziać w przeglądarce lub aplikacji na sprzęcie BackButton? – Webruster
Jeśli poruszam się po stronie jak A-> B-> C, to z powrotem naciśnij na C będzie pop na B. Ale w moim przypadku A jest ponowne ładowanie jak nowe wystąpienie. –
zaktualizuj pytanie, podając to, co próbujesz, – Webruster