未在localhost上接收Web上的FCM推送通知 [英] Not receiving FCM Push Notification for web on localhost

查看:225
本文介绍了未在localhost上接收Web上的FCM推送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我需要在我们的网络应用程序中实现Web推送通知,我已经在文档的帮助下在我的应用程序中成功设置了firebase云消息,我可以要求用户允许通知权限并获取令牌如果他接受了许可,也可以使用id。

So I need to implement web push notifications in our web app, I have successfully setup the firebase cloud messaging in my app with the help of docs, I'm able to ask the user to allow permission for notifications and get the token id as well if he accepts the permission.

当我尝试发送通知来测试生成的令牌时,我收到的消息是已发送,但我无法在客户端收到。

The thing is when I try to send a notification to test to the generated token, I'm getting a response that the message is sent, but I'm not able to receive it on the client side.

我的index.html

My index.html

<head>
  <script src="https://www.gstatic.com/firebasejs/4.4.0/firebase.js"></script>
  <link rel="manifest" href="./firebase.json">
</head>
 <script>
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('./firebase-messaging-sw.js').then(function(registration) {
      console.log('Firebase Worker Registered');

    }).catch(function(err) {
      console.log('Service Worker registration failed: ', err);
    });
  }
  </script>

我已成功注册服务工作者文件

I'm successfully able to register the service worker file

我的App.component.ts

My App.component.ts

var config = {
            apiKey: "somekey",
            authDomain: "someproject-2.firebaseapp.com",
            databaseURL: "https://someproject-2.firebaseio.com",
            projectId: "someproject-2",
            storageBucket: "",
            messagingSenderId: "someid"
          };
          firebase.initializeApp(config);



        const messaging = firebase.messaging();

        messaging.requestPermission()
        .then(function() {
          console.log('Notification permission granted.');
          return messaging.getToken()
        })
        .then(function(result) {
            console.log("The token is: ", result);
        })
        .catch(function(err) {
          console.log('Unable to get permission to notify.', err);
        });

        messaging.onMessage(function(payload) {
        console.log("Message received. ", payload);
        });

我收到权限对话框询问权限并获取带有此代码的令牌

I'm getting the permission dialog box asking permission and getting a token with this code

我用来发送消息的卷曲代码

The curl code I used to send messages

curl -X POST -H "Authorization: key=somekey" -H "Content-Type: application/json" -d '{
  "notification": {
    "title": "Portugal vs. Denmark",
    "body": "5 to 1",
    "icon": "firebase-logo.png",
    "click_action": "http://localhost:8081"
  },
  "to": "sometoken"
}' "https://fcm.googleapis.com/fcm/send"

我能用这段代码成功发送通知

I'm able to successfully send notifications with this code

我无法弄清楚我哪里出错了,也许是因为它在localhost上?也许onMessage方法运行不正常?任何帮助都非常感谢!

I can't figure out where I'm going wrong, maybe because it's on localhost? maybe the onMessage method is not running properly? Any help is highly appreciated!

推荐答案

好吧,我没有在stackoverflow上得到任何答案,所以我必须做它本身就可以运行了!

Alright, I didn't get any answers for this on stackoverflow, so I have to do it on my own and got it working!

问题出现在服务工作者文件中,我显然没有定义消息传递变量。

The problem was in the service worker file, I have apparently not defined messaging variable.

如果有人遇到此问题,请确保您的服务工作文件看起来像这样。

If anybody is facing this issue, just make sure your service worker file looks something like this.

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');

firebase.initializeApp({
    'messagingSenderId': '182145913801'
  });

const messaging = firebase.messaging();

这篇关于未在localhost上接收Web上的FCM推送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆