2016-08-26 108 views
8

我试图将Firebase云消息传递集成到我的Android应用程序中。但是,当应用程序处于后台或关闭状态时,Firebase通知将显示为灰色方形图标,而不是我应用程序的启动器图标。使用Firebase通知的灰色方块作为通知图标

如何在不实施Firebase服务器API并发送数据消息的情况下将通知图标设为我的应用徽标?

+0

通知图标源自您的启动器图标。请参阅http://stackoverflow.com/questions/37325051/notification-icon-with-the-new-firebase-cloud-messaging-system –

回答

13

从火力地堡9.8.0有可能改变该图标,在清单中加入这个信息:

<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" /> 

例子中,你会发现,这里:

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

+1

尝试过,但仍然不起作用。做得好。 –

+0

作品。 – superbre

+1

确实....我没有瞄准Firebase 9.8.0。将库版本更新至9.8.0并使用元数据字段可以解决此问题。 – dell116

4

它是一个在firebase中的错误。如果您的应用处于前台并且通知是从Firebase控制台发送的,则会显示灰色图标。

解决方法是:通过API发送通知,而不是通过控制台发送通知。

+0

正确。奇迹般有效! (Moto G4 +牛轧糖操作系统) 应用程序死亡/不在前面 –

2

事不关到Firebase。从Android 3.0状态图标开始进行修改,“在透明背景上仅由白色像素组成,在适当的位置使用用于平滑边缘和内部纹理的Alpha混合”https://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html。从我看到的情况来看,从Android 5.0开始,你不得不提供这些全部白色的小型状态图标,否则会出现灰色方形图标。

这个问题Icon not displaying in notification: white square shown instead有答案解释进一步,也显示如何强制您的应用程序使用原始ic_launcher图标,虽然这似乎不是一个好主意,因为你迫使它的目标是一个较老的SDK,也不遵循材料设计指南。

你真的应该做的是提供白色的小图标,它可以产生在这里http://romannurik.github.io/AndroidAssetStudio/icons-notification.html将它们添加到您的项目,然后配置FCM使用它们作为公认的答案

<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" /> 
1

解释创建基本形状在透明背景上的25x25像素图像内。注意安全框架,并保持上部和下部2像素空闲。将图标以25x25导出为启用透明度的PNG文件。