Ionic项目升级targetSDK至33后通知权限请求失败求助
问题解决步骤
你的问题核心在于依赖的Cordova相关组件版本不支持Android 13的POST_NOTIFICATIONS权限,具体遗漏点和解决办法如下:
1. 升级cordova-plugin-android-permissions插件
旧版本的cordova-plugin-android-permissions未加入Android 13新增的POST_NOTIFICATIONS权限枚举,导致你在this.androidPermissions.PERMISSION里找不到该权限,请求弹窗也无法触发。
- 先卸载旧插件:
cordova plugin remove cordova-plugin-android-permissions - 安装最新版本:
cordova plugin add cordova-plugin-android-permissions@latest
2. 确保cordova-android版本支持Android 13
Android 13(API 33)需要cordova-android 11.0.0及以上版本支持,否则即使配置了权限也无法正常生效:
- 查看当前cordova-android版本:
cordova platform ls - 如果版本低于11.0.0,执行升级:
cordova platform update android@11.0.0
3. 代码中适配权限请求逻辑
升级插件后,即可正常调用POST_NOTIFICATIONS权限请求,同时建议加入Android版本判断,避免在低版本系统上执行无效请求:
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx'; constructor(private androidPermissions: AndroidPermissions) {} checkNotificationPermission() { const sdkVersion = parseInt(this.androidPermissions.VERSION.SDK, 10); if (sdkVersion >= 33) { this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.POST_NOTIFICATIONS) .then(result => { if (result.hasPermission) { console.log('通知权限已授予'); // 后续可正常发起通知 } else { console.log('用户拒绝通知权限'); } }) .catch(err => console.error('请求权限失败:', err)); } }
4. 确认config.xml配置
确保config.xml中已正确设置targetSDK版本:
<preference name="android-targetSdkVersion" value="33" />
内容的提问来源于stack exchange,提问作者Yeo Bryan
相关产品推荐
相关产品推荐

