Firebase 通知始终显示空白图标

Posted

技术标签:

【中文标题】Firebase 通知始终显示空白图标【英文标题】:Firebase Notification Always shows blank icon 【发布时间】:2017-02-11 05:26:38 【问题描述】:

我是 FCM 的新手。我无法让 FCM 将我的应用程序图标用作通知图标,并且该图标始终为白色空白。

我将一个图标导入mipmap 文件夹,但似乎没有任何改变。正如一些家伙所说,这是因为棒棒糖通知为in this question

但问题是,FCM 通知会自动弹出,我无法让通知生成器覆盖该图标。怎么改?

【问题讨论】:

请发布您的代码。 @Bansal 有什么用?在 Lollipop 和上面的通知图标是白色的......问了无数次 Notification bar icon turns white in android 5 Lollipop的可能重复 @Selvin 这不是同一个问题,因为我不会自己在 firebase 中弹出通知,所以我无法控制图标和颜色。 @Mateusz Pryczkowski 你的答案是正确的,再次发布 【参考方案1】:

这是 FCM 的默认行为。当应用程序处于后台时,它会显示白色图标。

使用此标签并将其放入您的清单中。对我来说,这很有效。希望它也适合你。确保元数据在应用程序内部,如quickstart中提到的示例

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <!-- [START fcm_default_icon] -->
    <!-- Set custom default icon. This is used when no icon is set for incoming notification messages. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
    <!-- [END fcm_default_icon] -->
    <!-- [START fcm_default_channel] -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />
    <!-- [END fcm_default_channel] -->
    <activity
        android:name=".EntryChoiceActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".kotlin.MainActivity" />
    <activity android:name=".java.MainActivity" />

【讨论】:

这是我发现的唯一正确图标的方法。它是一个用于在后台模式下显示通知的 firebase 错误。 Firebase 选择默认应用图标,而不是您在通知生成器上的定义。 这个应该放在application标签里面还是外面? 应用标签内 如何在 res 中放置 ic_app_icon?是PNG吗? SVG?有吗?每个 hdpi 都有一个吗?【参考方案2】:

如果你有这个问题

查看此链接:Icon not displaying in notification: white square shown instead

我遇到了同样的问题。我通过从设计师那里制作透明图像来解决。 确保您的徽标应为 72*72 像素。

注意:不要浪费时间在谷歌上搜索这个问题,你只需要一个 72*72 尺寸的透明图标。

【讨论】:

“答案”仅链接到重复问题不是答案... 我给了他确切的答案,这样他就不会浪费时间,专注于解决问题。 感谢我看到了链接。但是我应该在哪里实现通知生成器。导致 FCB android 自动弹出通知。 我投了你的票,因为这是我回答的一部分。但我无法替换 FCM 自动生成的通知图标。 @DäñishShärmà,你是对的。你的NOTE帮了我很多:)【参考方案3】:

唯一对我有用的是在 Android Studio 中生成一个通知图标图像资产。 要将图片用作通知图标,只需将资产类型设置为“图片”并选择文件即可。

提示 #1:在透明背景上使用白色图标!

提示 #2:如果窗口右侧的预览仅包含白色方块,您的通知图标将看起来像这样 - 白色方块!

提示 #3:资产的名称应该添加到 AndroidManifest 中的meta-data 标签中

<meta-data
 android:name="com.google.firebase.messaging.default_notification_icon"
 android:resource="@drawable/whatever_you_set_for_image_asset_name" />

来源:取自this answer

【讨论】:

【参考方案4】:

将通知保持在 72 x 72 的小尺寸,并使其全白。请参阅此答案随附的照片。

然后将以下代码粘贴到您的清单中。

<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
 android:resource="@drawable/ic_stat_money" />

您可以使用 Android Studio 的默认图标包制作新图标。

为此,请右键单击您的 drawable 文件夹 > 新建 > 图像资源

【讨论】:

【参考方案5】:

我遇到了同样的问题,按照这里的建议做了一切,但没有任何效果。

最终,在github issue 的帮助下,将 firebase 插件从 11.8.0 降级到 11.6.0 即可解决问题

这也可能对某人有所帮助。

【讨论】:

【参考方案6】:

当没有为传入通知设置图标时,firebase 将采用默认图标并显示通知。

要覆盖默认图标,请将以下代码添加到您的 Android 清单文件中

<meta-data
 android:name="com.google.firebase.messaging.default_notification_icon"
 android:resource="@drawable/ic_stat_ic_notification" />

更多信息可以关注link

【讨论】:

以上是关于Firebase 通知始终显示空白图标的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase Cloud Messaging 在前台显示多个通知

iOS 10 Firebase 通知未在后台显示

Firebase 通知消息未显示在托盘图标上?

Firebase Cloud Messaging 通知未显示在 iOS 设备上(前台和后台)

Firebase 通知,图标和大图像中的小故障

Android Firebase 通知提供默认图标