Android推送通知,当应用程序关闭时我会得到不同的风格
Posted
技术标签:
【中文标题】Android推送通知,当应用程序关闭时我会得到不同的风格【英文标题】:Android Push Notification, when app is closed I get a different style 【发布时间】:2017-06-27 10:36:40 【问题描述】:我正在使用 FCM 进行通知,一切正常,但在应用程序打开之前,一旦我杀死(关闭)应用程序或在后台,我会收到默认样式的通知,谁能帮我设置此通知应用关闭时的样式(或任何其他建议)。 请帮我解决这个问题,提前谢谢您
这是我的代码
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
String title = "";
if (remoteMessage.getNotification().getTitle() != null)
title = remoteMessage.getNotification().getTitle();
String message = "";
if (remoteMessage.getNotification().getBody() != null)
message = remoteMessage.getNotification().getBody();
Log.e("notification","recieved");
sendNotification(title, message);
private void sendNotification(String title, String message)
Intent intent = new Intent(this, MainActivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0/*Request code*/, intent, PendingIntent.FLAG_ONE_SHOT);
Uri notificationSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
int color=getResources().getColor(R.color.dot_dark_screen2);
NotificationCompat.Builder notifiBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.account_outline)
.setColor(color)
.setDefaults(Notification.DEFAULT_SOUND)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setContentTitle(title)
.setContentText(message)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setAutoCancel(true)
.setSound(notificationSound)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /*ID of notification*/, notifiBuilder.build());
【问题讨论】:
这个设备操作系统的版本是什么。 我的是安卓棒棒糖5.1 您也可以分享您的通知代码部分。至少您的通知的最少代码可能有助于分析这种情况。 对不起,我忘了,现在我也更新了我的代码...... 显然是因为你的方法显示了一个,第二个是从使用不同代码创建通知的 gms/firebase 库中显示的 【参考方案1】:我已经在这里发布了很长的解释: android notification icon issue
TL;DR:
您的问题很可能是 notification-messages 和 data-messages 之间的区别。
请阅读:https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages
当您希望 FCM 处理显示 代表您的客户端应用程序通知。当您使用数据消息时 想要在您的客户端应用程序上处理消息。
【讨论】:
当应用程序在后台或关闭时,是否有可能从后台服务保持 onMessageReceiver 运行? 我不明白你的评论。你能澄清一下吗?如果您想要让应用程序在后台运行(因为您需要下载文件,或者您需要做其他事情),您需要使用服务并从 onMessageReceived() 调用 startService 是的,使用 onMessageReceived() 调用 startService,所以当我发送 Firebase 消息时,通知会以设置样式显示。 (不是默认系统托盘一) ?? startService 与通知样式没有任何关系。请阅读我的回答并再次发表评论。以上是关于Android推送通知,当应用程序关闭时我会得到不同的风格的主要内容,如果未能解决你的问题,请参考以下文章