Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Firebase通知的灰色正方形作为通知图标_Android_Firebase Cloud Messaging - Fatal编程技术网

Android 使用Firebase通知的灰色正方形作为通知图标

Android 使用Firebase通知的灰色正方形作为通知图标,android,firebase-cloud-messaging,Android,Firebase Cloud Messaging,我正在尝试将Firebase云消息集成到我的android应用程序中。但当应用程序处于后台或关闭时,Firebase通知会显示为灰色的方形图标,而不是我的应用程序的启动图标 在不实施Firebase server API和发送数据消息的情况下,我如何使通知图标成为我的应用程序徽标 这是firebase中的一个bug。如果您的应用程序位于前台,并且从Firebase控制台发送通知,您将获得灰色图标 解决方法是:通过API而不是控制台发送通知。从Firebase 9.8.0可以通过在清单中添加有关此

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


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

这是firebase中的一个bug。如果您的应用程序位于前台,并且从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" />

您可以在这里找到以下示例:


它与Firebase无关。从安卓3.0开始,状态图标被修改,“只是由透明背景上的白色像素组成,在适当的情况下,alpha混合用于平滑边缘和内部纹理”。据我所见,从Android 5.0开始,您必须提供这些全白色的小状态图标,否则会出现灰色的方形图标

这个问题的答案可以进一步解释,也可以说明如何强制你的应用程序使用原始的ic_启动器图标,尽管这对我来说不是个好主意,因为你是在强制它以旧的sdk为目标,同时也没有遵循材料设计准则

您真正应该做的是提供您可以在此处生成的白色小图标,将它们添加到您的项目中,然后配置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像素图像中创建基础形状。注意安全框,保持上下两个像素的自由。将25x25处的图标导出为启用透明度的PNG文件。

我使用了下面的解决方案,它在Flatter中对我有效:

  • 创建一个透明的白色通知图标(您可以使用以下工具:)

  • 下载zip文件夹,解压,你会看到它包含一个res文件夹和不同的可绘制文件夹。在“android\app\src\main\res”路径中复制并粘贴res文件夹的内容

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

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

  • 如果要更改图标的颜色,请查看上图。在通知图标标记之后添加元数据标记

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

  • Stackoverflow不允许我在这里添加colors.xml文件代码,所以我只是在上图中添加代码,您必须手动在colors.xml中键入代码。对不起


    特别感谢github上的“RumanaB”。

    通知图标源自您的启动器图标。请看一个简单的修复方法:尝试过,但仍然无法解决我的问题。(Moto G4+牛轧糖操作系统)应用程序被杀死/不在前台确实……我的目标不是Firebase 9.8.0。将库版本更新为9.8.0并使用元数据字段可更正此问题。任务“:app:processDebugResources”的执行失败。“>执行com.android.build.gradle.internal.tasks.Workers$ActionFacade>android资源链接失败D:\john\appname\android\app\src\main\AndroidManifest.xml:27:13-29:72:AAPT:error:resource drawable/ic\u stat\u ic\u notification(又名com.example.appname:drawable/ic\u stat\u ic\u notification)未找到。D:\john\appname\android\app\src\main\AndroidManifest.xml:30:13-32:57:AAPT:error:resource color/colorAccent(又名com.example.appname:color/colorAccent)找不到Hey@Kamlesh您知道如何在onesignal中实现这一点吗?不,亲爱的,我没有onesignal的经验。谢谢。@Kamlesh你的解决方案对我很有用。但我的图标有多种颜色,我们在传递一种颜色,我们如何传递图标的多种颜色。