[英]How do I connect my Flutter App to a notification sent by a firebase cloud function?
I'm trying to automatically send a notification to a Flutter App whenever a specific value in my firestore changes.每当我的 Firestore 中的特定值发生变化时,我都会尝试自动向 Flutter 应用程序发送通知。 The cloud function is triggered but my App simply doesn't receive the message.云 function 被触发,但我的应用程序根本没有收到消息。 I managed to get a message using the messaging in the firebase console, so I recon the cloud function doesn't send the message properly?我设法使用 firebase 控制台中的消息获取消息,所以我侦察云 function 没有正确发送消息? I should also mention that I don't receive any errors.我还应该提到我没有收到任何错误。
A quick rundown of what I'm doing:快速概述我正在做的事情:
This is my cloud function这是我的云 function
import * as functions from "firebase-functions";
import admin = require("firebase-admin");
admin.initializeApp();
exports.sendPhValueNotification = functions.firestore.document("/phValues/values").onUpdate(async (_,
context) => {
const phValue = context.params.ph;
if (phValue < 7.2 || phValue > 7.8) {
// Notification details.
const payload = {
topic: "phValues",
notification: {
title: `PH-Wert ${phValue < 7.2 ? "unter" : "über"} dem Richtwert!`,
body: `Der PH-Wert im Whirlpool beträgt ${phValue}`
}
};
// Send notifications to everyone
await admin.messaging().send(payload);
}
});
And this is my setup in my Flutter App这是我在 Flutter 应用程序中的设置
await FirebaseMessaging.instance.subscribeToTopic('phValues');
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Got a message whilst in the foreground!');
print('Message data: ${message.data}');
if (message.notification != null) {
print('Message also contained a notification: ${message.notification}');
}
});
Turns out it was just a dumb mistake on my part.原来这只是我的一个愚蠢的错误。 The way I'm reading the value from the firestore is wrong and since I'm testing the value in the if statement, I never actually sennt a message.我从 firestore 读取值的方式是错误的,因为我在 if 语句中测试值,所以我从未真正发送过消息。
This works now:这现在有效:
functions.firestore.document("/phValues/values").onUpdate(async (change) => {
const phValue = change.after.ph; // This line
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.