{"_id":"@cordova-ohos/jpush-phonegap-plugin","_rev":"3-4c60d0e9f762749b671f05f77474f886","name":"@cordova-ohos/jpush-phonegap-plugin","dist-tags":{"latest":"5.9.1"},"versions":{"5.9.0":{"name":"@cordova-ohos/jpush-phonegap-plugin","version":"5.9.0","keywords":["cordova","insomnia","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/jpush-phonegap-plugin@5.9.0","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/jpush-phonegap-plugin/issues"},"dist":{"shasum":"cfbebdf77b4d9f311c0002b72b11d674b64a1532","tarball":"https://registry.npmjs.org/@cordova-ohos/jpush-phonegap-plugin/-/jpush-phonegap-plugin-5.9.0.tgz","fileCount":9,"integrity":"sha512-/9EqSsvn/wmWWGls+k0SrPAz82yQr67D3yDoFJMixcdFJ6swENenZiq+G2lt1mSCYlIQIm3FcBYtf9u6IksY7A==","signatures":[{"sig":"MEQCIEWd87J22TJoSPVvUAdP4So5FsthoU8ldIa+587mCiGfAiBbPo8VPRT0tpRCrKEXqlMosSEKXzQKtd3BYkT1YY+mvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78619},"cordova":{"id":"jpush-phonegap-plugin","platforms":["ohos"]},"engines":{"cordovaDependencies":{"5.9.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"5878db2acddecbe36b859cb629dbec7f95fe5500","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/jpush-phonegap-plugin","type":"git"},"_npmVersion":"10.5.1","description":"Cordova JPush Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jpush-phonegap-plugin_5.9.0_1774229121472_0.3499544559686889","host":"s3://npm-registry-packages-npm-production"}},"5.9.1":{"name":"@cordova-ohos/jpush-phonegap-plugin","version":"5.9.1","description":"Cordova JPush Plugin","cordova":{"id":"jpush-phonegap-plugin","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/jpush-phonegap-plugin"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin/issues"},"keywords":["cordova","insomnia","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"5.9.1":{"@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/jpush-phonegap-plugin@5.9.1","gitHead":"67abfcc30ca579e72ee79532b9f9c04fc0d36825","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-9xmpahyLqNWeWjzhEOYMWy6+yrDXsqwGXS9XR39/EfiCld31C40/KdcE1QBrBv+7/feusmtLoomgDTO/8DNcHA==","shasum":"878e6f281dbb7e92032726f04c17403787ace782","tarball":"https://registry.npmjs.org/@cordova-ohos/jpush-phonegap-plugin/-/jpush-phonegap-plugin-5.9.1.tgz","fileCount":10,"unpackedSize":104748,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCsXr4uSh5K//VMEYGzIGbBVznP+leJVvuPQ5yzXRrULwIgSsGEg+ZjuQRhPzurTyKn/sEXR02pnfrdX6HQibRT6q8="}]},"_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/jpush-phonegap-plugin_5.9.1_1785150138684_0.9952319516679446"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T01:25:21.356Z","modified":"2026-07-27T11:02:19.032Z","5.9.0":"2026-03-23T01:25:21.625Z","5.9.1":"2026-07-27T11:02:18.823Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","insomnia","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/jpush-phonegap-plugin"},"description":"Cordova JPush 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>jpush-phonegap-plugin</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本项目基于 [jpush-phonegap-plugin@5.9.0](https://npmjs.com/package/jpush-phonegap-plugin/v/5.9.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [jpush-phonegap-plugin](#jpush-phonegap-plugin)\r\n  - [简介](#简介)\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    - [OHOS 配置](#ohos-配置)\r\n      - [1 修改项目中的 oh-package.json5 文件](#1-修改项目中的-oh-packagejson5-文件)\r\n      - [2 配置工程级 build-profile.json5](#2-配置工程级-build-profilejson5)\r\n      - [3 修改 EntryAbility 代码](#3-修改-entryability-代码)\r\n    - [API 文档](#api-文档)\r\n      - [1 初始化与基础配置](#1-初始化与基础配置)\r\n        - [1.1 初始化推送服务](#11-初始化推送服务)\r\n        - [1.2 开启/关闭调试模式](#12-开启关闭调试模式)\r\n        - [1.3 获取注册 ID](#13-获取注册-id)\r\n      - [2 推送目标管理](#2-推送目标管理)\r\n        - [2.1 设置别名（单点推送）](#21-设置别名单点推送)\r\n        - [2.2 设置标签（批量推送）](#22-设置标签批量推送)\r\n      - [3 消息监听](#3-消息监听)\r\n        - [3.1 监听注册 ID](#31-监听注册-id)\r\n        - [3.2 监听通知消息接收](#32-监听通知消息接收)\r\n        - [3.3 监听通知消息点击](#33-监听通知消息点击)\r\n      - [4 推送服务控制](#4-推送服务控制)\r\n        - [4.1 停止推送服务](#41-停止推送服务)\r\n        - [4.2 恢复推送服务](#42-恢复推送服务)\r\n        - [4.3 检查推送服务状态](#43-检查推送服务状态)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\njpush-phonegap-plugin 是极光推送（JPush）官方提供的 Cordova 插件，为跨平台（Android/iOS/OHOS）移动应用提供稳定、高效的推送通知能力。支持自定义消息、通知栏样式定制、推送状态监听等核心功能，助力开发者快速实现全场景消息触达。\r\n\r\n### 插件概述\r\n\r\n作为极光推送生态的核心插件，jpush-phonegap-plugin 基于极光推送的 har 包的基础能力，提供以下核心功能：\r\n\r\n- 消息类型全覆盖：支持通知消息、自定义消息（纯数据透传）\r\n\r\n- 精准触达：支持别名、标签、注册 ID 等多维度目标定位\r\n\r\n- 状态可视化：提供推送注册、消息接收、点击等全链路事件监听\r\n\r\n- 调试友好：内置调试模式，实时反馈服务注册及消息处理状态\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使用插件前需完成极光推送开发者平台配置，步骤如下：\r\n\r\n1. **注册账号**：访问 [极光推送官网](https://www.jiguang.cn/push) 注册开发者账号\r\n\r\n2. **创建应用**：在控制台创建应用，获取唯一标识 `APP_KEY`\r\n\r\n3. **平台配置**：OHOS 的配置参考 [极光推送官网](https://www.jiguang.cn/push) 配置相关参数，这里不做详细说明。\r\n\r\n## 下载安装\r\n\r\n### 从 npm 安装（推荐）\r\n\r\nOHOS 平台安装无需指定 `APP_KEY` 参数，APP_KEY 在 PluginRegisterHandle 传入，请参考 OHOS 配置说明\r\n\r\n```bash\r\n# 安装 hcordova\r\nnpm install -g hcordova\r\n\r\n# 直接安装最新版本\r\nhcordova plugin add jpush-phonegap-plugin\r\n\r\n# 指定 OHOS 平台\r\nhcordova plugin add jpush-phonegap-plugin --platform ohos\r\n\r\n# 指定版本安装（OHOS 平台）\r\nhcordova plugin add jpush-phonegap-plugin@5.9.0 --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n如需使用开发中的最新功能，可从 GitHub 仓库安装：\r\n\r\n```bash\r\n# 仅支持 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin.git  --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin.git@develop  --platform ohos\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/jpush-phonegap-plugin）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/jpush-phonegap-plugin --platform ohos\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卸载时需先移除当前插件，再移除依赖的核心库：\r\n\r\n```bash\r\n# 卸载主插件\r\nhcordova plugin remove jpush-phonegap-plugin\r\n\r\n# 指定平台卸载\r\nhcordova plugin remove jpush-phonegap-plugin --platform ohos\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以下示例展示完整封装了成函数，实现 API 的各种功能：\r\n\r\n```javascript\r\nvar message = \"\";\r\nfunction jPushInit() {\r\n    window.JPush.init();\r\n    document.addEventListener(\"jpush.receiveRegistrationId\", function(event) {\r\n        // 注册 ID 并不是每次都回调，需要注册 ID 在 init 完后，调用 jPushGetRegistrationID 获取 ID\r\n        console.log(\"Received registration ID:\" + JSON.stringify(event));\r\n    });\r\n\r\n    document.addEventListener(\"jpush.receiveMessage\", function(event) {\r\n        console.log(\"Received push message:\" + JSON.stringify(event));\r\n    });\r\n\r\n    document.addEventListener(\"jpush.receiveInAppMessageClick\", function(event) {\r\n        console.log(\"Clicked push message:\" + JSON.stringify(event));\r\n    });\r\n}\r\n\r\nfunction jPushGetRegistrationID() {\r\n    window.JPush.getRegistrationID(function(rid) {\r\n        document.getElementById(\"jPushRid2\").innerHTML = rid;\r\n    });\r\n\r\n}\r\n\r\nfunction jPushStop() {\r\n    window.JPush.stopPush(function(rid) {\r\n        document.getElementById(\"jPushStop\").innerHTML = rid;\r\n    });\r\n}\r\n\r\nfunction jPushResume() {\r\n    window.JPush.resumePush(function(rid) {\r\n        document.getElementById(\"jPushResume\").innerHTML = rid;\r\n    });\r\n}\r\n\r\nfunction jPushIsPushStopped() {\r\n    window.JPush.isPushStopped(function(result) {\r\n        document.getElementById(\"jPushIsPushStopped\").innerHTML = result;\r\n    });\r\n}\r\n\r\nfunction jPushAddTags() {\r\n    window.JPush.addTags( { 'sequence': 5, 'tags': ['tag1', 'tag2'] }, function(result) {\r\n        document.getElementById(\"jPushAddTags\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushDelTags() {\r\n    window.JPush.deleteTags( { 'sequence': 6, 'tags': ['tag1', 'tag2'] }, function(result) {\r\n        document.getElementById(\"jPushDelTags\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushSetTags() {\r\n    window.JPush.setTags( { 'sequence': 7, 'tags': ['tag1', 'tag2'] }, function(result) {\r\n        document.getElementById(\"jPushSetTags\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushCheckTagBindState() {\r\n    window.JPush.checkTagBindState( { 'sequence': 8, 'tag':'tag1' }, function(result) {\r\n        document.getElementById(\"checkTagBindState\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushGetAllTags() {\r\n    window.JPush.getAllTags( { 'sequence': 9}, function(result) {\r\n        document.getElementById(\"getAllTags\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushCleanTags() {\r\n    window.JPush.cleanTags( { 'sequence': 10}, function(result) {\r\n        document.getElementById(\"cleanTags\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushSetAlias() {\r\n    window.JPush.setAlias( { 'sequence': 11, 'alias':'alias1' }, function(result) {\r\n        document.getElementById(\"setAlias\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushGetAlias() {\r\n    window.JPush.getAlias( { 'sequence': 12}, function(result) {\r\n        document.getElementById(\"getAlias\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushDeleteAlias() {\r\n    window.JPush.deleteAlias( { 'sequence': 13}, function(result) {\r\n        document.getElementById(\"deleteAlias\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushSetMobileNumber() {\r\n    window.JPush.setMobileNumber( { 'sequence': 14, 'mobileNumber':'13800138000' }, function(result) {\r\n        document.getElementById(\"setMobileNumber\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n\r\n    });\r\n}\r\n\r\nfunction jPushSetBadgeNumber() {\r\n    window.JPush.setBadgeNumber(5);\r\n}\r\n\r\nvar msgId = \"fdfdfdf\";\r\nfunction jPushClearNotificationById() {\r\n    window.JPush.clearNotificationById(msgId);\r\n}\r\n\r\nfunction jPushClearAllNotification() {\r\n    window.JPush.clearAllNotification();\r\n}\r\n```\r\n\r\n## 使用说明\r\n\r\n### OHOS 配置\r\n\r\n#### 1 修改项目中的 oh-package.json5 文件\r\n\r\n在 dependencies 中加入极光推送 jg/push 的依赖项：\r\n\r\n```json\r\n{\r\n  \"name\": \"entry\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"Please describe the basic information.\",\r\n  \"main\": \"\",\r\n  \"author\": \"\",\r\n  \"license\": \"\",\r\n  \"dependencies\": {\r\n    \"@jg/push\": \"^1.3.1\",\r\n    \"@cordova-ohos/ohos\": \"file:../cordova\"\r\n  }\r\n}\r\n```\r\n\r\n#### 2 配置工程级 build-profile.json5\r\n\r\n在工程级（最外层）build-profile.json5 中，配置 \"useNormalizedOHMUrl\": true：\r\n\r\n```json\r\n\"products\": [\r\n    {\r\n    \"name\": \"default\",\r\n    \"signingConfig\": \"default\",\r\n    \"compatibleSdkVersion\": \"5.0.0(12)\",\r\n    \"buildOption\": {\r\n        \"strictMode\": {\r\n        \"caseSensitiveCheck\": true,\r\n        \"useNormalizedOHMUrl\": true\r\n        }\r\n    }\r\n    }\r\n]\r\n```\r\n\r\n#### 3 修改 EntryAbility 代码\r\n\r\n添加极光推送插件在 ArkTS 侧监听和初始化：\r\n\r\n```javascript\r\nexport default class EntryAbility extends UIAbility {\r\n   onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {\r\n      // 添加如下代码，注册 Jpush 监听插件\r\n      // JPush/JPushAction，动态导入 JPush 插件\r\n      // EntryAbility JPush 插件的入口函数\r\n      // YOUR_APP_KEY 为 app 的 APP_KEY，在 Jpush 的开放平台获取\r\n      PluginRegisterHandle(this, want, \"JPush/JPushAction\", \"EntryAbility\", \"YOUR_APP_KEY\");\r\n      \r\n   }\r\n\r\n   onNewWant(want: Want): void {\r\n      // 添加如下代码，注册 Jpush 监听插件\r\n      // JPush/JPushAction，动态导入 JPush 插件\r\n      // EntryAbility JPush 插件的入口函数\r\n      // YOUR_APP_KEY 为 app 的 APP_KEY，在 Jpush 的开放平台获取\r\n      PluginRegisterHandle(this, want, \"JPush/JPushAction\", \"EntryAbility\", \"YOUR_APP_KEY\");\r\n   }\r\n}\r\n```\r\n\r\n### API 文档\r\n\r\n插件通过全局对象 `window.JPush` 暴露 API，所有异步操作通过回调函数返回结果。API 调用需在 `deviceready` 事件触发后执行。具体使用示例见「使用示例」章节。\r\n\r\n#### 1 初始化与基础配置\r\n\r\n##### 1.1 初始化推送服务\r\n\r\n```javascript\r\n/**\r\n* 初始化极光推送服务\r\n* 需在 deviceready 事件后调用\r\n*/\r\nwindow.JPush.init();\r\n```\r\n\r\n##### 1.2 开启/关闭调试模式\r\n\r\n```javascript\r\n/**\r\n* 开启调试模式（开发环境推荐开启）\r\n* @param {Boolean} enabled - 是否启用调试\r\n*/\r\nwindow.JPush.setDebugMode(true);\r\n// 关闭调试模式（生产环境必需关闭）\r\nwindow.JPush.setDebugMode(false);\r\n```\r\n\r\n##### 1.3 获取注册 ID\r\n\r\n```javascript\r\n/**\r\n* 获取设备注册 ID（唯一标识设备，用于单点推送）\r\n* @param {Function} successCallback - 成功回调（参数：注册 ID）\r\n* @param {Function} errorCallback - 失败回调（参数：错误信息）\r\n*/\r\nwindow.JPush.getRegistrationID(\r\n   (registrationId) => {\r\n       console.log(\"设备注册 ID：\", registrationId);\r\n       // 建议将 registrationId 上传至业务服务器\r\n   },\r\n   (error) => {\r\n       console.error(\"获取注册 ID 失败：\", error);\r\n   }\r\n);\r\n```\r\n\r\n#### 2 推送目标管理\r\n\r\n##### 2.1 设置别名（单点推送）\r\n\r\n```javascript\r\n/**\r\n* 设置别名（每个设备仅可设置一个别名，常用于用户 ID 绑定）\r\n* @param {Number} sequence - 请求序列号（用于匹配请求与响应）\r\n* @param {String} alias - 别名（支持字母、数字、下划线）\r\n*/\r\nwindow.JPush.setAlias( { 'sequence': 11, 'alias':'alias1' }, function(result) {\r\n    // 设置成功\r\n},function(){\r\n    // 设置失败\r\n});\r\n```\r\n\r\n##### 2.2 设置标签（批量推送）\r\n\r\n```javascript\r\n/**\r\n* 设置标签（每个设备可设置多个标签，用于群体推送）\r\n* @param {Number} sequence - 请求序列号\r\n* @param {Array<String>} tags - 标签数组\r\n*/\r\nwindow.JPush.setTags( { 'sequence': 7, 'tags': ['tag1', 'tag2'] }, function(result) {\r\n    // 设置成功\r\n},function(){\r\n    // 设置失败\r\n});\r\n```\r\n\r\n#### 3 消息监听\r\n\r\n##### 3.1 监听注册 ID\r\n\r\n```javascript\r\n/*\r\n* 监听注册的 ID\r\n* registrationId：string // 注册 ID\r\n*/\r\ndocument.addEventListener(\"jpush.receiveRegistrationId\", function(event) {\r\n    // 注册 ID 并不是每次都回调，需要注册 ID 在 init 完后，调用 jPushGetRegistrationID 获取 ID\r\n    console.log(\"收到注册 ID:\" + JSON.stringify(event));\r\n    \r\n});\r\n```\r\n\r\n##### 3.2 监听通知消息接收\r\n\r\n```javascript\r\n/**\r\n*  监听通知消息接收事件\r\n*  消息字段如下：\r\n*  msgId?: string // 通知 id\r\n*  title?: string // 通知标题\r\n*  content?: string // 通知内容\r\n*  contentType?: string // 通知内容类型\r\n*  extras?: Record<string, Object> // 通知自定义键值对\r\n*  ttl?: number // 后台下发的信息过期时间，单位秒\r\n*  stime?: number // 后台下发时间，毫秒\r\n*  channel?: number // 数据来源通道 0:厂商通道 1:极光通道（开始支持的版本：JPush OpenHarmony SDK v1.3.0）\r\n*/\r\ndocument.addEventListener(\"jpush.receiveMessage\", function(event) {\r\n    console.log(\"收到推送信息：\"+JSON.stringify(event));\r\n});\r\n```\r\n\r\n##### 3.3 监听通知消息点击\r\n\r\n```javascript\r\n/**\r\n* 监听通知消息点击事件\r\n* 消息字段如下：\r\n* msgId?: string // 通知 id\r\n* title?: string // 通知标题\r\n* content?: string// 通知内容\r\n* extras?: Record<string, Object>// 自定义数据\r\n* channel?: number // 数据来源通道 0:厂商通道 1:极光通道（开始支持的版本：JPush OpenHarmony SDK v1.3.0）\r\n*/\r\ndocument.addEventListener(\"jpush.receiveInAppMessageClick\", function(event) {\r\n    message += \"点击推送信息：\"+JSON.stringify(event)+\"<br>\";\r\n    document.getElementById(\"jPushRid1\").innerHTML = message;\r\n});\r\n```\r\n\r\n#### 4 推送服务控制\r\n\r\n##### 4.1 停止推送服务\r\n\r\n```javascript\r\n/**\r\n* 停止推送服务（停止后无法接收推送，需调用 resumePush 恢复）\r\n*/\r\nwindow.JPush.stopPush();\r\n```\r\n\r\n##### 4.2 恢复推送服务\r\n\r\n```javascript\r\n/**\r\n* 恢复推送服务\r\n*/\r\nwindow.JPush.resumePush();\r\n```\r\n\r\n##### 4.3 检查推送服务状态\r\n\r\n```javascript\r\n/**\r\n* 检查推送服务是否已开启\r\n* @param {Function} callback - 回调函数（参数：是否开启）\r\n*/\r\nwindow.JPush.isPushStopped((isStopped) => {\r\n   if (isStopped) {\r\n       console.log(\"推送服务已停止，正在恢复...\");\r\n       window.JPush.resumePush();\r\n   }\r\n});\r\n```\r\n\r\n## 目录结构\r\n\r\n```\r\njpush-phonegap-plugin                  # [根目录] 极光推送插件项目根目录\r\n├── src                                # [源码目录] 存放原生平台代码\r\n│   └── main                           # [主目录] 主代码目录\r\n│       ├── cpp                        # [C++ 目录] C++ 原生代码目录\r\n│       │   └── JPush                  # [C++ 模块] 极光推送核心逻辑文件夹\r\n│       │       ├── JPushPlugin.cpp    # [C++ 实现] 插件主逻辑，负责与极光 SDK 交互（初始化、注册、收消息）\r\n│       │       └── JPushPlugin.h      # [C++ 声明] 插件接口定义\r\n│       └── ets                        # [ArkTS 目录] ArkTS/ETS 代码目录\r\n│           └── components             # [组件目录] 存放 UI 组件\r\n│               └── JPush              # [TS 模块] 推送相关的 UI 组件文件夹\r\n│                   └── JPushAction.ets # [ETS 文件] 处理推送点击事件或展示相关 UI 的组件\r\n├── www                                # [前端目录] 存放 JS 接口文件\r\n│   └── JPushPlugin.js                 # [JS 接口] 供前端调用的 JavaScript 接口文件\r\n├── .gitignore                         # [配置] Git 版本控制忽略文件配置\r\n├── LICENSE                            # [文本] 开源许可证文件\r\n├── OAT.xml                            # [配置] 门禁配置文件\r\n├── package.json                       # [配置] NPM 包配置文件\r\n├── plugin.xml                         # [配置] Cordova/PhoneGap 插件核心配置文件\r\n└── README.md                          # [文档] 项目说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- **Android 和 iOS**：[jpush-phonegap-plugin 官方指南](https://www.npmjs.com/package/jpush-phonegap-plugin)\r\n\r\n- **GitCode 仓库**：[CPF-Cordova/jpush-phonegap-plugin](https://gitcode.com/CPF-Cordova/jpush-phonegap-plugin)\r\n","readmeFilename":"README.md"}