Cordova 12安卓本地通知无法触发问题求助
Cordova 12升级后Android 12本地通知不显示的解决方案
针对你遇到的Cordova 12升级后,Android 12设备本地通知不显示但Android 9正常的问题,以下是几个排查和解决方向:
- 必须申请POST_NOTIFICATIONS权限
Android 12(API 31)及以上版本要求显式申请通知权限,旧插件逻辑可能默认不处理这个。先在代码中添加权限检查和请求:
cordova.plugins.notification.local.hasPermission(function(granted) { if (!granted) { cordova.plugins.notification.local.requestPermission(function(granted) { console.log('通知权限状态:', granted); }); } });
同时在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
- 确保通知渠道配置正确
Android 8.0+必须使用通知渠道,Android 12对渠道的有效性要求更严格。创建通知前先初始化渠道,且触发通知时指定对应渠道ID:
// 初始化通知渠道 cordova.plugins.notification.local.createChannel({ id: 'app_default', name: '应用默认通知', description: '接收应用所有通知', importance: 4 // 高优先级,确保能弹出 }, function() { // 触发通知时绑定渠道 cordova.plugins.notification.local.schedule({ id: 1, title: '测试通知', text: '通知内容', channelId: 'app_default' }); });
- 验证插件兼容性与安装状态
尝试重新安装适配Cordova 12的插件版本,避免缓存或安装不完整的问题:
# 卸载现有插件 cordova plugin remove cordova-plugin-local-notification-12 # 重新安装最新兼容版本(以moodlehq分支为例) cordova plugin add @moodlehq/cordova-plugin-local-notification@latest
- 检查触发代码的参数完整性
Android 12可能拒绝缺少核心字段的通知,确保触发通知时title、text、channelId等关键参数不为空:
// 正确的触发示例 cordova.plugins.notification.local.schedule({ id: 2, title: '定时提醒', text: '5秒后触发', at: new Date(Date.now() + 5000), channelId: 'app_default' });
- 检查设备端通知设置
确认测试的Android 12设备中,你的应用通知权限已开启,且对应的通知渠道未被禁用(可通过系统设置-应用-你的应用-通知查看)。
内容的提问来源于stack exchange,提问作者Jorge Lizaso
相关产品推荐
相关产品推荐

