Flutter集成OneSignal推送:Android部分设备通知小图标不显示求助
Flutter OneSignal 通知小图标空白问题解决方案(将启动图标转为通知图标)
问题根源
Android系统(尤其是Android 8.0及以上)对通知小图标有严格要求:必须是单色(白色前景+透明背景)的Alpha通道图标。如果直接使用彩色的应用启动图标,系统会自动将其处理为空白方块,不同设备的系统版本差异导致了部分显示正常、部分显示空白的情况。
解决步骤
1. 生成符合要求的单色通知图标(基于启动图标)
用Android Studio的Image Asset工具快速生成适配所有分辨率的通知图标:
- 打开Flutter项目下的
android文件夹(用Android Studio打开) - 右键点击
res文件夹 →New→Image Asset - 在Asset Type中选择
Notification Icons - 点击
Path选择你的应用启动图标作为源素材,调整样式确保图标为白色前景、透明背景 - 点击Next完成生成,工具会自动在
res/mipmap-xxxhdpi等分辨率文件夹下生成对应的通知图标(默认命名为ic_notification)
2. 配置OneSignal使用该图标
有两种配置方式,任选其一即可:
- 控制台配置:
登录OneSignal后台,进入你的应用 →Settings→Android→Notification Icons,上传刚生成的单色图标,设置为默认小图标。 - 本地配置:
打开android/app/src/main/AndroidManifest.xml,在<application>标签内添加以下meta-data:
注意:<meta-data android:name="com.onesignal.notification_icon" android:resource="@mipmap/ic_notification" />@mipmap/ic_notification要和你生成的图标文件名完全一致。
3. 兼容旧版本(可选)
对于Android 7.1及以下系统,虽然支持彩色大图标,但小图标仍建议使用单色版本以保证一致性。如果需要显示彩色启动图标作为通知大图标,可以在发送通知时设置large_icon参数为你的启动图标URL,或在OneSignal控制台配置默认大图标。
4. 验证
重新打包APK并安装到之前显示空白的设备上,使用OneSignal的测试推送功能发送通知,确认图标正常显示。
内容的提问来源于stack exchange,提问作者Jiyad
相关产品推荐
相关产品推荐

