У меня есть приложение для ионного чата, которое получает push-уведомления от облачных функций Firebase ... вы нажимаете значок, и приложение открывается. Проблема в том, что он не переходит на указанную страницу при получении уведомления в фоновом режиме, только на переднем плане.
Вот мой компонент приложения:
initializeApp() {
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
this.platform.ready().then(() => {
const unsubscribe = firebase.auth().onAuthStateChanged( user => {
if (!user) {
this.router.navigateByUrl('login');
unsubscribe();
} else {
this.router.navigateByUrl('tabs');
unsubscribe();
}
});
this.statusBar.styleDefault();
this.splashScreen.hide();
this.getDeviceToken();
});
}
getDeviceToken() {
this.fcm.onNotification().subscribe(data => {
if (data.wasTapped) {
this.router.navigateByUrl('tabs/connections');
console.log("Received in background", data.wasTapped);
} else {
console.log("Received in foreground", data.wasTapped);
this.router.navigateByUrl('tabs/connections');
}
});
this.fcm.onTokenRefresh().subscribe(token => {
// Register your new token in your back-end if you want
this.fcmService.saveTokenToFirestore(token, this.loggedInUser.uid);
});
}
если приложение открыто и оно получает push-уведомление на переднем плане, оно будет переходить на указанную страницу, но не при закрытии.
Iсомневаюсь, что эти ошибки, которые появляются, когда я открываю приложение, имеют какое-либо отношение к нему ... они были там до push-уведомлений и не обременяли какую-либо функциональность ... просто думал, что стоит упомянуть:
Failed to load resource: the server responded with a status of 404 ()
polyfills.js:3040 Unhandled Promise rejection: Error Status 404: App not found ; Zone: <root> ; Task: Promise.then ; Value: Error: Error Status 404: App not found
at IonicDeployImpl.<anonymous> (/plugins/cordova-plugin-ionic/dist/common.js:291)
at step (/plugins/cordova-plugin-ionic/dist/common.js:37)
at Object.next (/plugins/cordova-plugin-ionic/dist/common.js:18)
at fulfilled (/plugins/cordova-plugin-ionic/dist/common.js:9)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.js:2749)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (polyfills.js:2508)
at polyfills.js:3247
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2781)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (polyfills.js:2553)
at drainMicroTaskQueue (polyfills.js:2959) Error: Error Status 404: App not found
at IonicDeployImpl.<anonymous> (http://localhost/plugins/cordova-plugin-ionic/dist/common.js:291:35)
at step (http://localhost/plugins/cordova-plugin-ionic/dist/common.js:37:23)
at Object.next (http://localhost/plugins/cordova-plugin-ionic/dist/common.js:18:53)
at fulfilled (http://localhost/plugins/cordova-plugin-ionic/dist/common.js:9:58)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost/polyfills.js:2749:26)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (http://localhost/polyfills.js:2508:43)
at http://localhost/polyfills.js:3247:34
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost/polyfills.js:2781:31)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (http://localhost/polyfills.js:2553:47)
at drainMicroTaskQueue (http://localhost/polyfills.js:2959:35)
В противном случае я не получаю никаких ошибок в консоли. ТАКЖЕ, это не ведение журнала консоли "console.log (" Получено в фоновом режиме ", data.wasTapped);"
Это будет console.log "console.log (" Получено на переднем плане ", data.wasTapped);"
Опять же, это Ionic 4 с Firebase ... любая помощь будет принята с благодарностью.
Мне удалось, по крайней мере, на консоли, чтобы регистрировать данные, было нажата = true. Но теперь я получаю эту ошибку:
Навигация сработала за пределами угловой зоны, вы забыли вызвать 'ngZone.run ()'?