Flutter - Android 安卓 消息推送FireBase notification 手机状态栏图标不显示或 白板、白底问题。

一、问题:

使用flutter+firebase 开发进行消息推送时,安卓真机推送消息 状态栏的图标显示白色方块。

二、原因:

从Android 5.0(Lollipop)开始,随着Material Design的引入,Android的设计语言和UI经历了重大变革。在这个版本及之后的版本中,Android系统对通知图标的显示方式进行了调整。

在Android 5.0及更高版本中,当彩色图标作为通知图标显示在状态栏中时,系统会自动将该图标的颜色转换为白色,并将其放置在一个白色的背景方块中。这个设计决策是基于提高通知图标在各种状态栏背景颜色下的可见性和可读性。

这种自动将彩色图标转换为白色背景方块的行为引起了一些开发者和用户的关注和批评。其中的原因之一是,这种自动转换可能会破坏应用的原始设计风格和色彩方案,导致通知图标看起来不够精确或不符合应用的品牌形象。

为了解决这个问题,开发者通常采取以下策略:

  1. 使用白色图标:为了确保通知图标在任何背景下都有清晰的可见性,开发者可以选择使用白色版本的图标,并在通知时手动添加背景颜色。

  2. 调整设计策略:考虑到Android的通知图标设计规范,开发者可以在应用的设计阶段就为通知图标预先创建白色版本的图标,以适应系统的显示需求。

  3. 用户体验优化:在进行任何更改之前,开发者应该考虑用户体验和可用性。可以进行用户测试和反馈收集,以确定哪种通知图标设计最能满足用户的需求和偏好。

综上所述,从Android 5.0开始,状态栏中的通知图标设计和显示方式发生了变化,特别是对于彩色图标。为了确保最佳的用户体验和应用的视觉一致性,开发者需要根据Android的设计准则和系统行为进行适当的调整和优化。

总而言之就是安卓5后 不允许在通知栏使用彩色图标。

三、图标条件:

1.尽量大dpi 的正方形图片

2.格式:xxx.png

3.底色透明

4.在透明底色上 放一个图形。

例子:(为了演示用了黑色图形)

四、安卓配置

把上面的png 图片存到 安卓目录下src/main/res/drawable 中

配置 main文件夹下的 AndroidManifest.xml 文件。

复制代码
<application>
........
......

// 添加下面代码

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

@drawable/icon_notification :(这是个文件路径) 你的图标

按照以上配置一般就可以了。

如果还是不行 就在firebase 推送消息的时候指定一下安卓的 notification icon :@drawable/icon_notification"

例如:

复制代码
getMessage(message: IMessage):TokenMessage {
        return {
            notification: {
                title: message.title,
                body: message.body,
            },
            data: message.data ?? {
                score: '850',
                time: '2:45'
            },
            android: {
                notification: {
                    icon: "@drawable/icon_notification"
                }
            },
            apns: {
                payload: {
                    aps: {
                        badge: message.badge,
                        sound: 'default'
                    }
                }
            },
            token: message.token
        }
    }
相关推荐
ZH15455891311 天前
Flutter for OpenHarmony Python学习助手实战:模块与包管理的实现
python·学习·flutter
微祎_1 天前
Flutter for OpenHarmony:构建一个 Flutter 镜像绘图游戏,对称性认知、空间推理与生成式交互设计
flutter·游戏·交互
消失的旧时光-19431 天前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
Jinkxs1 天前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&1 天前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
LDORntKQH1 天前
基于深度强化学习的混合动力汽车能量管理策略 1.利用DQN算法控制电池和发动机发电机组的功率分配 2
android
冬奇Lab1 天前
Android 15 ServiceManager与Binder服务注册深度解析
android·源码·源码阅读
子春一1 天前
Flutter for OpenHarmony:色彩捕手:基于 CIELAB 色差模型与人眼感知的高保真色彩匹配游戏架构解析
flutter·游戏·架构
ZH15455891311 天前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
Lionel6891 天前
Flutter 鸿蒙:获取真实轮播图API数据
flutter