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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:07:37