我目前遇到以下问题:
-
我已经实现了自定义FirebaseMessagingService,并且覆盖了onMessageReceived()方法 . 此外,当应用程序在后台时,我从getExtras()获取包 .
-
我需要通知内容才能在db中本地保存 .
怎么了:
-
当应用在后台时,从Firebase控制台发送3个通知
创建了 -
3状态栏通知 .
-
单击其中一个 - >打开启动器活动并保存通知中的内容 .
-
点击其他状态栏通知(当应用仍在前台时) - >没有任何反应......
能否请你帮忙?
启动器活动代码:
if (getIntent().getExtras() != null) {
Bundle extras = getIntent().getExtras();
String title = (String) extras.get(Constants.TOPIC_KEY_TITLE);
String imageUrl = (String) extras.get(Constants.TOPIC_KEY_IMAGE_URL);
String url = (String) extras.get(Constants.TOPIC_KEY_URL);
String description = (String) extras.get(Constants.TOPIC_KEY_DESCRIPTION);
Long sentTime = (Long) extras.get(Constants.TOPIC_KEY_SENT_TIME);
if (Util.isStringsNotNull(description)) {
News news = new News();
news.setTitle(title);
news.setMessage(description);
news.setDescription(description);
news.setImageUrl(imageUrl);
news.setUrl(url);
news.setDate(sentTime);
news.save();
EventBus.getDefault().post(new OnNewsUpdatedEvent(news));
AppPreferences.incrementUnseenNewsCount(this);
}
}
String action = getIntent().getAction();
if (Util.isStringNotNull(action) && action.equals(ACTION_SEARCH)) {
startActivity(MainActivity.getIntentActionSearch(this));
} else {
startActivity(MainActivity.getIntent(this));
}
自定义FirebaseMessagingService代码:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
LogUtil.log(BASIC_TAG, "onMessageReceived called!");
String description = null;
String imageUrl = null;
String url = null;
String title = null;
Map<String, String> dataMap = remoteMessage.getData();
if (dataMap != null && !dataMap.isEmpty()) {
description = dataMap.get(Constants.TOPIC_KEY_DESCRIPTION);
imageUrl = dataMap.get(Constants.TOPIC_KEY_IMAGE_URL);
url = dataMap.get(Constants.TOPIC_KEY_URL);
title = dataMap.get(Constants.TOPIC_KEY_TITLE);
}
if (Util.isStringNotNull(description)) {
RemoteMessage.Notification notification = remoteMessage.getNotification();
News news = new News();
news.setDate(remoteMessage.getSentTime());
news.setTitle(Util.isStringNotNull(title) ? title : notification.getTitle());
news.setMessage(notification.getBody());
news.setDescription(description);
news.setImageUrl(imageUrl);
news.setUrl(url);
news.save();
EventBus.getDefault().post(new OnNewsUpdatedEvent(news));
AppPreferences.incrementUnseenNewsCount(this);
}
}
1 回答
我假设你的活动的onCreate()方法中有你的启动器活动代码 . 创建活动并单击另一个通知后,将不再调用onCreate() .
更新用户已经看到的活动需要做的是覆盖显示数据的活动的onNewIntent(Intent intent)方法,并在那里更新您的视图 .