gpt4 book ai didi

javascript - 使用 JavaScript 的 Firebase 云消息传递/推送通知到 Web 平台未收到消息

转载 作者:行者123 更新时间:2023-12-03 01:21:00 25 4
gpt4 key购买 nike

现在我正在开发一个需要使用实时通知功能的 Web 应用程序。我正在使用 Google Firebase 的云消息服务。我可以使用 JavaScript 成功注册服务并检索 token 值。但是当我从 REST 客户端推送消息时,我的平台没有触发 onMessage 事件。

这是我的完整代码。

<html>
<head>
<title>FCM</title>
</head>
<body>
<h1>This is the FCM</h1>

<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js"></script>
<!-- Add additional services that you want to use -->
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-messaging.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-functions.js"></script>

<script>
// Initialize Firebase
var config = {
apiKey: "xxx",
authDomain: "fcm-web-testing.firebaseapp.com",
databaseURL: "https://fcm-web-testing.firebaseio.com",
projectId: "fcm-web-testing",
storageBucket: "fcm-web-testing.appspot.com",
messagingSenderId: "xxxx"
};
firebase.initializeApp(config);

const messaging = firebase.messaging();
messaging.requestPermission().then(function(){
console.log(messaging.getToken());
return messaging.getToken();
}).then(function(token){
//I get the token here. I use this token to push the notification
console.log(token);
})
.catch(function(err){
alert('Permission denied');
})

messaging.onMessage(function(payload){
//I am expecting to trigger this event when I push the message using the REST client
alert('Message ' + payload)
})
</script>
</body>
</html>

我在代码中注释掉了以突出我期望得到的内容。我可以检索我在代码中注释的 token 。当我获得 token 时,我会像这样从 REST 客户端推送消息。

我的请求正文是这样的

{
"to" : "dJA57nVCZ7A:APA91bFFaYODxZQ4tbyy6RupRvH-jhmM1xh8F3iBQ1BWwdnvHA-dbB50cY1OyYNLpNhZLIKZm7Aqs4nTnQDsd2sExvNIglAeMSw3VLDXGjgaeqBEYFgz6PqbOJIS0Qki6m9XQ931H1xt",
"notification" : {
"body" : "SOMETHING",
"title" : "SOMETHING"
},
"data" : {
"message" : "This is data message"
}
}

如您所见,我将之前检索到的 token 传递给请求正文。我还在 header 中传递了服务器 key 。发布请求成功。我收到以下回复消息。

enter image description here

但是在成功请求后,应该触发 Javascript 代码中的事件。

messaging.onMessage(function(payload){
//I am expecting to trigger this event when I push the message using the REST client
alert('Message ' + payload)
})

但是,它没有被触发。实际上,它应该在成功发出 post 请求后触发。我的代码有什么问题或缺失什么?

最佳答案

您如何为您的网络应用提供服务?它必须通过 httpS (Description) 提供,否则 ServiceWorker/Messaging 将无法工作。

查看开发者控制台 (Chrome) -> 应用程序 -> Service Workers,您的软件应该出现在此处。


编辑:

为了进行测试,您还可以将项目上传到 Firebase 托管中。有一个免费的 ssl 证书。包括。为此,请安装 firebase cli(通过 npm ):

npm install -g firebase-tools

然后,首先运行登录命令来登录您的Google帐户:

firebase login

并“初始化”一个新项目(如npm init):

firebase init

部署就像打字一样简单

firebase deploy

看看here了解更多详情。

关于javascript - 使用 JavaScript 的 Firebase 云消息传递/推送通知到 Web 平台未收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51766492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com