android – 当app是后台FCM时,如何检索通知消息intent.getExtras()

我正在使用FCM进行简单通知

当应用程序处于前台时,一切正常.我在onMessageReceived方法中收到通知和数据消息.

但是当应用程序处于后台时,我会在系统托盘中收到通知.当我点击控件时,它会转到主要活动.当我解析intent.getExtras();时,我只得到这个关键数据 – google.sent_time,from,google.message_id,collapse_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); 
}

解决方法

Handling Messages for Android FCM docs所示,如果您发送的有效负载同时包含通知和数据,则将单独处理.通知部分将由通知托盘处理,而数据部分将在意图的附加部分中处理.

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

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

当然,您必须确保notification_title和notification_message的数据值与您在通知有效负载中设置的数据值相同.然后就像往常一样从Intent extras中检索它.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...