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上实现弹窗只需两步:
- 确保应用已在
Info.plist中配置通知权限描述(NSUserNotificationUsageDescription、NSNotificationSettingsUsageDescription),且用户授权了**提醒(Alerts)**权限 - 发送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
相关产品推荐
相关产品推荐

