<tfoot id='m0apN'></tfoot>
    <i id='m0apN'><tr id='m0apN'><dt id='m0apN'><q id='m0apN'><span id='m0apN'><b id='m0apN'><form id='m0apN'><ins id='m0apN'></ins><ul id='m0apN'></ul><sub id='m0apN'></sub></form><legend id='m0apN'></legend><bdo id='m0apN'><pre id='m0apN'><center id='m0apN'></center></pre></bdo></b><th id='m0apN'></th></span></q></dt></tr></i><div id='m0apN'><tfoot id='m0apN'></tfoot><dl id='m0apN'><fieldset id='m0apN'></fieldset></dl></div>
  1. <legend id='m0apN'><style id='m0apN'><dir id='m0apN'><q id='m0apN'></q></dir></style></legend>
    1. <small id='m0apN'></small><noframes id='m0apN'>

      • <bdo id='m0apN'></bdo><ul id='m0apN'></ul>

      在 localhost 上未收到 Web 的 FCM 推送通知

      Not receiving FCM Push Notification for web on localhost(在 localhost 上未收到 Web 的 FCM 推送通知)
        <bdo id='yc6Ac'></bdo><ul id='yc6Ac'></ul>

            <tbody id='yc6Ac'></tbody>
          <tfoot id='yc6Ac'></tfoot>
            1. <i id='yc6Ac'><tr id='yc6Ac'><dt id='yc6Ac'><q id='yc6Ac'><span id='yc6Ac'><b id='yc6Ac'><form id='yc6Ac'><ins id='yc6Ac'></ins><ul id='yc6Ac'></ul><sub id='yc6Ac'></sub></form><legend id='yc6Ac'></legend><bdo id='yc6Ac'><pre id='yc6Ac'><center id='yc6Ac'></center></pre></bdo></b><th id='yc6Ac'></th></span></q></dt></tr></i><div id='yc6Ac'><tfoot id='yc6Ac'></tfoot><dl id='yc6Ac'><fieldset id='yc6Ac'></fieldset></dl></div>

              • <small id='yc6Ac'></small><noframes id='yc6Ac'>

                <legend id='yc6Ac'><style id='yc6Ac'><dir id='yc6Ac'><q id='yc6Ac'></q></dir></style></legend>
                本文介绍了在 localhost 上未收到 Web 的 FCM 推送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                所以我需要在我们的网络应用程序中实现网络推送通知,我已经在文档的帮助下成功地在我的应用程序中设置了 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>
                

                我已经成功注册了 service worker 文件

                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

                我用来发送消息的 curl 代码

                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

                我不知道哪里出错了,可能是因为它在本地主机上?也许 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!

                问题出在 service worker 文件中,我显然没有定义消息传递变量.

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

                如果有人遇到此问题,请确保您的 Service Worker 文件看起来像这样.

                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 推送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                quot;Status Code:200 OK (from ServiceWorker)quot; in Chrome Network DevTools?(“状态码:200 OK(来自 ServiceWorker)在 Chrome 网络开发工具中?)
                How to set a header for a HTTP GET request, and trigger file download?(如何为 HTTP GET 请求设置标头并触发文件下载?)
                Adding custom HTTP headers using JavaScript(使用 JavaScript 添加自定义 HTTP 标头)
                SQL Query DocumentDB in Azure Functions by an integer not working(通过整数在 Azure Functions 中 SQL 查询 DocumentDB 不起作用)
                Azure Functions [JavaScript / Node.js] - HTTP call, good practices(Azure Functions [JavaScript/Node.js] - HTTP 调用,良好实践)
                Azure Functions - Import Custom Node Module(Azure Functions - 导入自定义节点模块)

                1. <tfoot id='hj6ml'></tfoot>

                    <small id='hj6ml'></small><noframes id='hj6ml'>

                      <tbody id='hj6ml'></tbody>
                    <i id='hj6ml'><tr id='hj6ml'><dt id='hj6ml'><q id='hj6ml'><span id='hj6ml'><b id='hj6ml'><form id='hj6ml'><ins id='hj6ml'></ins><ul id='hj6ml'></ul><sub id='hj6ml'></sub></form><legend id='hj6ml'></legend><bdo id='hj6ml'><pre id='hj6ml'><center id='hj6ml'></center></pre></bdo></b><th id='hj6ml'></th></span></q></dt></tr></i><div id='hj6ml'><tfoot id='hj6ml'></tfoot><dl id='hj6ml'><fieldset id='hj6ml'></fieldset></dl></div>

                      <legend id='hj6ml'><style id='hj6ml'><dir id='hj6ml'><q id='hj6ml'></q></dir></style></legend>
                      • <bdo id='hj6ml'></bdo><ul id='hj6ml'></ul>