Flutter 如何设置Firebase推送通知左侧显示大应用图标
Firebase推送通知左侧大图标布局问题解决方案
本方案针对Android端场景,iOS端通知默认已实现左侧展示应用大图标、右侧展示标题的布局,无需额外配置。
1. 准备符合规范的大图标资源
- 按照Android官方要求准备对应分辨率的图标:mdpi 48x48px、hdpi 72x72px、xhdpi 96x96px、xxhdpi 144x144px、xxxhdpi 192x192px
- 图标使用透明背景PNG格式,存放在项目
res/drawable对应分辨率目录下,命名建议为ic_notification_large.png - 注意不要给图标添加多余的透明边距,否则实际显示会看起来尺寸偏小
2. 通知构建时显式指定大图标
如果是应用内触发的通知、或者Firebase消息服务onMessageReceived回调中构建的通知,需要给NotificationCompat.Builder显式设置大图标参数:
// 从本地资源解析大图标 val largeIcon = BitmapFactory.decodeResource(resources, R.drawable.ic_notification_large) val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification_small) // 原有小图标,用于状态栏展示 .setLargeIcon(largeIcon) // 核心配置:指定通知栏展示的大图标 .setContentTitle("通知标题") .setContentText("通知内容") .setPriority(NotificationCompat.PRIORITY_DEFAULT)
如果是服务端下发的Firebase后台通知(由系统直接渲染),需要在通知payload中添加大图标配置:
{ "notification": { "title": "通知标题", "body": "通知内容", "image": "ic_notification_large" } }
注意:image参数值必须和本地大图标资源的文件名完全一致,不需要加文件后缀
3. 自定义布局适配(可选)
如果系统默认通知布局的图标位置、尺寸仍不符合需求,可以自行定义通知布局:
- 新建布局文件
layout/custom_notification.xml,自行定义左侧大图标、右侧标题的位置和尺寸,建议固定图标尺寸为48dp适配不同设备 - 构建通知时绑定自定义布局:
val customView = RemoteViews(packageName, R.layout.custom_notification) customView.setImageViewBitmap(R.id.iv_large_icon, largeIcon) customView.setTextViewText(R.id.tv_title, "通知标题") notificationBuilder.setCustomContentView(customView)
4. 异常情况排查
- 确认已完成Android 8.0及以上版本的通知渠道适配,未创建通知渠道时通知样式会被系统强制重置
- 部分国产ROM有独立的通知样式规则,需要在系统应用设置中打开对应应用的「通知显示大图标」权限
- 测试时不要使用Android模拟器的低配系统镜像,部分镜像存在通知样式渲染异常的问题
内容的提问来源于stack exchange,提问作者Rashmi Ranjan Sahoo
相关产品推荐
相关产品推荐

