Cordova Android App适配API 33时通知权限弹窗问题求助
适配API 33的Cordova通知权限申请方案
以下是两种可行的方案,均能实现应用内弹窗申请通知权限,无需跳转系统设置:
使用cordova-plugin-android-permissions插件
该插件已适配API 33的通知权限请求逻辑,可直接调用方法触发系统原生权限弹窗。- 安装插件(若未安装):
cordova plugin add cordova-plugin-android-permissions - 添加权限声明到
AndroidManifest.xml:<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> - 调用权限请求代码:
const permissions = cordova.plugins.permissions; permissions.requestPermission(permissions.POST_NOTIFICATIONS, (status) => { if (status.hasPermission) { // 通知权限已成功授予 } else { // 权限被拒绝,可根据情况引导用户重新申请 } }, (error) => { console.error('权限请求失败:', error); });
- 安装插件(若未安装):
更新cordova-diagnostic-plugin至最新版本
原插件的最新版本已针对API 33做了适配,修复了通知权限申请的问题:- 更新插件:
cordova plugin update cordova-diagnostic-plugin - 调用更新后的通知权限请求方法:
cordova.plugins.diagnostic.requestNotificationsPermission((status) => { switch(status) { case cordova.plugins.diagnostic.permissionStatus.GRANTED: // 权限授予成功 break; case cordova.plugins.diagnostic.permissionStatus.DENIED: // 权限临时拒绝 break; case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS: // 权限永久拒绝,此时才需要引导用户前往系统设置 break; } }, (error) => { console.error('通知权限请求出错:', error); });
- 更新插件:
注意:API 33及以上版本中,通知权限属于需主动申请的权限,上述方案均通过调用系统原生接口触发权限弹窗,符合Google Play的合规要求。
内容的提问来源于stack exchange,提问作者Hasnain Rashid
相关产品推荐
相关产品推荐

