React Native中Notifee通知在Android默认被屏蔽,如何安装时启用?
解决React Native + Notifee Android通知默认被屏蔽问题
核心原因
Android 13(API 33)及以上版本将通知权限列为运行时权限,默认未授权;部分国内定制ROM(如小米、华为)在更低版本也会默认关闭第三方应用的通知权限,导致安装后通知被系统屏蔽。
解决方案
要实现安装后通知权限正常可用(或引导用户快速授权),需完成以下配置和代码处理:
1. 配置AndroidManifest.xml权限
在android/app/src/main/AndroidManifest.xml中添加权限声明:
<!-- Android 13+ 专属通知权限 --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- 兼容Android 8.0+渠道创建的基础权限(可选) --> <uses-permission android:name="android.permission.INTERNET" />
2. 运行时主动申请通知权限
在应用启动阶段(比如App.js的useEffect钩子中)发起权限申请,确保用户授权后通知功能正常:
import { Platform, PermissionsAndroid } from 'react-native'; import notifee from '@notifee/react-native'; async function requestNotificationPermission() { if (Platform.OS === 'android') { // Android 13+ 申请POST_NOTIFICATIONS权限 if (Platform.Version >= 33) { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, { title: '通知权限申请', message: '需要您的授权才能接收应用通知', buttonNeutral: '稍后再说', buttonNegative: '取消', buttonPositive: '允许', } ); return granted === PermissionsAndroid.RESULTS.GRANTED; } // Android 12及以下,无需运行时申请但部分ROM可能默认关闭,引导用户开启 else { const settings = await notifee.getNotificationSettings(); if (!settings.authorizationStatus) { await notifee.openNotificationSettings(); } } } } // 应用启动时执行权限申请 useEffect(() => { requestNotificationPermission(); }, []);
3. 创建Notifee通知渠道(Android 8.0+必做)
Android 8.0及以上必须配置通知渠道,否则通知无法正常显示。建议在应用启动时初始化渠道:
import { AndroidImportance } from '@notifee/react-native'; async function createNotificationChannel() { await notifee.createChannel({ id: 'default_channel', name: '默认通知渠道', importance: AndroidImportance.HIGH, // 设置高优先级确保通知能弹出 description: '接收应用的所有通知内容', }); } // 应用启动时初始化渠道 useEffect(() => { createNotificationChannel(); }, []);
注意事项
- 国内定制ROM存在特殊权限逻辑,即便完成上述配置,仍可能需要引导用户手动开启「通知权限」或「悬浮通知」权限。
- 受Android系统限制,无法强制让通知权限在安装时自动启用,只能通过主动申请+友好引导的方式获取用户授权。
内容的提问来源于stack exchange,提问作者JaRoMaster
相关产品推荐
相关产品推荐

