首页 > 解决方案 > 为什么我的 Firebase 通知没有使用正确的图标?

问题描述

我一直在尝试在我的 firebase 推送通知中添加一个小图标。我能够在应用程序中创建一个通知(仅用于测试),该图标工作正常,但由于某种原因,firebase 在创建通知时不会使用该图标。它的左上角有一个空白的灰色圆圈。

我的图标如下:https ://i.imgur.com/80UAoJc.png

我的 firebase 通知如下所示:https ://i.imgur.com/i56cecv.png?1

(注意左上角的空白灰色圆圈)

我的清单文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.chickentendersubsonsale">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <meta-data
                android:name="com.google.firebase.messaging.default_notification_icon"
                android:resource="@drawable/ic_stat_name" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

标签: androidfirebasefirebase-cloud-messaging

解决方案


根据Firebase 消息传递文档

在应用程序组件内,元数据元素设置了默认的通知图标和颜色。只要传入的消息没有明确设置图标或颜色,Android 就会使用这些值。

您已<meta-data>在组件中添加了该元素<activity>。您需要将其直接移动到<application>关卡内:

<application
    android:networkSecurityConfig="@xml/network_security_config"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_name" />
</application>

推荐阅读