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

React Native通知无弹窗问题求助:如何实现弹窗+通知栏展示

React Native Firebase 通知弹窗实现方案

Android 端配置(核心)

1. 创建高优先级通知渠道(Android 8.0+ 强制要求)

Android 8.0及以上版本,通知必须绑定渠道才能触发弹窗。在App启动时创建一个高重要性的渠道即可:

import messaging from '@react-native-firebase/messaging';

async function setupNotificationChannel() {
  const channelId = "high_priority_channel";
  await messaging().createChannel({
    id: channelId,
    name: "高优先级通知",
    importance: messaging.Importance.HIGH,
    sound: "default",
    vibrationPattern: [0, 250, 250, 250],
  });
}

// App启动阶段调用该函数
setupNotificationChannel();

后续发送通知(FCM后台推送或本地通知),都要指定这个渠道ID。

2. 调整 AndroidManifest.xml 配置

在AndroidManifest.xml中补充必要权限和默认渠道设置:

<!-- 添加通知相关权限 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.VIBRATE" />

<application ...>
  <!-- Firebase Messaging 服务声明 -->
  <service
    android:name="io.invertase.firebase.messaging.ReactNativeFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
      <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
  </service>

  <!-- 设置默认通知渠道为创建的高优先级渠道 -->
  <meta-data
    android:name="com.google.firebase.messaging.default_notification_channel_id"
    android:value="high_priority_channel" />

  <!-- 可选:配置通知图标 -->
  <meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@mipmap/ic_launcher" />
</application>

3. 配置FCM消息优先级

如果通过后端发送FCM消息,必须在android字段指定高优先级和渠道ID:

{
  "message": {
    "token": "目标设备Token",
    "notification": {
      "title": "测试弹窗通知",
      "body": "这是一条会弹出屏幕的通知"
    },
    "android": {
      "priority": "high",
      "notification": {
        "channel_id": "high_priority_channel",
        "visibility": "public"
      }
    }
  }
}

iOS 端配置

iOS上实现弹窗只需两步:

  1. 确保应用已在Info.plist中配置通知权限描述(NSUserNotificationUsageDescription、NSNotificationSettingsUsageDescription),且用户授权了**提醒(Alerts)**权限
  2. 发送FCM消息时,正确配置APNs参数:
{
  "message": {
    "token": "目标设备Token",
    "notification": {
      "title": "测试弹窗通知",
      "body": "这是一条会弹出屏幕的通知"
    },
    "apns": {
      "payload": {
        "aps": {
          "alert": {
            "title": "测试弹窗通知",
            "body": "这是一条会弹出屏幕的通知"
          },
          "sound": "default",
          "content-available": 1
        }
      }
    }
  }
}

iOS 15+ 可额外添加interruption-level: "active"来强化弹窗优先级。

总结

不需要引入额外第三方库,按上述配置完成后,就能实现通知栏显示+屏幕弹窗的效果。若仍无法弹窗,可检查:

  • Android设备是否开启了应用的弹窗通知权限
  • 通知渠道是否成功创建且重要性为HIGH
  • FCM消息的优先级和渠道ID是否配置正确

内容的提问来源于stack exchange,提问作者Gaurav Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:52:42