20 votes

Carré gris comme icône de notification avec les notifications Firebase

Je tente d'intégrer Firebase Cloud Messaging dans mon application Android. Mais lorsque l'application est en arrière-plan ou fermée, la notification Firebase s'affiche avec une icône carrée grise au lieu de l'icône du lanceur de mon application.

Comment puis-je faire en sorte que l'icône de notification soit le logo de mon application, sans mettre en œuvre l'API du serveur Firebase et envoyer des messages de données ?

28voto

Mateusz Pryczkowski Points 1424

Depuis la version 9.8.0 de Firebase, il est possible de changer cette icône, en ajoutant des informations à ce sujet dans Manifest :

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

Vous trouverez un exemple ici :

https://github.com/firebase/quickstart-Android/blob/master/messaging/app/src/main/AndroidManifest.xml

8voto

obernal Points 11

Ce n'est pas lié à Firebase. À partir d'Android 3.0, les icônes d'état ont été révisées et "sont composées simplement de pixels blancs sur une toile de fond transparente, avec un mélange alpha utilisé pour des bords lisses et une texture interne le cas échéant". https://developer.Android.com/guide/practices/ui_guidelines/icon_design_status_bar.html . D'après ce que j'ai vu, à partir d'Android 5.0, vous êtes obligé de fournir ces petites icônes d'état toutes blanches, sinon l'icône carrée grise s'affiche.

Cette question L'icône ne s'affiche pas dans la notification : un carré blanc apparaît à la place. a des réponses qui expliquent plus en détail et montrent également comment forcer votre application à utiliser l'icône originale d'ic_launcher bien que cela ne me semble pas être une bonne idée puisque vous la forcez à cibler un ancien sdk et ne suivez pas non plus les directives de material design.

Ce que vous devez faire, c'est fournir les petites icônes blanches que vous pouvez générer ici http://romannurik.github.io/AndroidAssetStudio/icons-notification.html ajoutez-les à votre projet et configurez ensuite le FCM pour les utiliser comme expliqué dans la réponse acceptée.

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

7voto

Hisham Muneer Points 994

C'est un bug de Firebase. Si votre application est au premier plan et que la notification est envoyée par la console Firebase, vous obtiendrez l'icône grise.

La solution est la suivante : envoyer les notifications via l'API et non à partir de la console.

2voto

Songsak Wanta Points 11

Créez la forme de base dans une image de 25x25 px sur un fond transparent. Faites attention au cadre de sécurité, et gardez les 2 pixels supérieurs et inférieurs libres. Exportez l'icône à 25x25 comme un fichier PNG avec la transparence activée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X