我正在尝试将Firebase Cloud Messaging集成到我的Android应用程序中。但是当应用程序在后台或关闭时,Firebase通知会显示灰色方形图标,而不是我的应用程序启动器图标。
如何使通知图标成为我的应用程序标志,而不实现Firebase服务器API并发送数据消息?
如何使通知图标成为我的应用程序标志,而不实现Firebase服务器API并发送数据消息?
<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" />
这里可以找到示例:
执行com.android.build.gradle.internal.tasks.Workers$ActionFacade时发生故障 Android资源链接失败 D:\john\appname\android\app\src\main\AndroidManifest.xml:27:13-29:72: AAPT:错误:找不到资源drawable/ic_stat_ic_notification(又名com.example.appname:drawable/ic_stat_ic_notification)。
D:\john\appname\android\app\src\main\AndroidManifest.xml:30:13-32:57: AAPT:错误:找不到资源color/colorAccent(又名com.example.appname:color/colorAccent)。
- Kamlesh<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的一个bug。如果您的应用在前台运行,并且通知是从Firebase控制台发送的,则会收到灰色图标。
解决方法是:通过API发送通知,而不是从控制台发送。
创建一个透明和白色的通知图标(您可以使用以下工具: AndroidAssetStudio)
下载zip文件夹,解压缩后,您会看到其中包含不同drawable文件夹的res文件夹。将res文件夹的内容复制并粘贴到“android\app\src\main\res”路径中
然后打开AndroidManifest.xml文件,并添加以下行:
ic_stat_calendar_today是我的通知图标的名称。并且每个已粘贴的drawable文件夹都包含具有相同名称的不同大小的图标。
如果您想更改图标的颜色,请查看上面的图片。在通知图标标签后添加元数据标签。 前往"android\app\src\main\res\values"并添加一个colors.xml文件。 Stackoverflow不允许我在此处添加colors.xml文件代码,因此我只是在上面的图像中添加了代码,您需要手动在colors.xml中输入它。对此我很抱歉。对我有用的是:
我还需要做的一个额外步骤是在服务器端的fcm/send post请求中定义:
"notification": {
"title": "your title",
"body": "your body",
"icon": "your icon name in drawable folder"
},