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

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,这是核心问题之一:

步骤:

  1. 在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);
  1. 修改推送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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:32