firebase 函数 getMessaging 未定义 FCM

C.K*_*.K. 6 node.js google-cloud-functions firebase-cloud-messaging

我按照此文档设置 FCM,但不起作用。

firebase 函数日志中的错误:

ReferenceError:getMessaging 未定义

https://firebase.google.com/docs/cloud-messaging/send-message#send-messages-to-specific-devices

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp({ credential: admin.credential.applicationDefault() });

exports.updateUser = functions
  .region("australia-southeast1")
  .firestore.document("messages/{groupId1}/{groupId2}/{message}")
  .onCreate(async (snap, context) => {
    console.log("----------------start function--------------------");

    const doc = snap.data();
    
    const idFrom = doc.idFrom;
    const idTo = doc.idTo;
    const contentMessage = doc.content;
    admin
      .firestore()
      .collection("users")
      .where("id", "==", idTo)
      .get()
      .then((querySnapshot) => {
        querySnapshot.forEach((userTo) => {
                  const message = {
                    message: {
                      xxxxxxx
                    },
                  };
                  admin
                    .getMessaging()  // <-------
                    .send(message)   // <-------
                    .then((response) => {
                      // Response is a message ID string.
                      console.log("Successfully sent message:", response);
                    })
                    .catch((error) => {
                      console.log("Error sending message:", error);
                    });
                });
              });
    return { success: true };
  });

Run Code Online (Sandbox Code Playgroud)

C.K*_*.K. 8

尝试很多次。
要将 Firebase 功能中的 FCM 与新的 HTTP v1 API 结合使用,请使用:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
// to get the ADC automatically
admin.initializeApp({ credential: admin.credential.applicationDefault() }); 

....

admin
                    .messaging()
                    .send(message)
                    .then((response) => {
                      // Response is a message ID string.
                      console.log("Successfully sent message:", response);
                    })
                    .catch((error) => {
                      console.log("Error sending message:", error);
                    });

Run Code Online (Sandbox Code Playgroud)

admin.messaging().send(message)我认为这是旧方法,因为在线文档没有提及它。
但它在 v1 有效负载下运行良好,并且 iphone 床边计数显示。