【发布时间】:2021-11-17 11:07:13
【问题描述】:
import admin from "firebase-admin";
async function notifyUser(message ,title, photoURL,token , uid , notificationsOn ) {
const messages = [];
const payload = {
notification: {
title: title,
body: message,
},
data: {
uid,
},
android: {
notification: {
image: photoURL,
},
},
apns: {
payload: {
aps: {
"mutable-content": 1,
},
},
fcm_options: {
image: photoURL,
},
},
};
try {
if (token) {
messages.push({ token: token, ...payload });
console.log("yes");
}
if (messages.length && notificationsOn==true) {
await admin.messaging().sendAll(messages);
console.log("Token for user, send notification.");
}
} catch (error) {
const functions = require("firebase-functions");
functions.logger.log("Hello from info. Here's an object:", error);
console.log(photoURL);
console.log(notificationsOn);
console.log(token);
console.log(message);
console.log(uid);
console.log(title)
console.log("No token for user, can not send notification.");
return {error:error.code};
}
return;
};
export {notifyUser} ;
我得到的错误
169行就是这一行
await admin.messaging().sendAll(messages);
它总是在记录“用户没有令牌无法发送通知”。我不知道为什么。我检查了大约 30 次。日志不为空并给出正确的输出。令牌不为空。
它不适用于 Android 和 iOS。但是当通过 firebase 向 android 或 iOS 发送通知时,它可以工作。并检索到通知。
希望真的有人有想法。我还尝试通过令牌从 Firebase 发送通知。这也有效。正如我所说,我检查了每个输出它应该可以工作但没有。
如果您认为我在项目的配置中做错了什么,请告诉我您认为可能是什么。
【问题讨论】:
-
我建议您在致电
admin.messaging().sendAll(messages)之前使用console.log(JSON.stringify(messages))记录消息。 -
是的,我通过将其添加到有效负载令牌中来修复它:令牌。现在它正在发送消息,但问题是它发送相同的消息 100 次认为是因为我的前端代码。也许你可以看看。
标签: javascript firebase google-cloud-functions firebase-cloud-messaging