React Native中FCM通知不显示payload指定图标问题求助
React Native + OneSignal 自定义通知图标不显示(非三星设备)解决方案
核心排查点及修复步骤
严格遵循Android通知图标规范
非三星设备大多严格执行Android官方要求:通知图标必须是透明背景的单色矢量图/PNG图,带彩色或非透明背景的图标会被系统自动替换为默认图标。建议用Android Studio的Image Asset工具生成合规图标,生成后会自动放入对应分辨率的drawable-mdpi/drawable-hdpi等文件夹,不要仅放在根目录drawable文件夹。校验OneSignal推送payload参数
确保推送参数正确对应:- 原生Android推送使用
small_icon字段,值为图标文件名(不带后缀,如ic_custom_notification) - OneSignal后台推送时,在「Notification Settings」的「Small Icon」栏填写正确图标名;API推送则指定
android_small_icon字段
- 原生Android推送使用
确认图标资源的放置与命名
- 图标必须放在
android/app/src/main/res/下的对应分辨率drawable文件夹,单一drawable文件夹无法适配全分辨率设备 - 文件名需全小写、用下划线分隔,不能含大写字母或特殊字符(如
custom_notify_icon,禁止CustomNotifyIcon)
- 图标必须放在
检查OneSignal初始化配置
打开AndroidManifest.xml,移除或修改强制指定默认图标的配置:<!-- 若存在此配置,会优先使用默认图标,需删除或替换为自定义图标名 --> <meta-data android:name="com.onesignal.NotificationSmallIcon" android:value="@drawable/ic_default_notification" />清理缓存后重新测试
非三星设备可能缓存旧图标资源,建议:- 卸载App后重新安装
- 进入系统设置-应用-目标App-存储-清除缓存
额外注意事项
- 小米、华为、OPPO等国产ROM有专属通知图标规则,除符合Android规范外,需确保图标尺寸在24x24~48x48dp范围内
- 本地代码触发通知时,调用OneSignal的
postNotification方法需正确设置android.small_icon字段
内容的提问来源于stack exchange,提问作者Ansmi Savio
相关产品推荐
相关产品推荐

