You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:20:37