web-dev-qa-db-fra.com

Comment définir une icône plus grande dans la notification de l'application Firebase?

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?

Here is the image

8
Sirilcs

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.

La source

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

3
ʍѳђઽ૯ท

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());

2
Gulnaz Ghanchi

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();
    }
}
1
CCOONOK