React Native 0.71.3推送通知失效:Intent.ACTION_CLOSE_SYSTEM_DIALOGS权限缺失
解决方案:修复React Native 0.71.3推送通知的权限缺失问题
1. 补充AndroidManifest权限声明
在android/app/src/main/AndroidManifest.xml中添加对应权限:
<uses-permission android:name="android.permission.CLOSE_SYSTEM_DIALOGS" />
说明:Android 12(API 31)及以上版本中,该权限属于普通权限,仅需在清单中声明即可,无需动态申请。
2. 排查推送SDK兼容性
如果使用第三方推送SDK(如Firebase Messaging、JPush等):
- 确认SDK版本与React Native 0.71.3的适配性,参考官方文档核对兼容版本范围
- 尝试更新SDK至最新兼容版,或回退到之前正常运行的版本
3. 检查Intent调用上下文
若自定义代码中触发了Intent.ACTION_CLOSE_SYSTEM_DIALOGS,确保调用时使用Activity上下文而非Application上下文,部分系统Intent对上下文类型有严格要求。
4. 清理缓存并重建项目
- 清理Android构建缓存:
cd android && ./gradlew clean - 重新安装依赖并构建:
npm install && npx react-native run-android
5. 适配Android 13+通知权限
如果应用目标SDK为33及以上,除上述权限外,还需添加通知权限并动态申请:
- 在
AndroidManifest.xml中声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
- 在应用启动时添加权限申请逻辑:
import { PermissionsAndroid } from 'react-native'; const requestNotificationPermission = async () => { try { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, { title: '通知权限申请', message: '需要获取通知权限以接收推送消息', buttonNeutral: '稍后再说', buttonNegative: '取消', buttonPositive: '允许', }, ); if (granted === PermissionsAndroid.RESULTS.GRANTED) { console.log('通知权限已获取'); } else { console.log('通知权限被拒绝'); } } catch (err) { console.warn(err); } };
内容的提问来源于stack exchange,提问作者Aidin Bašić
相关产品推荐
相关产品推荐

