首页 > 解决方案 > Android 9+ 设备在提示通知中缺少应用程序图标

问题描述

TL;DR :Firebase 云消息仅在 Android 9+ 设备 上的“抬头”通知中不显示我的应用程序图标。https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up

更长的版本:

当我直接从 Firebase 或通过任何 Rest 客户端向https://fcm.googleapis.com/fcm/send端点发送云消息时,一切看起来都很好,消息显示在屏幕上,带有标题、描述和图标、设备发出声音,它会在一段时间内消失,但会留在通知栏和通知抽屉中。

在消息传递到运行 Android 10 或 9(但不是全部)的设备之前,一切正常。通知栏和通知抽屉工作正常,消息本身看起来与旧 Android 版本完全相同。但是提示错过了我的应用程序的图标。到目前为止,我还没有向 Firebase 发送任何带有有效负载的“图标”,但即使我将带有 URL 的“图标”属性设置为我的图标,它仍然不会出现在提示中。我已将相同的 URL 放在“图像”属性中,然后图像出现在提示中,但我认为它不是应该用于在通知中显示应用程序图标的属性。

有没有人注意到同样的问题?我试图查看 Google Android 文档 - 但它看起来已经过时并且以 Android 8 结尾。我尝试了 Firebase 文档,但它说“图标”属性是可选的(这就是我没有附加它的原因)。

我在以下位置测试了通知:

有效载荷只是:

{
    "to": "(...)",
    "notification": {
        "title": "Push from RestClient",
        "body": "Notification body"
    },
    "data": {}
}

当然,我已经添加了 Firebase 所需的 default_notification_icon、颜色和通道。这不是这里的解决方案。

标签: androidfirebasepush-notificationfirebase-cloud-messagingandroid-notifications

解决方案


您需要在 manifest.xml 中添加 FCM 元数据

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_logo_white" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/app_theme_blue" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

推荐阅读