我在我的应用程序上启用了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"
}
我最近一直在纠结这个问题,要想在后台听到通知,你必须订阅一个订阅,你会在platform.pause中得到这个订阅(platform是一个来自@ionicangular的平台类型的变量)。
在这个订阅里面,你应该能听到firebaseX的通知。
希望我的回答对你有所帮助,如果你有什么问题,不要犹豫,可以问我。