我想更改我的推送通知图标。
代码段:
Initial Sequence Number
答案 0 :(得分:0)
不幸的是,这是SDK 9.0.0-9.6.1中Firebase通知的限制。当应用程序在后台运行时,将从清单(带有必要的Android着色)中使用启动器图标处理从控制台发送的消息。
但是,使用SDK 9.8.0时,您可以覆盖默认值!在您的AndroidManifest.xml中,您可以设置以下字段来自定义图标和颜色:
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/notification_icon" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/google_blue" />
请注意,如果应用程序位于前台(或发送了数据消息),则可以完全使用自己的逻辑来自定义显示。如果从HTTP / XMPP API发送消息,也可以始终自定义图标。
您必须将此标签放入清单的Application标签
官方文档-https://firebase.google.com/docs/cloud-messaging/android/client
答案 1 :(得分:0)
它太简单了,但是您必须仔细做。
首先,为您的通知设置一个黑白图标。
现在,将其在notification
中设置为small icon
,如下所示。
mBuilder.setSmallIcon(R.mipmap.notification_icon);
现在您可以设置颜色,但是如果我对,那么您只能设置预定义的颜色而不是自定义的颜色。对于自定义颜色,您可以尝试使用自己的逻辑,我为您提供了预定义颜色的代码。
mBuilder.setColor(Color.GREEN);
它将使您的notification icon
颜色变为绿色。
快乐编码!
更新
自定义通知代码。
PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext,
0 /* Request code */, resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Uri soundUri = Uri.parse("android.resource://" + mContext.getApplicationContext()
.getPackageName() + "/" + R.raw.sniper_gun);
mBuilder = new NotificationCompat.Builder(mContext);
mBuilder.setSmallIcon(R.mipmap.notification_icon);
mBuilder.setSound(soundUri);
if (image!=null) {
mBuilder.setContentTitle(title)
.setContentText(message)
.setAutoCancel(false)
.setLargeIcon(image)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(image).setSummaryText(message).bigLargeIcon(null))
.setColor(Color.GREEN)
.setContentIntent(resultPendingIntent);
}
// else {
// mBuilder.setContentTitle(title)
// .setContentText(message)
// .setAutoCancel(false)
// .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
// .setContentIntent(resultPendingIntent);
// }
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
// set custom soundUri
if(soundUri != null){
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
notificationChannel.setSound(soundUri,audioAttributes);
}
assert mNotificationManager != null;
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
mNotificationManager.createNotificationChannel(notificationChannel);
}
assert mNotificationManager != null;
mNotificationManager.notify(0 /* Request Code */, mBuilder.build());