Flutter推送通知图标显示异常:白框问题求助
问题解决:Flutter应用图标正常但通知图标显示白框
flutter_launcher_icon包仅负责配置应用启动图标,系统推送通知的图标有独立的规范要求,尤其是Android平台对图标格式的限制,是导致白框问题的核心原因。以下是分平台的具体解决步骤:
Android 端修复步骤
准备合规的通知图标
必须使用透明背景的单色(白色)图标,按Android分辨率规范准备多尺寸版本:- mdpi: 24x24px
- hdpi: 36x36px
- xhdpi: 48x48px
- xxhdpi: 72x72px
- xxxhdpi: 96x96px
建议用矢量图导出各尺寸PNG,避免模糊。
放置图标到资源目录
在android/app/src/main/res/下创建(若不存在)drawable-mdpi、drawable-hdpi等目录,将对应尺寸的图标命名为ic_notification.png(可自定义名称),放入对应分辨率目录。配置AndroidManifest.xml
打开android/app/src/main/AndroidManifest.xml,在<application>标签内添加默认通知图标配置:<!-- 设置默认通知图标 --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" /> <!-- 可选:配置通知图标背景色(如需) --> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/your_notification_color" />若使用原生通知而非Firebase,需在创建
NotificationChannel时指定图标:val channel = NotificationChannel(CHANNEL_ID, "通知渠道名", NotificationManager.IMPORTANCE_DEFAULT).apply { setSmallIcon(R.drawable.ic_notification) // 其他渠道配置 }
iOS 端修复步骤
准备通知图标
要求为透明背景的PNG,需覆盖以下尺寸:
20x20、29x29、40x40、58x58、80x80、87x87、100x100、120x120、152x152、167x167、180x180px添加到Assets资源库
打开iOS项目的Assets.xcassets,右键新建Image Set并命名(如NotificationIcon),将对应尺寸的图标拖入1x、2x、3x的位置。配置项目与推送参数
- 在Xcode中进入
Target→General→App Icons and Launch Images,在Notification Icons下拉选择刚才创建的Image Set。 - 若使用第三方推送服务(如Firebase),确保推送payload未错误覆盖图标设置,优先使用本地配置的默认图标。
- 在Xcode中进入
通用注意事项
- 禁止使用带彩色或不透明背景的图标作为通知图标,Android系统会自动将非透明区域转为白色,导致白框。
- 配置完成后执行
flutter clean && flutter build apk/ios,确保资源被正确打包。 - 若推送服务端payload中指定了图标参数,需确保参数名称与本地资源名称一致。
内容的提问来源于stack exchange,提问作者Akhil George
相关产品推荐
相关产品推荐

