Android 13下React Native Firebase后台通知未显示于通知中心问题
Android 13 FCM通知接收但不显示的排查方案
结合你提供的配置和现象,问题大概率出在Android 13的权限、通知渠道或者依赖库版本上,以下是具体排查点:
1. 确认通知权限是否真正获取
虽然你在Manifest中添加了POST_NOTIFICATIONS权限,但Android 13要求必须主动发起运行时权限请求,仅声明权限无效:
- 检查RN代码中是否调用了
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS) - 确认用户是否授予了该权限(可通过
PermissionsAndroid.check()验证) - 注意:权限请求必须在App前台发起,后台请求会被系统拒绝
2. 升级AndroidX Core依赖版本
你当前使用的androidXCore = "1.0.2"版本过低,完全不兼容Android 13(API 33)的通知权限机制:
- 直接将版本升级到1.7.0及以上(推荐1.10.0),同步build.gradle后重新编译打包
3. 补充通知渠道配置
Android 13强制要求所有通知绑定有效通知渠道,你的推送payload中未指定channelId,这是核心问题之一:
步骤:
- 在RN或原生代码中创建通知渠道(示例RN代码):
import { NotificationManagerAndroid } from 'react-native'; const channelConfig = { id: 'default_channel', name: 'Default Notifications', description: 'All app notifications', importance: NotificationManagerAndroid.Importance.DEFAULT, }; NotificationManagerAndroid.createChannel(channelConfig);
- 修改推送payload,在
notification.android字段中添加channelId,与你创建的渠道ID一致:
"notification":{ "android":{ "sound":"mySound", "smallIcon":"myicon", "channelId":"default_channel" // 新增该字段 }, "body":"You have been xxxxx", "title":"xxx" }
4. 检查后台消息处理逻辑
如果setBackgroundMessageHandler中存在自定义处理,可能拦截了系统默认的通知显示行为:
- 确保handler中没有阻止通知显示的代码,若需要自定义显示,需手动调用
NotificationManagerAndroid的通知显示API - 测试注释掉
setBackgroundMessageHandler后,通知是否能正常显示
5. 验证通知图标有效性
Android 13对通知图标格式要求更严格:
smallIcon必须是透明底色的矢量图(.xml格式),不能使用带彩色或非透明背景的图片- 临时替换为系统默认图标(如
@mipmap/ic_launcher)测试,确认是否是图标导致的问题
内容的提问来源于stack exchange,提问作者Bagusflyer
相关产品推荐
相关产品推荐

