FirebaseMessaging.onMessage.listen() 仅适用于通知消息

Posted

技术标签:

【中文标题】FirebaseMessaging.onMessage.listen() 仅适用于通知消息【英文标题】:FirebaseMessaging.onMessage.listen() only working for Notification messages 【发布时间】:2021-08-21 20:39:40 【问题描述】:

我目前正在开发一个 ios 应用程序,我想通过 Firebase 的云消息传递控制台发送推送通知,并通过 Java http 请求通过https://fcm.googleapis.com/fcm/send 发送通知。我创建了一个 onMessage 监听器,如下所示:

FirebaseMessaging.onMessage.listen((RemoteMessage message) 
  print("onMessage listener fired");
  if (message != null) 
    PersonalFirebase.onMessageReceived(message, context, setState, flutterLocalNotificationsPlugin, notificationSettings.authorizationStatus);
  
);

如果我通过项目中的 Firebase 控制台发送消息,则会成功触发此侦听器,但是如果我尝试通过 HTTP 请求发送数据消息,即使我收到 200 响应代码,也不会发生任何事情。作为参考,这是我发送到 Java 中的 http 请求的有效负载:

    JSONObject values = new JSONObject();
    values.put("action", "show_message");
    values.put("title", "showMessageFunction");
    values.put("message", "Testing showMessage function");
    values.put("channel", "1");
    
    JSONObject parentData = new JSONObject();
    parentData.put("data", values);
    
    JSONObject message = new JSONObject();
    message.put("to", to);
    message.put("data", parentData); 
    

基本上我的问题如下:FirebaseMessaging.onMessage 是否仅适用于通过 Firebase 控制台发送的通知。如果是这样,对于通过https://fcm.googleapis.com/fcm/send http 请求的数据消息,是否有 FirebaseMessaging.onMessage 的替代方案?

如果还有什么可以帮助我的,请告诉我。

【问题讨论】:

【参考方案1】:

我们所要做的就是添加 message.put("content_available", true); 到消息 JSONObject 的末尾。 更多信息可以在here找到。

【讨论】:

以上是关于FirebaseMessaging.onMessage.listen() 仅适用于通知消息的主要内容,如果未能解决你的问题,请参考以下文章