当前位置: 首页 > 知识库问答 >
问题:

web应用程序中未收到Firebase云消息通知

齐志勇
2023-03-14

我正在使用FCM进行通知。FCM在从Firebase数据库创建数据时被触发。我收到了第一条信息。在此之后,不会接收到其他连续的消息。我在本地环境下运行这个。问题是由于以下消息“未配置计费帐户。外部网络无法访问,配额受到严重限制。配置计费帐户以消除这些限制”或任何其他问题造成的。我是否需要进入接收消息的计费计划。在测试环境中工作,这是不转移到计费计划的原因。如果问题与计费计划无关,可以有人指出代码的任何其他问题。

消防功能日志

6:22:52.133 PM
sendFollowerNotification
Function execution started
6:22:52.133 PM
sendFollowerNotification
Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictions
6:22:52.143 PM
sendFollowerNotification
Function execution took 10 ms, finished with status: 'ok'
6:22:52.401 PM
sendFollowerNotification
1 messages were sent successfully

节点js代码

exports.sendFollowerNotification = functions.database.ref('/notification/message/{gId}/{pId}')
        .onCreate(async (change, context) => {
    
          //console.log('Group id:', context.params.gId," Push ID:",context.params.pId, "Change",change);
          
          const notificationData =  change.val();
          var topic = notificationData.topic;
          var title = notificationData.title;
          var body = notificationData.body;
          var registrationTokens = notificationData.tokens;
    
          const message = {
            notification: {
              title: title,
              body: body
            },
            tokens: registrationTokens,
          };
    
          admin.messaging().sendMulticast(message)
          .then((response) => {
            // Response is a message ID string.
            console.log(response.successCount + ' messages were sent successfully');
          })
          .catch((error) => {
            console.log('Error sending message:', error);
          });
          
        });

共有1个答案

孟哲
2023-03-14

该消息不表示错误。这只是一个警告,让你知道,如果你的项目不在付款计划中,出站网络是不起作用的。FCM消息传递不属于这一类--它应该工作。

问题是,您的代码没有返回在所有异步工作完成后解决的promise。现在,它什么也不返回,并且该函数在消息发送之前立即终止。请阅读并理解有关这方面的文档。

最低限度地,您需要返回promise链,以便让云函数知道消息何时发送,并且可以安全地终止。

          return admin.messaging().sendMulticast(message)
          .then((response) => {
            // Response is a message ID string.
            console.log(response.successCount + ' messages were sent successfully');
          })
          .catch((error) => {
            console.log('Error sending message:', error);
          });

请注意上面的return关键字。

如果消息仍然没有被发送,那么这里有一些我们看不到的其他问题。您可能没有正确处理设备令牌。

 类似资料:
  • 我可能已经阅读了所有其他与此相关的SO线程,但我找不到答案,而且在Android监视器中也没有日志跟踪。有人对此有提示吗?

  • 我正在接收令牌,但当我从Firebase控制台发送通知时,我的设备上不会发生任何事情,无论应用是否处于后地。与此同时,我的Android应用程序收到通知。 我遵循了这个指南: https://firebase.google.com/docs/cloud-messaging/ios/client 为了确保这一点,我还在 https://github.com/firebase/quickstart-i

  • null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?

  • 我对FireBase云消息有一个问题,我从设备中获取令牌,并通过Google FireBase通知控制台发送通知测试。但是,通知从来没有被记录,也没有被推送到android虚拟设备。FCM的文档几乎与下面的代码完全相同,其他代码很少,您还需要做什么来获得使用FireBase的推送通知。我已经完成了所有的设置信息(build.gradle添加、安装google play服务等)如文档中所指定的,但仍

  • 我正在尝试使用Firebase Notification Composer向我的设备发送测试通知。我正在接收FCM令牌并将其打印到我的控制台,然后尝试向该令牌发送通知。 以下是我检查过的内容: 1) 我使用的是iOS 12.4.1 2) 我正在分配消息传递代理 3)我从委托方法接收FCM令牌 4) 我已经验证了通知是通过打印到控制台启用的,当提示我允许通知时,我单击了允许 5) 我已经验证了在Fi

  • 我在项目中使用Firebase身份验证。今天我决定将FCM集成到我的项目中。但是我无法从我的Firebase控制台收到任何通知。我还尝试重新下载. json文件,但没有成功。你们知道我的问题吗? Android清单.xml FirebaseMessageService.java FirebaseIDService.java 我认为这个问题不是由我的MainActiviy.java决定的,但以防万一