topic notification notificaciones icon firebasemessagingservice example java android colors push-notification android-notifications

java - notification - notificaciones push android firebase



Icono de notificación de color de Android (5)

Al crear la notificación, puede establecer el color y el icono. Si su icono es una imagen en blanco puro , aplicará el color en los lugares correctos.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationId = 10 // Some unique id. // Creating a channel - required for O''s notifications. val channel = NotificationChannel("my_channel_01", "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT) manager.createNotificationChannel(channel) // Building the notification. val builder = Notification.Builder(context, channel.id) builder.setContentTitle("Warning!") builder.setContentText("This is a bad notification!") builder.setSmallIcon(R.drawable.skull) builder.setColor(ContextCompat.getColor(context, R.color.colorPrimary)) builder.setChannelId(channel.id) // Posting the notification. manager.notify(notificationId, builder.build()) }

Estoy trabajando en una aplicación donde creo una notificación para el usuario. Quiero que el icono aparezca en blanco cuando está en la barra de estado, pero en color azul cuando se muestra en el menú de notificación desplegable. Aquí hay un ejemplo de lo mismo que está haciendo la aplicación Google Store.

Notificación en blanco en la barra de estado:

Notificación a color en el menú desplegable:

¿Cómo puedo replicar esto? ¿Qué propiedades tengo que configurar?

Edición: Aquí está mi código actual: hice la imagen completamente blanca con un fondo transparente, por lo que se ve bien en la barra de estado, pero en la caída de la notificación, la imagen sigue siendo del mismo color blanco:

private NotificationCompat.Builder getNotificationBuilder() { return new NotificationCompat.Builder(mainActivity) .setDeleteIntent(deletedPendingIntent) .setContentIntent(startChatPendingIntent) .setAutoCancel(true) .setSmallIcon(R.drawable.skylight_notification) .setColor(ContextCompat.getColor(mainActivity, R.color.colorPrimary)) .setContentTitle(mainActivity.getString(R.string.notification_title)) .setContentText(mainActivity.getString(R.string.notification_prompt)); }



Esto es lo que hice para mi aplicación ...

private void showNotification(Context context) { Log.d(MainActivity.APP_TAG, "Displaying Notification"); Intent activityIntent = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); mBuilder.setSmallIcon(R.drawable.ic_notification); mBuilder.setColor(Color.GREEN); mBuilder.setContentIntent(pendingIntent); mBuilder.setContentTitle("EarthQuakeAlert"); mBuilder.setContentText("It''s been a while you have checked out earthquake data!"); mBuilder.setDefaults(Notification.DEFAULT_SOUND); mBuilder.setAutoCancel(true); NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(1, mBuilder.build()); }

Muestra Con Color:

Muestra sin color:


Para las bases de datos de firebase enviadas desde la consola, solo necesita agregar esto en su manifiesto:

<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/white_logo" /> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/custom_color" />

Donde white_logo es su aplicación logo blanco, y custom_color es el color que desea que tenga el icono y el texto en color.

Más detalles aquí: https://firebase.google.com/docs/cloud-messaging/android/client


Puede usar DrawableCompat.setTint(int drawable); del dibujable antes de ajustar el dibujable. Y mutate() el dibujable, de lo contrario el tinte de color se aplicará a cada instancia de ese dibujable