每次在 Firebase 实时数据库中添加新子项时,使用 Firebase 函数发送推送通知都不起作用



每次创建孩子时,我都尝试发送推送通知,但没有成功。 我正在创建一个具有 2 个令牌名称的孩子,它们之间有一个问号,并尝试向这些令牌发送通知。 从我正在使用的手机中获取令牌

new FirebaseMessaging().getToken().

这是 Firebase 函数代码 `

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
//  response.send("Hello from Firebase!");
// });
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();
exports.onNewMessage = functions.database.
ref('/messages/{pushId}')
.onCreate((snapShot,context)=>{
var str = snapShot.key();
var res = str.split("?");
// Notification details.
const payload = {
notification: {
title: 'title!',
body: `body!`,
click_action: 'FLUTTER_NOTIFICATION_CLICK'
}
};
// Send notifications to all tokens.
admin.messaging().sendToDevice(res[0], payload);
admin.messaging().sendToDevice(res[1], payload);
});` .

这可能有很多如果那么,但我将在这里描述最常见的错误来源

1( 未授予iOS/Android 平台的通知权限。对于Android来说,这很好,并且相对容易接收通知,但是对于iOS,您需要开发人员帐户才能执行此操作(2019年12月为每年99美元(

2(我建议使用主题订阅而不是标记化(即.getToken(((,因为它消除了手动跟踪每条已发送消息的负担

例如:

final fbmsg = FirebaseMessaging();
fbmsg.requestNotificationPermissions();
fbmsg.configure(onMessage: (msg) {
print(msg);
return;
}, onLaunch: (msg) {
print(msg);
return;
}, onResume: (msg) {
print(msg);
return;
});
fbmsg.subscribeToTopic('chats');

您可以根据自己的需求配置 onLaunch、onResume 和 onMessage 行为

对于 (1( 和 (2(,一个很好的起点是遵循firebase_messaging库的文档

3(我不确定这一点,但我认为使用index.js文件的更好方法是使用您收到的快照(或至少尝试控制台.log((检查有效性的任何内容(。但是,如果它对您有用,请忽略此步骤:)下面我附上我的应用程序中的代码和工作通知

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.myFunction = functions.firestore
.document('chats/{message}')
.onCreate((snapshot, context) => {
return admin.messaging().sendToTopic('chats', {
notification: {
title: snapshot.data().username,
body: snapshot.data().text,
clickAction: 'FLUTTER_NOTIFICATION_CLICK'
},
});
});

4(我在建立此Firebase功能时遇到了困难,还检查了它们的安装步骤

5(检查您尝试发送通知的方式,首先尝试从控制台模拟它,确保接收部分正常工作,然后尝试创建一个自动化的

希望它有帮助!

相关内容

  • 没有找到相关文章

最新更新