极光推送 官方支持的 Hbuilder 插件(Android & iOS)。是基于 HBuilder 提供的 uni-app 原生插件扩展 进而开发出的推送插件。
支持 iOS 和 Android 推送,同时适配各大厂商推送。
- 1.将 nativeplugins/JG-JPush 导入项目对应位置。
- 2.项目 manifest.json 中接入 JG-JPush 插件,并配置插件配置。
- 3.在项目中引用插件
const jv = uni.requireNativePlugin('JG-JPush');
- 4.引入JG-JCore 插件,用于适配更多的极光 Uniapp 插件,必须引入。
按照以下步骤快速体验 JPush_Hbuilder_demo:
- 1.在极光 portal注册应用并开通推送功能。
- 2.在项目 manifest.json 中配置您的推送信息
- 3.HbuilderX 中制作打包自定义基座,包名,签名,bundleID 需要与对应 appkey 配置的应用信息保持一致
- 4.HbuilderX 使用自定义基座运行即可
HBuilderX 3.6.2 及之后版本,请打开mainfest配置文件,选择 App模块配置,勾选 Push 模块。
注意:不要勾选uniPush!
打开 manifest.xml,选中App原生插件配置,选择本地插件,导入 JG-JPush
然后配置各个属性,注意在HBuilderX中可能会出现乱序现象,请仔细认真填写
| 属性 | 描述 | 示例 |
|---|---|---|
| JPUSH_OPPO_APPKEY | android oppo appkey(选填) | OP-12345678 |
| JPUSH_OPPO_APPID | android oppo appid(选填) | OP-12345678 |
| JPUSH_OPPO_APPSECRET | android oppo appSecret(选填) | OP-12345678 |
| JPUSH_VIVO_APPKEY | android vivo appkey(选填) | 12345678 |
| JPUSH_VIVO_APPID | android vivo appId(选填) | 12345678 |
| JPUSH_MEIZU_APPKEY | android meizu appkey(选填) | MZ-12345678 |
| JPUSH_MEIZU_APPID | android meizu appId(选填) | MZ-12345678 |
| JPUSH_XIAOMI_APPKEY | android xiaomi appKey(选填) | MI-12345678 |
| JPUSH_XIAOMI_APPID | android xiaomi appId(选填) | MI-12345678 |
| JPUSH_HUAWEI_APPID | android huawei appId(选填) | appid=12345678 |
| JPUSH_HONOR_APPID | android honor appId(选填) | 12345678 |
| JPUSH_GOOGLE_API_KEY | android google api_key(选填) | g-12345678 |
| JPUSH_GOOGLE_APP_ID | android google mobilesdk_app_id(选填) | g-12345678 |
| JPUSH_GOOGLE_PROJECT_NUMBER | android google project_number(选填) | g-12345678 |
| JPUSH_GOOGLE_PROJECT_ID | android google project_id(选填) | g-12345678 |
| JPUSH_GOOGLE_STORAGE_BUCKET | android google storage_bucket(选填) | g-12345678 |
| JPUSH_ISPRODUCTION_IOS | iOS 是否是生产环境(选填) | 是填true,不是填false或者不填 |
| JPUSH_ADVERTISINGID_IOS | iOS 广告标识符(IDFA)(选填) | 如果不需要使用IDFA,可不填 |
| JPUSH_DEFAULTINITJPUSH_IOS | iOS 是否默认初始化(选填) | 是填true,不是填false或者不填 |
插件支持 OPPO VIVO 魅族 小米 华为 荣耀 FCM 七大厂商推送接入,如需接入请对应配置上述厂商信息。
事件监听可以保留在原有 App 或页面中,不要求统一移到 App.vue 或 initJPushService() 之前。连接状态保存当前进程最近一次真实状态,登记连接监听时会立即补发;普通通知、透传、应用内消息、本地通知、标签/别名、手机号及命令结果按事件类型分别缓存,登记对应监听后按顺序补发。业务需要及时处理结果时,应尽早登记对应监听;晚登记的补发受下述缓存容量和进程生命周期限制。
Demo 保留初始化后登记连接、通知等监听的顺序,标签/别名及手机号监听分别保留在 tags.vue、other.vue。日志在初始化前开启;Android 命令监听在首页首次查询 RID 前登记,用于接收异步命令 2005。页面加载或恢复时仍需读取已保存的连接状态及 RID,避免错过 App 转发到页面的事件。
初始化后若尚未收到任何连接状态,插件会查询 SDK 服务进程的初始状态,只采纳异步命令 2004 的结果,并忽略查询接口的同步返回值。查询结果仅填补未知状态,不能覆盖已到达的真实连接/断开回调。
- 普通事件提交到 JS 桥接方法后从队列移除,重新登记不会重复消费;桥接调用抛异常时保留当前事件,等待后续事件或重新登记时再尝试。
- 每种事件类型最多缓存 100 条。达到上限时记录警告并淘汰最早等待的事件;正在投递的事件不会被淘汰。缓存仅当前进程有效,不跨进程死亡保存。
- 同一种事件仍只保留一个监听,后登记的监听替换前一个;模块销毁仅解除该实例登记的监听,尚未发送的事件继续等待新监听。
- 标签/别名等操作结果保留原始
sequence,业务侧仍需按请求匹配。桥接调用返回不等于 JS 业务消费确认,插件不提供跨进程或全链路恰好一次投递保证。 - 通知点击统一进入上述队列,普通通知与本地通知分别等待各自监听。
调用 setLoggerEnable(true) 后,原生 Tag 为 Uniapp-JPush,首先输出 JG-JPush native plugin version=1.2.8,可用于核对实际打入 APK 的原生插件版本。日志不会强制开启。
| 关键字 | 含义 |
|---|---|
connect register / connect replay |
登记监听及补发已知连接状态;cachedState=null 表示未知 |
connect state stored |
保存连接状态,并标明是否已有监听 |
connect query accepted / connect query ignored |
初始查询补齐状态,或因已有状态而忽略迟到查询 |
event received / event cached |
收到事件,或因监听未登记而缓存 |
event register / event dispatch |
登记事件监听及开始投递;trigger=register 表示登记时补发 |
event consumed / event retained |
桥接调用正常返回后出队,或失败后保留 |
listener removed / connect remove ignored |
实例销毁解除监听,或忽略旧实例对新监听的清理 |
新增队列日志只记录事件类型、队列长度、状态和实例标识,不额外复制消息正文。owner 是当前进程内的实例标识;桥接调用正常返回不等于 JS 业务消费确认。
升级时需替换 nativeplugins/JG-JPush/android/uniplugin_jpush-release.aar 并重新制作自定义基座或打包 App,单独更新 Vue/WGT 不会替换 Java 实现。
MIT © JiGuang