我的Android应用程序存在一个小问题。它通过FCM收到通知,并将其显示为推送通知。到目前为止,它一切正常,但奇怪的问题是,有时候图标是白色的,有时它是丰富多彩的。
当应用程序在屏幕上打开并且此时我收到推送通知时,彩色推送通知会显示在屏幕顶部。
当应用关闭时,我会收到一个带有白色图标的推送通知。
我附上了一个屏幕: Screenshot
以下是代码段,其中创建了推送通知:
Notification.Builder notificationBuilder = new Notification.Builder(this)
.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setAutoCancel(true)
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setPriority(Notification.PRIORITY_HIGH)
.setColor(Color.parseColor("#83c3ed"))
.setLights(Color.RED, 1000, 500)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
Notification.InboxStyle inboxStyle = new Notification.InboxStyle();
inboxStyle.setBigContentTitle("WetterApp");
inboxStyle.addLine(notification.getTitle());
inboxStyle.addLine(notification.getBody());
notificationBuilder.setStyle(inboxStyle);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
我的移动设备有Android 6.0.1,我的SDK版本是23。
感谢您的帮助。
答案 0 :(得分:2)
嗯,我认为这个问题有所不同。仅当应用程序在屏幕上打开时,才会调用我创建通知的代码。当我收到通知并关闭应用程序时,Android系统会自动处理通知。
我必须在通知中设置颜色,然后发送到FCM服务器:
$data = [
'notification' => [
'title' => 'Warnung: Wohnzimmer',
'text' => 'Innen: 20,3°C Außen: 24,5°C, Tendenz: -0,2°C',
'color' => '#83c3ed',
'sound' => 'default'
],
'to' => '/topics/testNotification'
];
现在我在应用程序中以及应用程序关闭时获得了浅蓝色背景图标。
答案 1 :(得分:0)
按照谷歌的guide创建你的图标,它可能也是在状态栏中发生的。
然后,试试这个:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setTicker(context.getResources().getString(R.string.app_name));
builder.setSmallIcon(R.mipmap.ic_your_status_bar_logo);
builder.setAutoCancel(true);
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setContentIntent(pendingIntent);
builder.setContentTitle(
context.getResources().getString(R.string.app_name));
builder.setContentText(message);
builder.setDefaults(Notification.DEFAULT_SOUND);
builder.setPriority(NotificationCompat.PRIORITY_HIGH);
builder.setColor(ContextCompat.getColor(context, R.color.color_primary));
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(NOTIFICATION_ID, builder.build());
答案 2 :(得分:-1)
我认为更好的解决方案是在应用中添加一个轮廓图标,并在设备运行Android Lollipop时使用它。
例如:
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("My notification")
.setContentText("Look, white in Lollipop, else color!")
.setSmallIcon(getNotificationIcon())
.build();
return notification;
并且,在getNotificationIcon方法中:
private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}