在MAUI的AndroidManifest中设置自定义图标为FCM默认通知图标
当然可以用自定义图标,不用局限于系统自带的drawable,你遇到的@mipmap/appicon无效问题,大概率是资源配置或项目缓存导致的,按下面步骤排查修复:
确认图标资源的有效性
首先你的图标要符合Android通知图标规范:必须是透明背景的单色图标(否则系统会自动替换成白色/灰色占位符)。另外检查MAUI的图标配置:
在项目的Platforms/Android/Resources目录下,确保通过MauiIcon生成的mipmap资源存在;或者手动把不同分辨率的appicon.png放到对应的mipmap-mdpi、mipmap-hdpi等子目录中。修正AndroidManifest的配置
确保meta-data标签放在<application>标签内部,并且资源引用正确:<application ...> <!-- 其他应用配置 --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/appicon" /> </application>注意:这里的
appicon要和你资源文件的名称完全一致——如果手动放置的是appicon.png,就用@mipmap/appicon;如果MauiIcon的文件名是其他(比如myicon.svg),就要改成@mipmap/myicon。清理缓存并重建项目
MAUI的资源缓存经常会导致新配置不生效:- 删除项目根目录下的
bin和obj文件夹 - 右键项目选择「清理」,再选择「生成」或「重建」
- 卸载设备上的旧应用,重新安装
- 删除项目根目录下的
验证配置
发送一条FCM后台消息(不是通过OnMessageReceived的本地消息),查看通知是否显示自定义图标。如果仍有问题,可以用解压工具打开生成的APK,检查res/mipmap-*目录下是否存在appicon相关文件。
另外,你在OnMessageReceived中用Giki.Maui.Resource.Mipmap.appicon能正常显示,说明资源本身是有效的,问题就出在Manifest配置或缓存上,按上面步骤操作应该能解决。
内容的提问来源于stack exchange,提问作者Higor Pereira

