.NET MAUI Android推送通知图标显示异常问题求助
解决.NET MAUI FCM后台通知图标显示异常问题
针对你遇到的「应用前台通知图标正常,关闭/后台时图标过小且被大圆圈包裹」的问题,核心原因是Android系统对后台通知图标的规范要求更严格,且MAUI共享资源目录的图标在应用关闭时无法被系统正确读取。以下是具体解决方案:
1. 严格遵循Android通知小图标规范
- 图标必须是纯白色+透明背景,不能包含任何其他颜色(Android 5.0+系统会强制将彩色小图标转为白色,但后台推送场景下系统处理逻辑不同,容易出问题)
- 必须提供多dpi适配的图标尺寸:
- mdpi: 24×24px
- hdpi: 36×36px
- xhdpi: 48×48px
- xxhdpi: 72×72px
- xxxhdpi: 96×96px
- 图标内容要居中,不要留过多空白,避免缩放后显得过小
2. 正确放置图标资源(关键!)
不要把图标放在MAUI的Resources/Images共享目录,必须放在Android原生资源目录下:
- 在
Platforms/Android/Resources下创建对应dpi的文件夹(如果没有的话):drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi - 将对应尺寸的
small_notification_icon.png分别放入这些文件夹中 - 确保每个文件夹内的图标文件名完全一致,且Android项目能识别这些资源(右键Android项目→属性→资源,确认图标已被包含)
3. 调整FCM推送配置
- 如果通过Firebase控制台发送通知:不要设置「Large icon」,仅依赖你配置的小图标;如果必须用大图标,也要确保大图标符合尺寸规范
- 如果通过FCM API发送消息:payload中不要指定
icon字段(让系统自动使用你在代码中设置的小图标),或者指定为Android原生资源名(即small_notification_icon,不带后缀)
4. 代码与渠道配置优化
- 确保通知渠道创建时的配置正确(如果还没创建渠道,必须先创建):
// 在MainActivity的OnCreate方法中添加渠道创建逻辑 if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { var channel = new NotificationChannel(MainActivity.ChannelID, "推送通知", NotificationImportance.High) { Description = "接收FCM推送通知" }; var notificationManager = (NotificationManager)GetSystemService(NotificationService); notificationManager.CreateNotificationChannel(channel); } - 你的现有通知构建代码无需修改,但要确保
Resource.Drawable.small_notification_icon是Android原生资源ID(即放在drawable-*目录下的图标)
5. 验证步骤
- 清理项目:删除解决方案的
bin、obj文件夹,重新构建 - 卸载设备上的旧应用,重新部署安装(避免缓存的旧图标干扰)
- 测试后台推送:完全关闭应用后,通过Firebase控制台或API发送通知,查看图标显示效果
内容的提问来源于stack exchange,提问作者justcivah
相关产品推荐
相关产品推荐

