android - Android 9+ 设备在提示通知中缺少应用程序图标
问题描述
TL;DR :Firebase 云消息仅在 Android 9+ 设备 上的“抬头”通知中不显示我的应用程序图标。https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up
更长的版本:
当我直接从 Firebase 或通过任何 Rest 客户端向https://fcm.googleapis.com/fcm/send端点发送云消息时,一切看起来都很好,消息显示在屏幕上,带有标题、描述和图标、设备发出声音,它会在一段时间内消失,但会留在通知栏和通知抽屉中。
在消息传递到运行 Android 10 或 9(但不是全部)的设备之前,一切正常。通知栏和通知抽屉工作正常,消息本身看起来与旧 Android 版本完全相同。但是提示错过了我的应用程序的图标。到目前为止,我还没有向 Firebase 发送任何带有有效负载的“图标”,但即使我将带有 URL 的“图标”属性设置为我的图标,它仍然不会出现在提示中。我已将相同的 URL 放在“图像”属性中,然后图像出现在提示中,但我认为它不是应该用于在通知中显示应用程序图标的属性。
有没有人注意到同样的问题?我试图查看 Google Android 文档 - 但它看起来已经过时并且以 Android 8 结尾。我尝试了 Firebase 文档,但它说“图标”属性是可选的(这就是我没有附加它的原因)。
我在以下位置测试了通知:
- Android 设备:5.1(工作)、7(工作)、8.1(工作)、9(工作!)、另一个 9(不工作)、10(不工作)
- 安卓模拟器:8.1(工作),9(不工作),10(不工作)。
有效载荷只是:
{
"to": "(...)",
"notification": {
"title": "Push from RestClient",
"body": "Notification body"
},
"data": {}
}
当然,我已经添加了 Firebase 所需的 default_notification_icon、颜色和通道。这不是这里的解决方案。
解决方案
您需要在 manifest.xml 中添加 FCM 元数据
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_logo_white" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/app_theme_blue" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" />
推荐阅读
- android - how to increase the android 's sms sending throtle in delphi?
- jquery - activate next and privous button of owl-slider using jquery
- c++ - If another pointer (p) points at a class that was allocated to another pointer (head), will the former (p) invoke a destructor?
- php - How to return subject when deleted with laravel spatie activity log
- flutter - 为什么获取 SharedPreferences 的实例是一个异步函数?缓存实例是一个好习惯吗?
- angular - Angular:如何在订阅模板之前通过管道传输 Observable
- javascript - 有没有办法在 url 中有一个搜索值和哈希?
- python - 无法将函数存储在 Selenium 的变量中
- excel - 循环通过工作表删除重复项
- php - 如何使用 php 将数据传递到我的 html 页面的另一部分?