使用 Firebase 通知作为通知图标的灰色方块

Grey square as notification icon using Firebase notifications

我正在尝试将 Firebase 云消息传递集成到我的 android 应用程序中。但是当应用程序在后台或关闭时,Firebase 通知显示为灰色方形图标,而不是我的应用程序的启动器图标。

如何在不实施 Firebase 服务器 API 和发送数据消息的情况下使通知图标成为我的应用程序徽标?

这是 firebase 中的一个错误。如果您的应用程序在前台并且通知是从 Firebase 控制台发送的,您将看到灰色图标。

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

从 Firebase 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

它与 Firebase 无关。从 Android 开始 3.0 状态图标已修改,"are composed simply of white pixels on a transparent backdrop, with alpha blending used for smooth edges and internal texture where appropriate" https://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html。据我所见,从 Android 5.0 开始,您必须提供这些全白的小状态图标,否则会显示灰色方形图标。

这个问题 有进一步解释的答案,还展示了如何强制您的应用程序使用原始 ic_launcher 图标,尽管这对我来说似乎不是个好主意,因为您是强迫它以旧的 sdk 为目标,也没有遵循 material 设计指南。

您真正应该做的是提供您可以在此处生成的白色小图标 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" />

在透明背景上的 25x25 像素图像中创建基本形状。注意安全框,并保持上下 2 个像素自由。将 25x25 的图标导出为启用透明度的 PNG 文件。

我使用了以下解决方案,它在 Flutter 中对我有用:

  1. 创建一个透明的白色通知图标(可以使用以下工具:AndroidAssetStudio

  2. 下载 zip 文件夹,解压,你会看到它包含一个 res 文件夹,里面有不同的 drawable 文件夹。将 res 文件夹的内容复制并粘贴到“android\app\src\main\res”路径

  1. 然后打开AndroidManifest.xml文件并在其中添加以下行:

ic_stat_calendar_today 是我的通知图标的名称。并且每个已粘贴的可绘制文件夹包含具有相同名称的不同大小的图标。

  1. 如果您想更改图标的颜色,请查看上图。在通知图标标签后添加元数据标签

  2. 转到“android\app\src\main\res\values”并添加一个 colors.xml 文件

Whosebug 不允许我在此处添加 colors.xml 文件代码,因此我只是在上图中添加代码,您必须在 colors.xml 中手动输入。抱歉。

特别感谢 github 上的“RumanaB”。

对我有用的是:

  • 按照上述所有步骤创建通知图标
  • 将它们放在 src/main/res/ 可绘制文件夹中
  • 在 /values
  • 中创建 colors.xml
  • 在 AndroidManifest 中添加值

我必须做的一个额外步骤是在服务器端的 fcm/send post 请求中必须定义:

"notification": {
        "title": "your title",
        "body": "your body",
        "icon": "your icon name in drawable folder"
    },