问题描述
我只想在一个通知中显示firbase通知,但每当我通过控制台发送推送通知,或者在不同的通知中自动创建我的web服务。即使我没有在我的代码中使用通知生成器,并且android本身自动创建通知,我最终还是要在收件箱样式中创建通知,并在其下方显示所有消息或标题,谢谢您的回应和您的帮助!pre $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ .LOG_TAG,remote Message:+ remoteMessage.toString());
Log.e(MyApplication.LOG_TAG,remote Message->(Data):+ remoteMessage.getData()。toString());
Log.i(MyApplication.LOG_TAG,FROM:+ remoteMessage.getFrom());
Log.i(MyApplication.LOG_TAG,MessageID:+ remoteMessage.getMessageId());
Log.i(MyApplication.LOG_TAG,MessageType:+ remoteMessage.getMessageType());
Log.i(MyApplication.LOG_TAG,To:+ remoteMessage.getTo());
Log.i(MyApplication.LOG_TAG,SentTime:+ remoteMessage.getSentTime());
Log.i(MyApplication.LOG_TAG,Ttl:+ remoteMessage.getTtl());
Log.i(MyApplication.LOG_TAG,CollapseKey:+ remoteMessage.getCollapseKey());
if(remoteMessage.getNotification()!= null){
fcm.setTag(remoteMessage.getNotification()。getTag());
fcm.setTitle(remoteMessage.getNotification()。getTitle());
fcm.setBody(remoteMessage.getNotification()。getBody());
fcm.setBodyLocalizationKey(remoteMessage.getNotification()。getBodyLocalizationKey());
fcm.setClickAction(remoteMessage.getNotification()。getClickAction());
fcm.setColor(remoteMessage.getNotification()。getColor());
fcm.setIcon(remoteMessage.getNotification()。getIcon());
Log.i(MyApplication.LOG_TAG,Notification:+ remoteMessage.getNotification());
Log.i(MyApplication.LOG_TAG,Sound:+ remoteMessage.getNotification()。getSound());
Log.i(MyApplication.LOG_TAG,BodyLocalizationKey:+ remoteMessage.getNotification()。getBodyLocalizationKey());
Log.i(MyApplication.LOG_TAG,ClickAction:+ remoteMessage.getNotification()。getClickAction());
Log.i(MyApplication.LOG_TAG,Color:+ remoteMessage.getNotification()。getColor());
Log.i(MyApplication.LOG_TAG,Icon:+ remoteMessage.getNotification()。getIcon());
Log.i(MyApplication.LOG_TAG,Tag:+ remoteMessage.getNotification()。getTag());
Log.i(MyApplication.LOG_TAG,Title:+ remoteMessage.getNotification()。getTitle());
Log.i(MyApplication.LOG_TAG,Body:+ remoteMessage.getNotification()。getBody());如果(remoteMessage.getData()。size()> 0){
Log.i(MyApplication.LOG_TAG,Message data:+ remoteMessage.getData()。toString(
) ());
Log.i(MyApplication.LOG_TAG,Have field =+ remoteMessage.getData()。containsKey(MessageID));
尝试{
JSONObject data = new JSONObject(remoteMessage.getData()。toString());
message = messageParser(data);
} catch(Exception e){
Log.e(MyApplication.LOG_TAG,Exception:+ e.getMessage());
}
MessageClass.LogConsole(message);
showNotification(message.getTitle)
}
public static void showNotification(String Message){
Intent intent = new Intent(MyApplication.context,MyBroadcastReceiver.class) ;
PendingIntent broadcastIntent = PendingIntent.getBroadcast(MyApplication.context,0,intent,0);
位图图标= BitmapFactory.decodeResource(MyApplication.context.getResources(),R.drawable.shna);
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
MyApplication.preferenceManager.setNotification(Message);
String oldNotification = MyApplication.preferenceManager.getNotifications();
Log.e(MyApplication.LOG_TAG,Notification:+ oldNotification);
列表< String> messages = Arrays.asList(oldNotification.split(\\ |));
for(int i = messages.size() - 1; i> = 0; i--){
inboxStyle.addLine(messages.get(i));
}
ShortcutBadger.applyCount(MyApplication.context,messages.size());
inboxStyle.setSummaryText(messages.size()+More);
notification = new NotificationCompat.Builder(MyApplication.context)
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(icon)
.setWhen(0)
.setCategory(Notification.CATEGORY_MESSAGE)
.setGroup(Notification.CATEGORY_MESSAGE)
.setAutoCancel(true)
.setDeleteIntent(broadcastIntent)
.setContentTitle()
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS)
.setStyle(inboxStyle)
.build();
MyApplication.notificationManager.notify(0,notification);
}
public message messageParser(JSONObject data){
Message message = new Message();
尝试{
message.setTitle(data.getJSONObject(data)。getString(Title));
message.setDated(data.getJSONObject(data)。getString(Dated));
} catch(JSONException e){
Log.e(MyApplication.LOG_TAG,Json Exception:+ e.getMessage());
返回null;
} catch(Exception e){
Log.e(MyApplication.LOG_TAG,Exception:+ e.getMessage());
返回null;
}
返回消息;
$ b
您可以使用通知有效载荷:
不过,请注意,从Firebase控制台发送消息时,您将无法为标记
设置值。
或者您可以自己捆绑出来。
I want to show firbase notification in only one notification but when per time i send push notification by console or my web service automatic create in the Different notifications. even when I don't use notification builder in my code, and android itself automatic create notification, Eventually I WANT create notification in Inbox style and display all message or title below them, thanks for per your responding and your help!!!
enter code here@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(MyApplication.LOG_TAG, "remote Message:" + remoteMessage.toString());
Log.e(MyApplication.LOG_TAG, "remote Message->(Data):" + remoteMessage.getData().toString());
Log.i(MyApplication.LOG_TAG, "FROM:" + remoteMessage.getFrom());
Log.i(MyApplication.LOG_TAG, "MessageID:" + remoteMessage.getMessageId());
Log.i(MyApplication.LOG_TAG, "MessageType:" + remoteMessage.getMessageType());
Log.i(MyApplication.LOG_TAG, "To:" + remoteMessage.getTo());
Log.i(MyApplication.LOG_TAG, "SentTime:" + remoteMessage.getSentTime());
Log.i(MyApplication.LOG_TAG, "Ttl:" + remoteMessage.getTtl());
Log.i(MyApplication.LOG_TAG, "CollapseKey:" + remoteMessage.getCollapseKey());
if (remoteMessage.getNotification() != null) {
fcm.setTag(remoteMessage.getNotification().getTag());
fcm.setTitle(remoteMessage.getNotification().getTitle());
fcm.setBody(remoteMessage.getNotification().getBody());
fcm.setBodyLocalizationKey(remoteMessage.getNotification().getBodyLocalizationKey());
fcm.setClickAction(remoteMessage.getNotification().getClickAction());
fcm.setColor(remoteMessage.getNotification().getColor());
fcm.setIcon(remoteMessage.getNotification().getIcon());
Log.i(MyApplication.LOG_TAG, "Notification:" + remoteMessage.getNotification());
Log.i(MyApplication.LOG_TAG, "Sound:" + remoteMessage.getNotification().getSound());
Log.i(MyApplication.LOG_TAG, "BodyLocalizationKey:" + remoteMessage.getNotification().getBodyLocalizationKey());
Log.i(MyApplication.LOG_TAG, "ClickAction:" + remoteMessage.getNotification().getClickAction());
Log.i(MyApplication.LOG_TAG, "Color:" + remoteMessage.getNotification().getColor());
Log.i(MyApplication.LOG_TAG, "Icon:" + remoteMessage.getNotification().getIcon());
Log.i(MyApplication.LOG_TAG, "Tag:" + remoteMessage.getNotification().getTag());
Log.i(MyApplication.LOG_TAG, "Title:" + remoteMessage.getNotification().getTitle());
Log.i(MyApplication.LOG_TAG, "Body:" + remoteMessage.getNotification().getBody());
}
if (remoteMessage.getData().size() > 0) {
Log.i(MyApplication.LOG_TAG, "Message data: " + remoteMessage.getData().toString());
Log.i(MyApplication.LOG_TAG, "Have field=" + remoteMessage.getData().containsKey("MessageID"));
try {
JSONObject data = new JSONObject(remoteMessage.getData().toString());
message = messageParser(data);
} catch (Exception e) {
Log.e(MyApplication.LOG_TAG, "Exception: " + e.getMessage());
}
MessageClass.LogConsole(message);
showNotification(message.getTitle)
}
public static void showNotification(String Message) {
Intent intent = new Intent(MyApplication.context, MyBroadcastReceiver.class);
PendingIntent broadcastIntent = PendingIntent.getBroadcast(MyApplication.context, 0, intent, 0);
Bitmap icon = BitmapFactory.decodeResource(MyApplication.context.getResources(), R.drawable.shna);
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
MyApplication.preferenceManager.setNotification(Message);
String oldNotification = MyApplication.preferenceManager.getNotifications();
Log.e(MyApplication.LOG_TAG, "Notification:" + oldNotification);
List<String> messages = Arrays.asList(oldNotification.split("\\|"));
for (int i = messages.size() - 1; i >= 0; i--) {
inboxStyle.addLine(messages.get(i));
}
ShortcutBadger.applyCount(MyApplication.context, messages.size());
inboxStyle.setSummaryText(messages.size() + " More");
notification = new NotificationCompat.Builder(MyApplication.context)
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(icon)
.setWhen(0)
.setCategory(Notification.CATEGORY_MESSAGE)
.setGroup(Notification.CATEGORY_MESSAGE)
.setAutoCancel(true)
.setDeleteIntent(broadcastIntent)
.setContentTitle("")
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS)
.setStyle(inboxStyle)
.build();
MyApplication.notificationManager.notify(0, notification);
}
public Message messageParser(JSONObject data) {
Message message = new Message();
try {
message.setTitle(data.getJSONObject("data").getString("Title"));
message.setDated(data.getJSONObject("data").getString("Dated"));
} catch (JSONException e) {
Log.e(MyApplication.LOG_TAG, "Json Exception: " + e.getMessage());
return null;
} catch (Exception e) {
Log.e(MyApplication.LOG_TAG, "Exception: " + e.getMessage());
return null;
}
return message;
}
}
You could use the tag
for the notification
payload:
However, note that you won't be able to set the value for tag
when you send the message from the Firebase Console.
Or you could just bundle the notifications yourself.
这篇关于仅在1个通知中显示Firebase通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!