Ionic не переходит на указанный URL после push-уведомления - PullRequest
0 голосов
/ 30 октября 2019

У меня есть приложение для ионного чата, которое получает 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 ()'?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

У меня была такая же проблема. Но затем я попытался отправить уведомление, используя https://cordova -plugin-fcm.appspot.com / . Поэтому после отправки уведомления по данной ссылке, когда я нажал на уведомление, оно перенаправилось на нужную страницу. Итак, я узнал, что в моем коде не было проблем, но есть проблема в коде отправки уведомлений. Подробнее читайте в этой статье https://enappd.com/blog/implement-ionic-4-firebase-push/34/

0 голосов
/ 31 октября 2019

Наконец-то понял это. Я использую модуль вкладок. Поэтому, чтобы это работало, мне пришлось поместить fcm.onNotification в модуль основных вкладок. Теперь это работает, когда приложение находится в фоновом режиме

...