移动应用无法接收通知

问题描述 投票:0回答:1

我使用 fcm 向 Android、iOS 和网络发送通知。它适用于网络,但不适用于移动应用程序。

这是我的代码:

//后端

const firebase = require("firebase-admin");
const { getMessaging } = require("firebase-admin/messaging");
const serviceAccountKey = require('./firebase-config.json')

const projectId = "PROJECT ID HERE"; // i'm replacing it with the real projectid

firebase.initializeApp({
  credential: firebase.credential.cert(serviceAccountKey),
  databaseURL: `https://${projectId}.firebaseio.com`
});


const sendNotification = async (user, tokens) => {
  const message = {
    data: {
      title: "Test Message",
      body: JSON.stringify({
        content: `this is a test message`,
        username: user.name,
        userId: user._id
      }),
    },
    tokens,
  };
  try {
    const res = await getMessaging().sendMulticast(message)
    console.log('successfully send message')
    console.log(res)
  } catch (error) {
    const code = error?.errorInfo?.code;
    console.log("Error sending message:", code);
    console.log("error", error);
    }
  };
}

当我记录结果时,它说消息/通知已成功发送,但我在移动应用程序上没有收到通知。我确实在网上得到了它。我正在为移动应用程序使用本机反应。 (我正在使用react-native作为移动应用程序)

当我尝试使用 firebase 仪表板中的测试云消息功能时,会发生相反的情况,我在移动应用程序上收到通知,但在网络上却没有。

这是网络代码

/firebase-messaging-sw.js

self.addEventListener("push", (event) => {
  const data = event.data.json()?.data;
  const body = JSON.parse(data.body);
  console.log(url);
  const options = {
    body: body.content,
    icon: "/logo.png",
  };

  event.waitUntil(self.registration.showNotification(data.title, options));
});
javascript firebase react-native push-notification firebase-cloud-messaging
1个回答
0
投票

尝试更新消息对象的密钥。将“数据”更改为“通知”。

const sendNotification = async (user, tokens) => {
const message = {
    data: { //Update this to notification
      title: "Test Message",
      body: JSON.stringify({
        content: `this is a test message`,
        username: user.name,
        userId: user._id
      }),
    },
    tokens,
  };
  try {
    const res = await getMessaging().sendMulticast(message)
    console.log('successfully send message')
    console.log(res)
  } catch (error) {
    const code = error?.errorInfo?.code;
    console.log("Error sending message:", code);
    console.log("error", error);
    }
  };
}
© www.soinside.com 2019 - 2024. All rights reserved.