【问题标题】:Messages successfully sent, but no notifications visible in Firebase Cloud Messaging消息已成功发送,但在 Firebase 云消息传递中看不到任何通知
【发布时间】:2019-08-17 10:53:13
【问题描述】:

消息被报告为成功发送,但没有弹出通知。

使用 onMessage 有时可以记录消息。

请求 FCM 令牌仅适用于 localhost。

在 .com 网站上尝试时,错误消息取决于我使用的是 PC 还是 chromebook - 生成的错误消息不同。

我使用了 2 种不同的设备,但总是使用 Chrome 浏览器。云函数将消息和FCM响应写入函数日志,确认发送成功。

当我从收件人网页删除 onMessage 时,没有任何通知的迹象。

网页在这些试验期间是打开的。这是 web/javascript。

在两个设备中都将通知权限设置为允许。

我在网络搜索上花费了数小时试图找到任何关于尝试什么的提示。

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');


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

const messaging = firebase.messaging();

与网页一起运行的相关代码

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

我假设没有 onMessage,通知应该基于 Firebase SDK 显示,但事实并非如此。错误的假设

在后台时,什么都不会出现。 (我认为通知应该自动出现。)

我可以在本地主机上运行时请求和接收 FCM 令牌,但相同的代码在部署时会引发错误。 “请求缺少所需的身份验证...”

我一直与支持@Google 联系,他们向我保证了这个建议,然后另一个会 100% 解决问题。没有任何区别。

我已经尝试过 Firebase 文档和 github 示例中的代码 sn-ps。

如果我能找到有效的现有代码,那将是一个很好的开始,因为我认为经过大约 40 小时的努力才能找到解决方案是没有希望的。

我错过了什么明显的东西吗?

更新......

我找到了两个没有看到通知的原因。

1) 我的电脑有一个设置,似乎部分抑制了显示。出乎意料,因为确实会显示 YouTube 通知。 (打开屏幕最右下角的通知托盘。带有新月符号的“对焦辅助”。如果单击它时显示“开启”或“仅警报”,我认为这会限制所看到的内容。)

2) 我基于 Firebase 文档和视频的假设是 onMessage() 是为了防止用户在网页上时收到通知,并允许开发人员忽略或处理页面内的通知。对了一半。显然,通知被默认忽略,除非 onMessage() 对它们做了什么。文档提供了 onMessage() 的 sn-ps 代码,但只提供了如何登录到控制台。

另外,发现了一个有趣的问题。现在我的电脑已经注册了消息的收件人,即使该收件人已注销并已在另一台设备上登录,它也会收到它们。这听起来像是个问题。

代码的当前工作版本。这在网页/应用程序中(不在 messing-sw.js 文件中

【问题讨论】:

    标签: firebase push-notification firebase-cloud-messaging


    【解决方案1】:

    消息的介绍性视频表明,当有人在网站上时弹出来自网站的通知是不好的用户体验。因此,代码可以包含 onMessage() 以忽略通知或在页面内处理它。

    文档提供了一个 onMessage 版本,它只是将通知记录到控制台,并且只是对做其他事情的评论。

    文档的其他部分说明系统会自动显示通知。

    因此我推断如果没有 onMessage() 通知会自动出现。

    看来我错了。

    我花了很多时间来弄清楚这一点并找到一些代码来显示通知。 (即使现在我也不确定我是否掌握了正在发生的事情,但以下似乎可行)

    这进入网页/应用程序。 (不在messaging-sw.js中。放在那里会抛出错误“使用窗口方法”)

    [请注意,我还发现我的 PC 的设置方式似乎允许 YouTube 发送通知,但却阻止了 FCM 通知的显示。 (见有问题的解释)

    到目前为止,我已经在网页打开、网页在后台以及浏览器关闭时进行了测试。通知以默认声音显示并列在通知托盘中。

    如果收件人退出网页并在另一台设备上登录,也会发生这种情况。消息继续发送到同一台设备。

    消息发送到设备而不是用户]

     messaging.onMessage(function (payload) { 
          try{  //try???
          console.log('Message received. ', payload);
    
          noteTitle = payload.notification.title; 
          noteOptions = {
            body: payload.notification.body,
            icon: "typewriter.jpg", //this is my image in my public folder
          };
    
          console.log("title ",noteTitle, " ", payload.notification.body);
              //var notification = //examples include this, seems not needed
    
          new Notification(noteTitle, noteOptions);//This can be used to generate a local notification, without an incoming message. noteOptions has to be an object
        }
        catch(err){
          console.log('Caught error: ',err);
        }
        });
    
    ``````````
    
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2020-07-28
      • 2020-03-15
      • 1970-01-01
      • 2022-08-19
      • 2020-08-14
      • 2019-12-30
      相关资源
      最近更新 更多