Firebase 通知是灰色的
Posted
技术标签:
【中文标题】Firebase 通知是灰色的【英文标题】:Firebase Notification is grey flutter 【发布时间】:2019-06-01 01:43:04 【问题描述】:我正在使用 Firebase 云消息传递向我的 Flutter 应用发送通知。它工作正常,但我的应用程序图标通知在 Google Pixel XL 上是灰色的。我可以看到轮廓,但由于某种原因,它仍然是灰色的。我在不同的文章中读到它与 android SDK 级别有关,但 Flutter 中的 minSdkVersion 已经是 16(小于 21)所以我不明白为什么颜色不会显示。
那么是否可以用颜色显示我的应用程序图标通知?
--提前致谢
【问题讨论】:
你说的是什么类型的图标?托盘栏上的图标或您在锁定/向下滑动屏幕上看到的通知上的图标? 您在锁定/向下滑动屏幕上看到的通知图标。 Flutter Icon 也是 bw 是的,我添加了评论。 嘿^^。你最终有彩色通知图标了吗? 【参考方案1】:Here你可以阅读:
自定义默认通知
自定义默认图标
设置自定义默认图标允许您指定使用的图标 如果通知中未设置图标,则用于通知消息 有效载荷。也使用自定义默认图标来设置使用的图标 从 Firebase 控制台发送的通知消息。 如果没有自定义 默认图标已设置,通知有效负载中未设置图标, 使用了应用程序图标(呈现为白色)。
自定义默认颜色
您还可以定义通知使用的颜色。 不同的 android 版本以不同的方式使用此设置: Android = N 使用它为图标和应用名称着色。
试着把它放在你的AndroidManifest.xml
<!-- 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" />
您可以找到更多信息here。
您还需要定义您的colorAccent
。您可以像这样在 res 文件夹中创建一个colors.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorAccent">#E91E63</color>
</resources>
在此文件夹中:/android/app/src/main/res/values
该图标也必须位于drawable
文件夹中。
但请记住,此图标必须是white
,并带有透明背景。
要使某些类型的icons 着色,您需要在您已经添加到您或AndroidManifest.xml
的某些设备集meta-tags
上,并且您的图标必须遵循一些规范(必须在透明背景中为白色)。您可以尝试生成一个here。试一试。记得把它放在 drawable 文件夹中并更新清单 meta-tag
图标名称。
还请阅读此SO question,以加强我在这里所说的内容。
我已经在运行 API 级别 27 的 Pixel 2 模拟器上进行了尝试:
希望对你有帮助。
【讨论】:
感谢您的回答,但我收到了error: resource color/colorAccent (aka com.package.package:color/colorAccent) not found
错误。在哪里添加颜色资源?
我正在查看 Stack Overflow 的通知图标。它也变灰了。也许这就是它应该在较新版本的Android上的样子?不过话说回来,snapchat、FB 等都是有颜色的。
@PrinceHodonou 顺便说一句,如果您没有定义 colorAccent,您会收到该错误。如果你使用 AS。试一试。我会更新我的答案,以便您了解该怎么做。
我已经尝试过了:<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/colorAccent" /> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/ic_launcher" />
它可以编译一切,但图标仍然是灰色的。不过感谢您的帮助!
@PrinceHodonou 好奇怪。不幸的是,我没有那么幸运有一个 Pixel XL 来试一试^_^。在不同的设备上,您看到的图标是真彩色还是总是 bw?请问您是否将图标设置到通知 JSON 有效负载上?到目前为止,我所有的 Flutter FCM 试验,没有在 JSON 有效负载中设置图标,在我的设备上给我一个明亮颜色的 flutter 图标。【参考方案2】:
我知道这个问题是关于 Firebase 通知的,但是因为在搜索相同的 local_notifiction 灰色图标错误时,这篇文章出现了......所以最后我能够找到解决方案(在我的情况下,图标在调试模式下工作正常,但是在构建 apk 图标时变成灰色框)
解决方案:- 在 Android/app/src/main/res 创建一个名为 raw 的新目录,并在该目录中添加一个名为 keep.xml 的文件并复制粘贴以下内容:-
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/*" />
【讨论】:
你真的让我很开心,也为我节省了一天的搜索时间。但只是出于好奇,您是如何得出这个结论的? 只是大量的搜索、命中和试验。当我找到答案时,我就会回到这个问题,这样其他人就不必面对同样的问题了。感谢@techpool 的赞赏, 为什么这不适用于 "tools:keep="@mipmap/*"" ?【参考方案3】:我做了以下,它对我有用:
-
创建一个透明的白色通知图标(可以使用以下工具:AndroidAssetStudio)
下载 zip 文件夹,解压缩,您会看到它包含一个 res 文件夹,其中包含不同的可绘制文件夹。将res文件夹的内容复制粘贴到“android\app\src\main\res”路径中
然后打开 AndroidManifest.xml 文件并在其中添加以下行:
ic_stat_calendar_today 是我的通知图标的名称。并且每个已粘贴的drawable文件夹都包含不同大小的同名图标。
如果您想更改图标的颜色,请查看上图。在通知图标标签后添加元数据标签
转到“android\app\src\main\res\values”并添加一个colors.xml文件
<color name="colorAccent">#00FF00</color>
我也在以下 Github 链中分享了这个答案-Solution。
【讨论】:
【参考方案4】:如果仅在发布时不显示图标,请将其添加到 android/app/build.gradle 部分的“buildTypes”中:
shrinkResources 错误
buildTypes
release
shrinkResources false // <------------
【讨论】:
以上是关于Firebase 通知是灰色的的主要内容,如果未能解决你的问题,请参考以下文章
如何设置由Image Base Studio生成的通知图标供Firebase使用?
Firebase Cloud Messaging - 更改 Android 上 Web 通知的默认 Chrome 图标