我有一个基于本机与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;
});
});
答案 0 :(得分:0)
不确定是什么问题,但是在headers标记的行下方添加了它之后,它开始正常工作。
“接受编码”:“ gzip,缩小”
答案 1 :(得分:0)
我无法发表评论,所以我在这里写作 对于 firebase 中的数据库,您实际使用了什么 1. Cloud Firestore 或 2. 实时数据库 如果您在这种情况下使用过 Firestore 使用
更改代码functions.firestore.document('Something\{id}').onCreate({snap, context}) => ...