Flutter集成Firebase:如何为Android推送通知设置自定义图标?
Flutter Android端FCM推送自定义图标设置方法
一、先准备合规的图标资源
- 通知图标得是透明背景的单色(白色)PNG,Android系统限制通知图标不能有彩色,不然会被系统自动转成白/灰色
- 要做不同分辨率的版本适配不同设备:
- mdpi: 24×24
- hdpi: 36×36
- xhdpi: 48×48
- xxhdpi: 72×72
- xxxhdpi: 96×96
- 把对应分辨率的图标放到Android项目的
android/app/src/main/res/drawable-[dpi]/目录下,比如统一命名成ic_notification.png
二、配置AndroidManifest.xml设置默认图标
- 打开
android/app/src/main/AndroidManifest.xml,在<application>标签里加一段meta-data,指定默认的通知图标:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" />
- (可选)要是想给通知图标加个强调色,比如图标背景色,可以再加个meta-data:
<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/notification_color" />
记得在res/values/colors.xml里先定义好notification_color,比如<color name="notification_color">#FF0000</color>
三、针对单条消息指定自定义图标(可选)
- 如果某条推送想用不一样的图标,在发送FCM的Payload里,Android专属的
notification字段里加icon参数,值是图标名称(不用加扩展名):
{ "notification": { "title": "自定义标题", "body": "自定义内容", "icon": "ic_notification_custom" }, "to": "目标设备的令牌" }
- 注意:这个图标必须已经放到Android项目的drawable目录里,不然会自动用默认图标兜底
四、前台接收消息时的图标设置
- 要是Flutter应用在前台时需要自己弹通知,用
flutter_local_notifications插件的话,创建NotificationDetails的时候得指定图标:
const AndroidNotificationDetails androidDetails = AndroidNotificationDetails( 'your_channel_id', 'your_channel_name', icon: 'ic_notification', // 这里填图标名称 ); const NotificationDetails notificationDetails = NotificationDetails(android: androidDetails); await flutterLocalNotificationsPlugin.show( 0, '消息标题', '消息内容', notificationDetails, );
内容的提问来源于stack exchange,提问作者mathems32
相关产品推荐
相关产品推荐

