{"_id":"@cordova-ohos/cordova-plugin-local-notification","_rev":"3-6e43c11b1c294bce8c003ebeeafc010c","name":"@cordova-ohos/cordova-plugin-local-notification","dist-tags":{"latest":"1.2.4"},"versions":{"1.2.3":{"name":"@cordova-ohos/cordova-plugin-local-notification","version":"1.2.3","keywords":["cordova","local-notification","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-local-notification@1.2.3","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-local-notification/issues"},"dist":{"shasum":"bae7e70300cdaf98da0637c1f8074dc42aa77cab","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-local-notification/-/cordova-plugin-local-notification-1.2.3.tgz","fileCount":9,"integrity":"sha512-RTOV/Sq2o0jC1DZ8w2F18oDLeKP32oaqroluTf81M1Rj2bzHQf3R9WK+Uo8Y1421V/rGYBAjBUNliIX8qyMTdA==","signatures":[{"sig":"MEUCIQCedp7cHPu05aTjUT5p/HlcaGY1DDbfI7ZNfuVtWMrDlwIgELHBdO1FKMXUpkvqRMiq0lrIKwUh06/OfZAbcuGLulE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157099},"cordova":{"id":"cordova-plugin-local-notification","platforms":["ohos"]},"engines":{"cordovaDependencies":{"1.2.3":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"e15f0060013428e551ecbcf6b24b3757cdf08d23","_npmUser":{"name":"wanpengsz","email":"wanpengsz@163.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-local-notification","type":"git"},"_npmVersion":"9.6.2","description":"Cordova Local Notification Plugin","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-local-notification_1.2.3_1773997032988_0.04908313719988433","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@cordova-ohos/cordova-plugin-local-notification","version":"1.2.4","description":"Cordova Local Notification Plugin","cordova":{"id":"cordova-plugin-local-notification","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-local-notification"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification/issues"},"keywords":["cordova","local-notification","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"1.2.4":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-local-notification@1.2.4","gitHead":"ebc2167833496a093e51afdc763dfcbc195e062b","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-PB3xT96Z3nHMod72RL+0L4rcb9HZM+Bi1BhaqKyN2xs5fxFB/BnmPgoKF6g1uRmgnvdKJRlnUnAa0Q4c/SKr5Q==","shasum":"72f057dc70837c58a15f82b49668a43516cd35fb","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-local-notification/-/cordova-plugin-local-notification-1.2.4.tgz","fileCount":10,"unpackedSize":192195,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvQ0nzb6xgw+Omu0j2ZJ9lFtz7f/7+mAzTmVjjKLwo5wIgPck2HMnbd3octcJL4WkNjjcScLViZf7dpmQBCZJjvVM="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-local-notification_1.2.4_1785158636178_0.1776364751190429"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T08:57:12.833Z","modified":"2026-07-27T13:23:56.548Z","1.2.3":"2026-03-20T08:57:13.136Z","1.2.4":"2026-07-27T13:23:56.319Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","local-notification","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-local-notification"},"description":"Cordova Local Notification Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-local-notification</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-local-notification@1.2.3](https://www.npmjs.com/package/cordova-plugin-local-notification/v/1.2.3) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-local-notification](#cordova-plugin-local-notification)\r\n  - [简介](#简介)\r\n    - [核心特性](#核心特性)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n    - [权限配置](#权限配置)\r\n  - [使用示例](#使用示例)\r\n    - [一、通知权限管理示例](#一通知权限管理示例)\r\n    - [二、通知渠道管理示例](#二通知渠道管理示例)\r\n    - [三、通知按钮配置示例](#三通知按钮配置示例)\r\n    - [四、即时通知示例](#四即时通知示例)\r\n    - [五、进度条通知示例](#五进度条通知示例)\r\n    - [六、通知删除与清空示例](#六通知删除与清空示例)\r\n    - [七、通知查询示例](#七通知查询示例)\r\n    - [八、系统通知设置示例](#八系统通知设置示例)\r\n    - [九、定时/重复通知示例](#九定时重复通知示例)\r\n  - [使用说明](#使用说明)\r\n    - [一、基础准备操作说明](#一基础准备操作说明)\r\n    - [二、核心功能使用说明](#二核心功能使用说明)\r\n      - [1. 通知权限管理](#1-通知权限管理)\r\n      - [2. 通知渠道管理（适配多平台）](#2-通知渠道管理适配多平台)\r\n      - [3. 通知按钮配置](#3-通知按钮配置)\r\n      - [4. 即时通知（应用前台生效）](#4-即时通知应用前台生效)\r\n      - [5. 进度条通知（应用前台生效）](#5-进度条通知应用前台生效)\r\n      - [6. 通知删除与清空](#6-通知删除与清空)\r\n      - [7. 通知查询](#7-通知查询)\r\n      - [8. 系统通知设置](#8-系统通知设置)\r\n      - [9. 定时/重复通知（OHOS 日历替代方案）](#9-定时重复通知ohos-日历替代方案)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\n`cordova-plugin-local-notification` 是 Harmony Cordova 生态系统中一款核心本地通知插件，专为 Cordova/PhoneGap 应用设计，支持在 iOS、Android 和 OHOS 设备上创建、调度、更新和取消本地通知，无需依赖远程服务器，可实现定时提醒、任务通知等核心场景。该插件适配多平台特性，提供完整的通知生命周期管理，满足各类本地提醒场景需求。\r\n\r\n主要说明：在 OHOS 系统中，该插件包括两个主要功能，（1）即时提醒，即应用在前台，立即发出通知提醒，用户实时可见，应用退到后台，不能发送通知；（2）定时提醒，例如闹钟、倒计时等功能，此类提醒需要单独向 OHOS 申请代理提醒权限，该权限有管控限制，[点击查看链接](https://docs.openharmony.cn/pages/v5.1.0/zh-cn/application-dev/security/AccessToken/access-token-overview.md)，只有符合要求的应用才可以获取该权限，该插件不采用该方案；但为实现目标，使用日历的替代方案，无需申请任何权限，即可实现倒计时提醒、闹钟提醒等功能，但是提醒是有系统日历触发，并非应用本身触发，但是设置提醒是有应用调起日历接口进行配置。\r\n\r\nOHOS 内部通知封装了本地通知和日历服务通知，所有即时通知和进度通知使用本地通知，即 Notification Kit 服务，对于触发通知、重复提醒、闹钟提醒和倒计时提醒使用日历服务，即 Calendar Kit，鉴于后台代理提醒，OHOS 要求专有应用才能使用，因此本插件暂不支持 Background Tasks Kit 服务，如果您一定要使用后台代理提醒服务，请使用 push 插件代替。\r\n\r\n参考文档：\r\n\r\n- [本地通知参考文档](https://docs.openharmony.cn/pages/v5.1.0/zh-cn/application-dev/notification/notification-overview.md)\r\n\r\n- [日历服务参考文档](https://docs.openharmony.cn/pages/v5.1.0/zh-cn/application-dev/calendarmanager/calendarmanager-overview.md)\r\n\r\n### 核心特性\r\n\r\n- 支持即时通知和定时延迟通知（精确到秒）\r\n\r\n- 可自定义通知标题、内容、图标、声音、振动等样式\r\n\r\n- 支持重复通知（每日、每周、每月等周期）\r\n\r\n- 提供通知的创建、更新、取消、清空等完整生命周期管理\r\n\r\n- 支持监听通知的点击、触发、清除等事件\r\n\r\n- 支持应用在前台、后台及关闭状态下的通知触发\r\n\r\n- OHOS 平台支持日历替代方案实现定时提醒，无需申请额外权限\r\n\r\n- 支持进度条通知，适配文件下载等场景需求\r\n\r\n## 支持平台\r\n\r\n- **Android**：API 19 及以上（Android 4.4+）\r\n\r\n- **iOS**：10.0 及以上\r\n\r\n- **OHOS**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库、GitCode 仓库获取，可指定版本及平台安装。\r\n\r\n### 从 npm 安装（推荐）\r\n\r\n```bash\r\n# 使用 hcordova CLI 安装\r\n\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装插件\r\nhcordova plugin add cordova-plugin-local-notification\r\n\r\n# 指定 OHOS 平台安装\r\nhcordova plugin add cordova-plugin-local-notification --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n获取最新稳定版，仅为 OHOS 平台安装：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification.git@develop --platform ohos\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：../Downloads/cordova-plugin-local-notification）\r\n# 执行离线安装\r\nhcordova plugin add ../Downloads/cordova-plugin-local-notification  --platform ohos\r\n```\r\n\r\n\r\n###  安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n```bash\r\n# Cordova CLI 全平台卸载\r\nhcordova plugin remove cordova-plugin-local-notification \r\n\r\n# 指定平台卸载\r\nhcordova plugin remove cordova-plugin-local-notification --platform ohos\r\n```\r\n\r\n## 约束与限制\r\n\r\n- OHOS 平台：即时提醒仅在应用前台生效，后台无法发送；定时提醒采用日历替代方案，由系统日历触发，非应用本身触发。\r\n\r\n- OHOS 平台暂不支持 Background Tasks Kit 服务，如需后台代理提醒，需使用 push 插件替代。\r\n\r\n- 进度条通知仅支持应用前台使用，转入后台后无法正常显示和更新。\r\n\r\n- 清除所有通知仅能清除本应用发起的本地通知，无法清除系统日历触发的通知及三方应用的通知。\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n### 权限配置\r\n\r\n在主工程 module.json5 中添加日历权限，如下：\r\n\r\n```json\r\n{\r\n  \"name\": \"ohos.permission.READ_CALENDAR\",\r\n  \"reason\": \"$string:calenderInfo\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n},\r\n{\r\n  \"name\": \"ohos.permission.WRITE_CALENDAR\",\r\n  \"reason\": \"$string:calenderInfo\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n}\r\n```\r\n## 使用示例\r\n\r\n以下为各核心功能的可直接复用代码示例，对应「使用说明」中的各功能模块，复制后可根据实际需求修改参数（如通知 ID、标题、时间等），快速集成到项目中。\r\n\r\n### 一、通知权限管理示例\r\n\r\n```javascript\r\n// 1. 授权本地通知\r\ncordova.plugins.notification.local.requestPermission(function() {\r\n    document.getElementById(\"notificationPermission\").innerHTML = \"授权成功\";\r\n});\r\n\r\n// 2. 检测是否有权限\r\ncordova.plugins.notification.local.hasPermission(function() {\r\n    document.getElementById(\"hasNotificationPermission\").innerHTML = \"有授权\";\r\n});\r\n```\r\n\r\n### 二、通知渠道管理示例\r\n\r\n```javascript\r\n// 1. 创建通知渠道\r\ncordova.plugins.notification.local.createChannel({\r\n    androidChannelId: \"my_channel_01\", // 渠道 ID，自定义\r\n    androidChannelName: \"My Channel Name\", // 渠道名称，自定义\r\n    androidChannelDescription: \"Description of channel\", // 渠道描述，自定义\r\n    androidChannelImportance: \"IMPORTANCE_DEFAULT\", // Android 渠道，对应 OHOS 渠道\r\n    androidChannelEnableLights: true, // 通知灯光，OHOS 渠道不支持自定义，不影响使用\r\n    androidChannelEnableVibration: true, // 是否震动，由 OHOS 渠道决定\r\n    sound: 'www/audio/ring.mp3', // 播放声音，由 OHOS 渠道决定\r\n    androidChannelSoundUsage: 5 // 声音参数，由 OHOS 渠道决定\r\n}, function(){\r\n    document.getElementById(\"channelInfo\").innerHTML = \"创建成功\";\r\n}, this);\r\n\r\n// 2. 删除通知渠道（根据渠道 ID 删除）\r\nfunction deleteChannel() {\r\n    cordova.plugins.notification.local.deleteChannel(\"my_channel_01\", function() {\r\n        document.getElementById(\"deleteInfo\").innerHTML = \"删除成功\";\r\n    }, this);\r\n}\r\n```\r\n\r\n### 三、通知按钮配置示例\r\n\r\n```javascript\r\n// 注册通知按钮\r\nfunction addActions() {\r\n    cordova.plugins.notification.local.addActions('REPLY_NO_CATEGORY', [\r\n        {\r\n            title: 'Reply',\r\n            wantAgentInfo:{\r\n                wants: [\r\n                    {\r\n                        bundleName: 'com.example.myapp',\r\n                        abilityName: 'EntryAbility',\r\n                    }\r\n                ],\r\n                actionType: 1,\r\n                requestCode: 0,\r\n                actionFlags:[4]\r\n            }\r\n        }\r\n    ]);\r\n}\r\n```\r\n\r\n### 四、即时通知示例\r\n\r\n```javascript\r\n// 立即发送通知\r\nfunction sendLocalNotificationAtOnce() {\r\n    // 监听通知添加事件\r\n    cordova.plugins.notification.local.on(\"add\", (notification, eopts) => {\r\n        document.getElementById(\"atOnceInfo\").innerHTML = \"发送成功\";\r\n    });\r\n\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 6,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM\\n请注意开会时间。',\r\n        wantAgentInfo:{\r\n            wants: [\r\n                {\r\n                    bundleName: 'com.example.myapp',\r\n                    abilityName: 'EntryAbility',\r\n                }\r\n            ],\r\n            actionType: 1,\r\n            requestCode: 0,\r\n            actionFlags:[4]\r\n        },\r\n        androidMessages: [\r\n            { person: 'Me', message: 'I miss you' },\r\n            { person: 'Irish', message: 'I miss you more!' },\r\n            { person: 'Me', message: 'I always miss you more by 10%' }\r\n        ],\r\n        actions: 'REPLY_NO_CATEGORY' // 引用提前注册的通知按钮\r\n    },function(notification){\r\n        console.log(notification);\r\n        document.getElementById(\"atOnceInfo\").innerHTML = \"发送成功\";\r\n    });\r\n}\r\n```\r\n\r\n### 五、进度条通知示例\r\n\r\n```javascript\r\n// 1. 发送进度条通知\r\nfunction sendLocalNotificationProgress() {\r\n    cordova.plugins.notification.local.on(\"add\", (notification, eopts) => {\r\n        document.getElementById(\"barInfo\").innerHTML = \"发送成功\";\r\n    });\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 6,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        androidProgressBar: {\r\n            name:\"下载标题\",\r\n            data:{\r\n                title:\"下载中\",\r\n                fileName:\"文件名\",\r\n                progressValue:45 // 初始进度（0-100）\r\n            }\r\n        }\r\n    },function(notification){\r\n        console.log(notification);\r\n        document.getElementById(\"barInfo\").innerHTML = \"发送成功\";\r\n    });\r\n}\r\n\r\n// 2. 更新进度条通知\r\nfunction sendLocalNotificationUpdateProgress() {\r\n    cordova.plugins.notification.local.on(\"update\", (notification, eopts) => {\r\n        document.getElementById(\"barUpdateInfo\").innerHTML = \"更新成功\";\r\n    });\r\n    cordova.plugins.notification.local.update({\r\n        id: 6, // 需与发送时的通知 ID 一致\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        autoDeletedTime: new Date().getTime()+2000, // 进度 100% 后延迟 2 秒自动删除\r\n        androidProgressBar: {\r\n            name:\"下载标题\",\r\n            data:{\r\n                title:\"下载中\",\r\n                fileName:\"文件名\",\r\n                progressValue:100 // 更新为 100% 进度\r\n            }\r\n        }\r\n    },function(notification){\r\n        console.log(notification);\r\n        document.getElementById(\"barUpdateInfo\").innerHTML = \"更新成功\";\r\n    });\r\n}\r\n```\r\n\r\n### 六、通知删除与清空示例\r\n\r\n```javascript\r\n// 1. 根据 ID 批量删除通知（示例：删除 ID 为 6 的通知）\r\nfunction deleteLocalNotification() {\r\n    cordova.plugins.notification.local.cancel([6]\r\n        ,function(notification){\r\n            document.getElementById(\"deleteSingleInfo\").innerHTML = \"清除成功\";\r\n        });\r\n}\r\n\r\n// 2. 清空本应用所有本地通知\r\nfunction deleteAllLocalNotification() {\r\n    cordova.plugins.notification.local.cancelAll(function(notification){\r\n        document.getElementById(\"deleteAllInfo\").innerHTML = \"清除成功\";\r\n    });\r\n}\r\n```\r\n\r\n### 七、通知查询示例\r\n\r\n```javascript\r\n// 1. 查询指定 ID 的通知类型\r\nfunction getNotificationType() {\r\n    cordova.plugins.notification.local.getType(6\r\n    ,function(info){\r\n        document.getElementById(\"typeInfo\").innerHTML = info;\r\n    });\r\n}\r\n\r\n// 2. 查询所有通知的 ID（返回数组）\r\ncordova.plugins.notification.local.getIds(function(ids){\r\n    document.getElementById(\"idsInfo\").innerHTML = ids;\r\n});\r\n\r\n// 3. 根据 ID 数组获取通知对象（返回 JSON）\r\nfunction getNotificationJson() {\r\n    cordova.plugins.notification.local.get([6,7]\r\n        ,function(info){\r\n            document.getElementById(\"jsonInfo\").innerHTML = JSON.stringify(info);\r\n        });\r\n}\r\n```\r\n\r\n### 八、系统通知设置示例\r\n\r\n```javascript\r\nfunction openNotificationWindow() {\r\n    cordova.plugins.notification.local.openNotificationSettings(function(){\r\n        document.getElementById(\"windowInfo\").innerHTML = \"打开成功\";\r\n    });\r\n}\r\n```\r\n\r\n### 九、定时/重复通知示例\r\n\r\n```javascript\r\n// 1. 定时通知（100 秒后触发）\r\nfunction sendLocalNotificationAtAfter() {\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 6,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        trigger: { at: new Date().getTime()+100000 }\r\n    },function(info) {\r\n        document.getElementById(\"atInfo\").innerHTML = info;\r\n    });\r\n}\r\n\r\n// 2. 延迟通知（1 小时后触发）\r\nfunction sendLocalNotificationAfterHour() {\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 6,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        trigger: { in: 1, unit: 'hour' }\r\n    },function(info) {\r\n        document.getElementById(\"inInfo\").innerHTML = info;\r\n    });\r\n}\r\n\r\n// 3. 重复通知（每年 10 月 27 日 9 点触发）\r\nfunction sendLocalNotificationRepeat() {\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 7,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        trigger: { every: { month: 10, day: 27, hour: 9, minute: 0 } }\r\n    },function(info) {\r\n        document.getElementById(\"everyInfo\").innerHTML = info;\r\n    });\r\n}\r\n\r\n// 4. 重复通知（每月 1 日触发）\r\nfunction sendLocalNotificationRepeatMonth() {\r\n    cordova.plugins.notification.local.schedule({\r\n        id: 9,\r\n        title: 'Design team meeting',\r\n        text: '3:00 - 4:00 PM',\r\n        trigger: { every: 'month', count:1 }\r\n    },function(info) {\r\n        document.getElementById(\"everyMonthInfo\").innerHTML = info;\r\n    });\r\n}\r\n```\r\n\r\n## 使用说明\r\n\r\n插件挂载在 `cordova.plugins.notification.local` 对象上，所有 API 均为异步操作。使用前需完成插件安装和权限配置（OHOS 平台需添加日历权限），以下为各核心功能的详细使用说明，明确参数含义、使用场景及注意事项。\r\n\r\n### 一、基础准备操作说明\r\n\r\n1. 安装插件：通过 hcordova CLI 命令安装插件，可根据需求指定平台（参考「下载安装」章节）；\r\n\r\n2. 配置权限：OHOS 平台需在主工程 module.json5 中添加日历权限，确保定时提醒功能正常使用（参考「权限配置」章节）；\r\n\r\n3. 验证插件：安装完成后，通过 `hcordova plugin list` 命令确认插件已成功安装。\r\n\r\n### 二、核心功能使用说明\r\n\r\n#### 1. 通知权限管理\r\n\r\n使用通知功能前，需先获取用户授权，可通过对应 API 实现授权请求和权限检测，未授权情况下无法正常发送通知。\r\n\r\n#### 2. 通知渠道管理（适配多平台）\r\n\r\nOHOS 系统支持多种通知渠道，不同渠道对应不同提醒方式，需先创建渠道再发送通知，渠道创建后可根据需求删除，Android 与 OHOS 渠道存在对应关系，需按对应关系配置。\r\n\r\nAndroid 与 OHOS 通知渠道对应关系：\r\n\r\n| Android 渠道 | OHOS 渠道 |\r\n|---|---|\r\n| IMPORTANCE_NONE | UNKNOWN_TYPE |\r\n| IMPORTANCE_MIN | SOCIAL_COMMUNICATION |\r\n| IMPORTANCE_LOW | SERVICE_INFORMATION |\r\n| IMPORTANCE_DEFAULT | SERVICE_INFORMATION |\r\n| IMPORTANCE_HIGH | SERVICE_INFORMATION |\r\n| IMPORTANCE_MAX | CUSTOMER_SERVICE |\r\n[通知渠道详细参考文档](https://docs.openharmony.cn/pages/v5.1.0/zh-cn/application-dev/notification/notification-slot.md)\r\n\r\n#### 3. 通知按钮配置\r\n\r\n通知按钮需提前注册，注册后可在发送通知时引用，点击按钮可触发指定操作（如打开应用页面），按钮核心参数需按要求配置。\r\n\r\n- **title：** 按钮标题\r\n\r\n- **wantAgentInfo：** 点击按钮打开的目标对象，[详细配置说明](https://docs.openharmony.cn/pages/v5.1.0/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-ability-want.md)\r\n\r\n#### 4. 即时通知（应用前台生效）\r\n\r\n即时发送通知，适用于应用内提醒、消息推送等场景，可自定义标题、内容、操作按钮等，核心参数需明确配置，部分参数存在 OHOS 专属特性。\r\n\r\n核心参数说明：\r\n\r\n| 属性 | 默认值 | 说明 |\r\n|---|---|---|\r\n| actions | [] | 通知的操作项，引用提前注册的按钮 |\r\n| badgeNumber | 0 | 设置应用的角标数量 |\r\n| id | 1 | 通知 ID（数字类型），必传，用于后续更新、删除 |\r\n| title | \"\" | 通知标题，必传 |\r\n| text | \"\" | 通知文本（OHOS 特性：含 \\n 换行或超过 44 字符将自动适配对应通知样式） |\r\n| wantAgentInfo | 对象 | 点击通知后打开的页面配置 |\r\n| androidMessages | [] | 多行通知，最多支持 3 行 |\r\n#### 5. 进度条通知（应用前台生效）\r\n\r\n适用于文件下载、任务进度展示等场景，进度条达到 100% 时会自动消失，支持进度更新，需注意该功能仅在应用前台生效。\r\n\r\n#### 6. 通知删除与清空\r\n\r\n支持根据通知 ID 删除单个/多个通知，或清空本应用发起的所有本地通知，需注意无法清除系统日历触发的通知及三方应用的通知。\r\n\r\n#### 7. 通知查询\r\n\r\n支持查询通知类型、所有通知 ID、指定 ID 的通知对象，方便进行通知管理，明确各通知类型的含义可快速区分通知场景。\r\n\r\n通知类型说明：\r\n\r\n- trigger：实时通知\r\n\r\n- scheduled：倒计时通知（仅触发一次）\r\n\r\n- every：定期重复通知\r\n\r\n#### 8. 系统通知设置\r\n\r\n可直接调起系统通知设置窗口，方便用户配置通知权限、提醒方式等，简化用户操作流程。\r\n\r\n#### 9. 定时/重复通知（OHOS 日历替代方案）\r\n\r\n适用于闹钟、倒计时、定期提醒等场景，通过调起系统日历实现，无需申请额外权限，支持自定义触发时间和重复周期，用户可手动修改通知时间。\r\n\r\n核心参数说明：\r\n\r\n- **at：** 指定具体时间触发（毫秒级时间戳）\r\n\r\n- **in：** 延迟指定时间触发（配合 unit 参数使用）\r\n\r\n- **every：** 重复触发（支持按秒、分、时、日、月、年等周期）\r\n\r\nin 参数详细说明：\r\n\r\n| Property | Type | value |\r\n|---|---|---|\r\n| in | Int | 延迟时长 |\r\n| unit | String | second, minute, hour, day, week, month, quarter, year |\r\n说明：调起日历设置时，用户可手动修改通知时间，灵活适配需求。\r\n\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-local-notification/\r\n├── src/                          # 源代码目录\r\n│   └── main/                     # 主要源代码\r\n│       ├── cpp/                  # C++ 原生代码\r\n│       │   └── Notification/     # 通知模块\r\n│       │       ├── LocalNotification.cpp  # 本地通知功能的 C++ 实现\r\n│       │       └── LocalNotification.h    # 本地通知功能的头文件\r\n│       └── ets/                  # ArkTS 代码（OpenHarmony API）\r\n│           └── components/       # 组件目录\r\n│               └── Notification/ # 通知组件\r\n│                   └── LocalNotification.ets  # 本地通知的 ArkTS 实现\r\n├── www/                          # Web 资源目录\r\n│   └── local-notification.js     # JavaScript 本地通知接口（Cordova 桥接层）\r\n├── .gitignore                    # Git 忽略文件配置\r\n├── LICENSE                       # 项目开源许可证\r\n├── OAT.xml                       # OpenHarmony 审核配置文件\r\n├── package.json                  # Node.js 包配置\r\n├── plugin.xml                    # Cordova 插件描述文件（核心配置）\r\n└── README.md                     # 项目说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\nOHOS Cordova：[https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification](https://gitcode.com/CPF-Cordova/cordova-plugin-local-notification)\r\n\r\nAndroid/iOS：[https://npmjs.com/cordova-plugin-local-notification/issues](https://npmjs.com/cordova-plugin-local-notification/issues)\r\n","readmeFilename":"README.md"}