may*_*kar 10 android firebase firebase-cloud-messaging firebase-notifications
我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
AL.*_*AL. 12
如处理Android FCM文档的消息中所示,如果您发送的有效负载同时包含通知和数据,则将单独处理.通知部分将由通知托盘处理,而数据部分将在意图的附加部分中处理.
AFAIK,当应用程序处于后台时,无法获取通知有效负载(始终由通知托盘处理).但是,您可以做的是将自定义键值对添加到数据有效负载中,如下所示:
{
"data": {
"notification_title": "title here",
"notification_message": "message here"
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您必须确保数据值notification_title
与notification_message
通知有效负载中设置的数据值相同.然后就像往常一样从Intent extras中检索它.
小智 6
当您的应用处于后台或被终止时,Firebase Notfication 将表现为数据消息。在这些场景中,如果你想检索你的通知消息,那么你必须在下面的键值对中定义它
FCM 控制台的高级选项
然后在您的活动中使用此键检索此消息,该活动将通过点击通知打开。
if (getIntent().getExtras() != null) {
Object value ;
for (String key : getIntent().getExtras().keySet()) {
if(key.equals("Message Key")) {
value = getIntent().getExtras().get(key); // value will represend your message body... Enjoy It
Log.d("NotificationTag" , key+"____" + value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10204 次 |
最近记录: |