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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:05:07