博览会的firebase推送通知不起作用

时间:2020-05-28 03:55:28

标签: firebase react-native firebase-realtime-database expo

我有一个基于本机与expo的应用程序。对于推送通知,我正在尝试使用Firebase。我已经在Firebase中创建了函数,并尝试将通知从Firebase发送到我的iPhone。我在代码和经过验证的Firebase日志中也没有看到任何问题。触发此功能后,获取状态为“ ok”的消息,但我仍未在手机中收到通知。有人可以帮忙吗?

我正在使用Firebase付费计划。当我直接从React Native应用运行时,相同的代码会触发通知。

const functions = require("firebase-functions");
const fetch = require("node-fetch");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);

exports.sendPushNotification = functions.database
  .ref("orders/{id}")
  .onCreate((snapshot, context) => {
    var messages = [];
    const root = admin.database().ref("customers");
    console.log("customers : " + root.path);
    return root
      .once("value")
      .then((snapshot) => {
        snapshot.forEach((childSnapshot) => {
          //alert(expoToken);
          var expoToken = childSnapshot.val().expoPushToken;
          console.log("token : " + expoToken);
          if (expoToken) {
            messages.push({
              to: expoToken,
              title: "hello",
              body: "New Order",
            });
          }
        });
        return Promise.all(messages);
      })
      .then((messages) => {
        const res = fetch("https://exp.host/--/api/v2/push/send", {
          method: "POST",
          headers: {
            Accept: "application/json",
            "Content-Type": "application/json",
          },
          body: JSON.stringify(messages),
        });
        console.log(res);
        return res;
      });
  });

2 个答案:

答案 0 :(得分:0)

不确定是什么问题,但是在headers标记的行下方添加了它之后,它开始正常工作。

“接受编码”:“ gzip,缩小”

答案 1 :(得分:0)

我无法发表评论,所以我在这里写作 对于 firebase 中的数据库,您实际使用了什么 1. Cloud Firestore 或 2. 实时数据库 如果您在这种情况下使用过 Firestore 使用

更改代码

functions.firestore.document('Something\{id}').onCreate({snap, context}) => ...