Ionic原生推送通知(Firebase X)在应用程序处于后台时不显示。

问题描述 投票:0回答:1

我在我的应用程序上启用了Ionic Native Push通知,这是通过FirebaseX.我的问题是,如果应用程序在前台打开,我就会收到通知,但如果它在后台,我什么都没有得到。

当我拉起应用程序时,它就会提供。

谁能给我点提示?

这是我的服务。

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { FirebaseX } from '@ionic-native/firebase-x/ngx';
import { AngularFirestore } from '@angular/fire/firestore';
import { Platform } from '@ionic/angular';
import { LoginService } from './login.service';

@Injectable()

export class FCMProvider {
    constructor(
        public firebaseX: FirebaseX,
        public afs: AngularFirestore,
        private platform: Platform,
        private loginService: LoginService
    ) {}

    async getToken() {
        let token;

        if (this.platform.is('android')) {
            token = await this.firebaseX.getToken();
        }

        if (this.platform.is('ios')) {
            const hasPermission = await this.firebaseX.hasPermission();
            if (!hasPermission) {
                await this.firebaseX.grantPermission();
            } else {
                token = await this.firebaseX.getToken();
            }
        }

        console.log(token);

        return this.saveTokenToFirestore(token);
    }

    saveTokenToFirestore(token: string) {
        if (!token) {
            return;
        }

        const devicesRef = this.afs.collection('devices');
        let userOs;
        if (this.platform.is('ios')) {
            userOs = 'ios';
        } else {
            userOs = 'android';
        }
        const docData = {
            token,
            os: userOs,
            userID: this.loginService.getUID()
        };

        return devicesRef.doc(token).set(docData);
    }

    listenToNotifications() {
        return this.firebaseX.onMessageReceived();
    }
}

在我的app.component.ts中,我在后面得到了这样的内容 deviceReady:

pushNotification() {
    this.fcProvider.getToken();
    this.fcProvider.listenToNotifications()
      .pipe(
        tap(msg => {
          const toast = this.toastCtrl.create({
            message: msg.body,
            duration: 4000
          });
          toast.then(a => a.present());
        })
      )
      .subscribe();
}

我是通过邮递员发送消息的。

{
    "to": "e749fugfe793hfhwifh8988799f:...",
    "name": "my_notification",
    "data": {
        "title": "Test",
        "body": "This is just a test notification",
        "notification_foreground": "true",
        "notification_body" : "Notification body",
        "notification_title": "Notification title",
        "forceStart": "1"
    },
    "priority": "high"
}

ionic-framework firebase-cloud-messaging ionic-native
1个回答
0
投票

我最近一直在纠结这个问题,要想在后台听到通知,你必须订阅一个订阅,你会在platform.pause中得到这个订阅(platform是一个来自@ionicangular的平台类型的变量)。

在这个订阅里面,你应该能听到firebaseX的通知。

希望我的回答对你有所帮助,如果你有什么问题,不要犹豫,可以问我。

© www.soinside.com 2019 - 2024. All rights reserved.