Bonjour, je suis en train d’implémenter des notifications push dans Android avec Firebase. À présent, une petite icône apparaît dans un cercle. J'ai besoin de montrer en plus grande taille. S'il vous plaît voir l'image. Et voici mon code,
Android:id="@+id/relativeNotification"
Android:layout_width="192dp"
Android:layout_height="192dp"
Android:layout_alignParentEnd="true"
Android:layout_alignParentRight="true">
<com.inspius.coreapp.widget.TintableImageView
Android:layout_width="192dp"
Android:layout_height="192dp"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:layout_gravity="center_vertical"
Android:contentDescription="@string/app_name"
Android:src="@drawable/ic_launcher"
app:tint="@color/custom_icon_video_detail_selector" />
Comment définir une grande icône à partir de cette petite icône?
Je pense que cela peut être fait en remplaçant les paramètres par défaut.
Dans votre manifeste d'application:
<meta-data
Android:name="com.google.firebase.messaging.default_notification_icon"
Android:resource="@drawable/notification_icon" />
Utilisez votre icône au lieu de @drawable/notification_icon
.
J'espère que cela pourra aider
Mise à jour: Voir aussi:
https://github.com/firebase/quickstart-Android/issues/4#issuecomment-221344318
Le paramètre icon peut être utilisé pour spécifier un dessin dans votre application. Si vous voulez utiliser R.drawable.foo, passez simplement foo.
Voici la documentation sur les paramètres icon
:
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
Voir Vous pouvez personnaliser votre notification firebase uniquement lorsque votre application est au premier plan.
Votre notification sera interceptée dans onMessageReceived méthode de FirebaseMessagingService service
Personnalisez votre notification lorsque votre application est au premier plan.
Mettre une icône dans un dossier pouvant être dessiné par une application
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.icons);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(largeIcon)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
Mettre la balise "icon" de l'icône à partir de l'API
String name = remoteMessage.getNotification().getIcon();
URL url_value = new URL(name);
Bitmap mIcon1 = BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(mIcon1)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle()) .setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
J'ai essayé de faire la même chose. Annuler la méthode "handleIntent" a fonctionné pour moi. Je suppose que supprimer le super.handleIntent (intention) a rendu ce travail efficace. Ensuite, nous pouvons créer notre propre notification pour définir la grande icône. Les cas de premier plan et de fond appellent cette méthode. Quelque chose comme ça:
public class YourMessagingService extends FirebaseMessagingService {
@Override
public void handleIntent(Intent intent) {
// super.handleIntent(intent);
// get intent codes....
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Notification notification = builder
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.yourLargeIcon))
.setSmallIcon(R.drawable.yourSmallIcon)
.setContentTitle("yourTitle")
.setContentText("yourText")
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(111, notification);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
}
}