我希望你能帮助我解决这个问题。我有一个 Firebase 云功能,当在 firestore 数据库上创建文档时,它会通过 FCM 向某个主题发送消息。这是我的代码:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.onWordpressPostCreate = functions.firestore
.document("wpPosts/{title}")
.onCreate((snap, context) => {
console.log("-------------start create function-----------------");
const data = snap.data();
const title = data.title;
const excerpt = data.excerpt;
const payload = {
notification: {
title: `Neuer Deal: ${title}`,
body: excerpt,
badge: "1",
sound: "default",
},
};
return admin.messaging().sendToTopic("newDeal", payload)
.then((response) => {
console.log("Successfully sent message:", response);
})
.catch((error) => {
console.error("FCM failed", error);
});
});
过去一切正常,但今天我在 Firebase Cloud 功能的日志中收到一条错误消息,该端点将被弃用。
“消息:'返回了未知的服务器错误。原始服务器响应:“{”error“:”已弃用的端点,请参阅https://firebase.google.com/docs/cloud-messaging/migrate-v1“}” '“
这是一个已知问题吗?我不知道应该在我的函数中更改什么,因为我在那里不使用特定的 HTTP 端点。我只使用函数 sendToTopic()。也许有人也遇到了这个问题,可以在这里帮助我。 此外,我不得不说,有时该功能可以工作,有时我会收到此错误消息,作为一种警告,表明该功能将来根本无法工作。
我在 Google 上搜索了这个问题,发现应该将 Legacy FCM API 迁移到 HTTP v1。但我不知道这会如何影响我的功能或者我必须在那里改变什么。在此链接的文章中,它说我必须更改端点和正文的结构,但在 Firebase Cloud Functions 中,这全部由 FCM 函数本身处理。我只需要使用有效负载调用 sendToTopic()...
Firebase 已弃用
sentToTopic
方法,您应该使用 send
方法发送主题,并将主题添加到有效负载中,如下所示
{
topic: "a topic here",
notification: {
title: `Neuer Deal: ${title}`,
body: excerpt,
badge: "1",
sound: "default",
},