我正在尝试将Firebase Cloud Messaging集成到我的Android应用中。但是,当应用在后台或已关闭时,Firebase通知会显示灰色方块图标,而不是应用程序的启动器图标。
如何在不实施Firebase服务器API和发送数据消息的情况下,将通知图标设为我的应用徽标?
答案 0 :(得分:18)
从Firebase 9.8.0可以通过在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" />
您可以在此处找到示例:
答案 1 :(得分:5)
它是firebase中的一个错误。如果您的应用位于前台并且从Firebase控制台发送通知,您将获得灰色图标。
解决方法是:通过API发送通知,而不是从控制台发送通知。
答案 2 :(得分:3)
它与Firebase无关。从Android 3.0开始,状态图标被修改,&#34;简单地由透明背景上的白色像素组成,alpha混合用于平滑边缘和内部纹理(如果适用)&#34; 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" />
答案 3 :(得分:1)
在透明背景上的25x25像素图像内创建基本形状。注意安全框架,并保持上下2像素自由。将图标以25x25导出为启用透明度的PNG文件。
答案 4 :(得分:0)
我使用了以下解决方案,并且在Flutter中对我有用:
创建一个透明的白色通知图标(您可以使用以下工具:AndroidAssetStudio)
下载zip文件夹,解压缩,您将看到其中包含一个带有不同可绘制文件夹的res文件夹。将res文件夹的内容复制并粘贴到“ android \ app \ src \ main \ res”路径中
然后打开AndroidManifest.xml文件并向其中添加以下行:
ic_stat_calendar_today是我的通知图标的名称。每个粘贴的可绘制文件夹都包含不同大小的具有相同名称的图标。
如果要更改图标的颜色,请检查上面的图像。在通知图标标签之后添加元数据标签
转到“ android \ app \ src \ main \ res \ values”并添加colors.xml文件
Stackoverflow不允许我在此处添加colors.xml文件代码,因此我只是在上面的图像中添加代码,您将不得不在colors.xml中手动键入它。抱歉。
特别感谢github上的“ RumanaB”。