我正在尝试使用云功能将FCM发送到我的反应应用。 云功能正在执行,但客户端未收到通知。
这里是云功能代码。
exports.sendPush = functions.database.ref('/settings2').onWrite(event => {
let projectStateChanged = false;
let projectCreated = false;
let projectData = event.data.val();
if (!event.data.previous.exists()) {
projectCreated = true;
}
if (!projectCreated && event.data.changed()) {
projectStateChanged = true;
}
let msg = 'A project state was changed';
if (projectCreated) {
msg = `The following new project was added to the project: ${projectData.title}`;
}
tokens.push("fIGxxxxGtDGxxxx DEVICE Token");
let payload = {
notification: {
title: 'Firebase Notification',
body: 'This Is Message',
sound: 'default',
badge: '1'
}
};
return admin.messaging().sendToDevice(tokens, payload);
});
以下是云功能的日志
这是我客户端的代码:
messaging.onMessage(function(payload) {
console.log("Message received. ", payload);
// ...
});
没有任何错误,但控制台中没有任何内容。我是否必须对服务工作者文件执行某些操作?
任何帮助将不胜感激。
答案 0 :(得分:0)
我的 firebase-messaging-sw.js 文件存在问题。我通过以下代码解决了这个问题。
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');
var config = {
apiKey: "AIzaSyDtg4aQMQW67Jla1nUzrTTSEhVqpUeqKXI",
authDomain: "payxxxxxxx.firebaseapp.com",
databaseURL: "https://pxyxxxxx.firebaseio.com",
projectId: "pxxoll-pxxxs-fxxx",
storageBucket: "pxxx-pxxx-fxxxx1.apxxxot.com",
messagingSenderId: "2xxxx5xxx"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
答案 1 :(得分:0)
对于任何可能遇到这篇文章并且遇到问题的新人,尤其是如果您从网上复制和粘贴某些内容时,请确保检查 importScripts 版本并确保其版本与您的 package.json 文件中的版本相同。< /p>
示例 目前这个包版本是 8.3.1
所以更新
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');
到
importScripts('https://www.gstatic.com/firebasejs/8.3.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/8.3.1/firebase-messaging.js');