我的问题涉及使用Flutter和firebase_messaging插件进行推送通知。
问题:
我已将firebase_messaging插件集成到我的Flutter应用程序中以进行推送通知。 我可以保证,就我所知,设置是正确的,因为我正在接收推送通知。 问题出现在仅当我的应用程序在后台运行(如最小化但仍在系统内存中)时才会接收到推送。 当应用程序在前台或被杀死时,将无法接收到推送。
为了提供我尝试过的解决方案,我无法弄清楚实际上需要做什么。
我已经按照教程进行了操作,并采取了每一步来克服问题,但都没有成功。
我正在使用NodeJS处理firebase-admin和serviceaccountkey文件,因为我需要从我的数据库中获取device_tokens。
问题:
我已将firebase_messaging插件集成到我的Flutter应用程序中以进行推送通知。 我可以保证,就我所知,设置是正确的,因为我正在接收推送通知。 问题出现在仅当我的应用程序在后台运行(如最小化但仍在系统内存中)时才会接收到推送。 当应用程序在前台或被杀死时,将无法接收到推送。
为了提供我尝试过的解决方案,我无法弄清楚实际上需要做什么。
我已经按照教程进行了操作,并采取了每一步来克服问题,但都没有成功。
我正在使用NodeJS处理firebase-admin和serviceaccountkey文件,因为我需要从我的数据库中获取device_tokens。
const firebase = require('firebase-admin');
const serviceAccount = require('../controller/firebase/serviceAccountKey.json');
firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount)
});
//Function to actually implement the push
const pushNotificationInitiatorSubscription = (resultValue) => {
let devicesTokenString = resultValue[0]['device_token'];
const firebaseToken = devicesTokenString;
const payLoad = {
notification: {
title: 'New Subscription',
body: 'You have a new subscription to your material ' + resultValue[0]['course_name']
}
};
const option = {
priority: 'high'
};
firebase.messaging().sendToDevice(firebaseToken, payLoad, option).then(success => {
// console.log(success.results[0]['error']);
// console.log(success.results[1]['error']);
// console.log(success);
}).catch(err => {
console.log(err);
})
Flutter
import 'package:firebase_messaging/firebase_messaging.dart';
class FirebaseCloudMessage {
static FirebaseCloudMessage _instance = new FirebaseCloudMessage.internal();
FirebaseCloudMessage.internal();
factory FirebaseCloudMessage() => _instance;
final FirebaseMessaging _firebaseMessaging = new FirebaseMessaging();
configureFirebaseListeners() {
print('Here');
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("Message $message");
// return message;
}, onLaunch: (Map<String, dynamic> message) async {
print("Message $message");
// return message;
}, onResume: (Map<String, dynamic> message) async {
print("Message $message");
// return message;
});
}
}
需要帮助。谢谢