У меня есть 5 вкладок в моем приложении ionic 3, и они работают, как и ожидалось, в приложении.
Теперь я внедряю push-уведомления FCM и пытаюсь перенаправить пользователя из уведомления на конкретный экран, используя приведенный ниже код
this.fcm.onNotification().subscribe(data => {
if(data.wasTapped){
if(window.localStorage.getItem("rememberMe") == "true"){
this.rootPage = TabsPage;
if(data.location == "Page2"){
this.app.getRootNav().getActiveChildNav().select(0);
this.eve.publish('user:created', 0);
setTimeout(() => {
this.app.getActiveNav().push(Page2,{'storyData':data,'imgpath':'pathtoimage'});
}, 100);
} else if(data.location == "Page1"){
this.app.getRootNav().getActiveChildNav().select(0);
this.eve.publish('user:created', 0);
} else if(data.location == "Page3") {
this.app.getRootNav().getActiveChildNav().select(3);
this.eve.publish('user:created', 3);
}
}
console.log("Received in background");
} else {
console.log("Received in foreground");
};
});
это работает нормально, когда приложение убито или не работает в фоновом режиме, и я могу перенаправить пользователя на нужные страницы вместе с активными соответствующими вкладками.
когда приложение находится в фоновом режиме, страницы снова отлично загружаются, но активная вкладка не выбирается, вместо нее отображается ранее выбранная вкладка.
tabs.html
<ion-tabs selectedIndex={{dat}} (ionChange)="tada($event)">
<ion-tab style="font-family:segoeprb" [root]="tab1Root" tabTitle="tab1" tabIcon="icon"></ion-tab>
<ion-tab [show]="guest" [root]="tab2Root" tabTitle="tab2" tabIcon="icon"></ion-tab>
<ion-tab [show]="guest" [root]="tab3Root" tabTitle="tab3" tabIcon="icon"></ion-tab>
<ion-tab [root]="tab4Root" tabTitle="tab4" tabIcon="icon"></ion-tab>
<ion-tab [show]="guest" [root]="tab5Root" tabTitle="tab5" tabIcon="icon"></ion-tab>
</ion-tabs>
здесь я использую selectedIndex, добавленный к dat, и обновляю его, используя события, которые выталкиваются из app.component, как вы можете видеть.
tabs.ts
eve.subscribe('user:created', (data) => {
this.dat = data;
console.log(this.dat);
});
здесь я вижу переданное значение индекса вкладки, но оно не обновляется, когда приложение загружается из фонового режима.