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

应用程序为后台FCM时如何检索通知消息intent.getExtras()

谭嘉歆
2023-03-14

但当应用程序在后台,我得到通知在系统托盘。当我点击控件时,它会转到主活动。而当我解析intent.getExtras();时,我只得到这个关键数据-google.sent_timefromgoogle.message_idcollapse_key

如何从intent.getExtras()获取通知消息标题和系统托盘中可见的消息?

我正在使用FCM控制台发送通知,我没有我的专用服务器这样做。

final Bundle extras = intent.getExtras(); 
final Set<String> keySet = extras.keySet(); 
final Iterator<String> iterator = keySet.iterator(); 
while (iterator.hasNext()) {     
    final String key = iterator.next(); 
    final Object o = extras.get(key); 
    System.out.println(key + ":" + o); 
} 

共有1个答案

袁高明
2023-03-14

在Android FCM文档的处理消息中可以看到,如果您发送的有效负载同时包含通知和数据,那么它将被单独处理。通知部分将由通知托盘处理,而数据部分将在意图的附加部分中。

AFAIK,当应用程序处于后台(总是由通知托盘处理)时,没有办法获得通知负载。但是,您可以做的是将自定义键值对添加到数据负载中,如下所示:

{
"data": {
      "notification_title": "title here",
      "notification_message": "message here"
     }
}

当然,您必须确保notification_titlenotification_message的数据值与您在通知负载中设置的数据值相同。然后像往常一样从意向性附加项中检索它。

 类似资料:
  • null 而当app在后台时,系统托盘总是显示一个到达一个重复的通知(如收到通知a,系统托盘显示2个通知a)。 怎么解决这个问题? 编辑:添加的代码 我扩展了 类,并在 方法中包含该类 这是项目中我使用NotificationManager的唯一部分。 另外,我尝试在这个方法上添加一个日志。当应用程序处于前台时调用onMessageReceived。当应用程序在后台时,它不会被调用

  • 我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为

  • 但问题是,在用户点击通知之前,它不会进入此方法。 根据(FCM文档),如果我们想要在后台唤醒应用程序,那么我们必须传递键值为true的content_available参数。但是当我在自定义数据中通过您的FCM Compose message console发送这些信息时,我们的应用程序不会在后台唤醒或激活,直到用户点击通知。我想我收到的通知都是正常的通知,而不是无声的通知。所以FCM的实现和发送

  • 我正在处理FCM通知。当应用程序在后台时,我的通知工作正常,但当应用程序在前台时,我的通知无法接收。我几乎什么都试过了,但都不奏效。当应用程序处于前台时,不会收到通知。 manifest.xml: 代码(FirebaseMessagingService):

  • 手机是OnePlus3T。oxygen OS版本为4.1.6。当应用程序在前台、后台但在内存中时,应用程序会收到通知。但当应用程序不在内存中(即从内存中刷出)时不会收到通知。其他安装了android操作系统版本4.2、5.1.1、6.0.1、7.1.1的设备也会收到通知,即使应用程序不在内存中。 好心建议点什么。提前道谢。