更新记录

1.0.3(2022-11-16)

1 增加极光统计模块,页面出现/结束,计数/计算/浏览/登陆/注册/用户信息等统计

1.0.2(2022-11-03)

  1. 去除registerJPushClickRemoteMsgCallback接口,统一使用jpush.registerCallback接口作为回调,请各位使用者适配
  2. 优化和新增功能:
    • 支持通知消息、自定义消息,收到消息/点击消息通知回调
    • 别名alias、标签tag管理、角标badge、Channel配置
    • 厂家推送、厂商通道注册结果、token回调
    • 支持app杀死时由点击消息启动app跳到对应消息详情页
    • 权限通知判断、跳到通知权限页面
    • 获取RegistrationID、设置手机号
    • 本地通知管理、清除通知
    • 注册/反注册推送服务、停止/恢复推送服务
    • 用户属性管理、设置推送时间/通知静默时间、省电模式
    • 统计分析API、保留最近通知条数、CrashLog闪退奔溃日志上报
    • 自定义铃声、地理围栏

1.0.1(2021-06-07)

更新配置

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


功能

  • 支持通知消息、自定义消息,收到消息/点击消息通知回调
  • 别名alias、标签tag管理、角标badge、Channel配置
  • 厂家推送、厂商通道注册结果、token回调
  • 支持app杀死时由点击消息启动app跳到对应消息详情页
  • 权限通知判断、跳到通知权限页面
  • 获取RegistrationID、设置手机号
  • 本地通知管理、清除通知
  • 注册/反注册推送服务、停止/恢复推送服务
  • 用户属性管理、设置推送时间/通知静默时间、省电模式
  • 统计分析API、保留最近通知条数、CrashLog闪退奔溃日志上报
  • 自定义铃声、地理围栏
  • 极光统计,页面出现/结束,计数/计算/浏览/登陆/注册/用户信息等统计

极光推送

集成步骤:

1. 极光开发者服务平台创建和配置应用https://www.jiguang.cn/portal/#/dev/app/4210bb77dde3dcc43d/info

1.1 到极光推送官网创建一个应用,配置好Android的包名(android如需集成厂家推送需要配置各厂家应用ID、key、secret等)、iOS的证书(ios鉴权方式建议采用Token Authentication)等,记录下应用的AppKey image.png

image.png image.png

2. 在uniapp项目集成本插件

2.1 在本插件网页右上角选择"试用",绑定uniapp项目 image.png image.png

2.2 在项目目录manifest.json -> App原生插件配置 -> 云端插件里选择本插件,并填写插件对应配置 image.png 2.3 iOS开启开启remote-notification后台权限 manifest.json 的 "app-plus" -> "distribute" -> "ios" -> "UIBackgroundModes" 增加remote-notification


{  
"app-plus" : {  
        /* 应用发布信息 */  
        "distribute" : {  
            /* ios打包配置 */  
            "ios" : {  
                "UIBackgroundModes" : [ "remote-notification"] 
            }
        }  
    }  
}

2.4 最新版的基座经测试发现iOS端需要集成uniapp提供的“Push(消息推送)”模块才能收到消息,应该是uniapp为了推广自家产品做的绑定,android集不集成都可以 image.png

插件参数说明

  1. Android参数:
    • JPUSH_PKGNAME: android App应用包名

与自定义基座、云打包、极光开发者服务平台应用上的包名这几个地方需要一致

  • JPUSH_APPKEY:android 极光应用appKey

极光开发者服务平台上Android应用里的AppKey

  • JPUSH_CHANNEL: android 极光channel

用于分渠道打包时区分渠道包试用,没有渠道打包时可以随便填

  • JPUSH_DEBUGMODE: android 极光debug模式,0: 打开debug模式, 1:关闭debug模式

debug模式下在Android的系统日志下会有极光的日志

  • JPUSH_APP_LAUNCH_INIT: android app是否启动的时候初始化极光推送,0: app启动的时候初始化 1:app启动的时候不初始化

详细说明见initJpush接口说明

  • MEIZU_APPKEY: android 魅族 appKey

魅族开放平台上应用的appKey

  • MEIZU_APPID:android 魅族 appID

魅族开放平台上应用的appID

  • XIAOMI_APPID: android 小米 appID

小米开放平台上应用的appID

  • XIAOMI_APPKEY:android 小米 appKey

小米开放平台上应用的appKey

  • OPPO_APPKEY:android OPPO appKey

OPPO开放平台上应用的appKey

  • OPPO_APPID:android OPPO appID

OPPO开放平台上应用的appID

  • OPPO_APPSECRET:android OPPO appSecret

OPPO开放平台上应用的appSecret

  • VIVO_APPKEY: android VIVO appKey

VIVO开放平台上应用的appKey

  • VIVO_APPID:android VIVO appID

VIVO开放平台上应用的appID

  • HONOR_APPID:android 荣耀 appID

荣耀开放平台上应用的appID

  1. ios参数:
    • appKey:ios 极光应用appKey

极光开发者服务平台上ios应用里的AppKey

  • channel: ios channel

ios 渠道标识,一般可以随便填(可以填为appstore)

  • debugMode:ios 极光debug模式,0: 打开debug模式, 1:关闭debug模式

debug模式下,在xcode里会有极光的日志

  • isProduction:ios 证书环境,0:采用生产证书debug, 1:采用生产证书release

采用的是开发还是生产证书

  • appLaunchInit: ios app是否在启动的时候初始化极光推送,0: app启动的时候初始化 1:app启动的时候不初始化

详细说明见initJpush接口说明

极光推送插件

Android厂商推送方案:
  1. 根据极光文档https://docs.jiguang.cn/jpush/client/Android/android_3rd_param 前往各个厂家开发者平台上创建应用
  2. 在极光开发者服务平台的应用里配置各个厂家的AppID、APPKey、AppSecret
  3. 在插件里配置各个厂商应用的AppID、APPKey、AppSecret
  4. 受限于uniapp插件的开放功能,在插件里无法集成华为、FCM厂家推送的一些配置,云打包暂时无法支持这些厂家,如需支持这些厂家需要采用app本地离线打包方式,具体方案请联系作者

app杀死时,点击通知栏消息启动app处理对应消息业务跳到对应消息详情页

ios

在iOS上,当app被kill后,还是可以收到通过极光发来的苹果厂家消息,点击消息启动app时,在设置完回调后jpush.registerCallback((resp) => {}),会第一时间回调onLaunchAppWithMessage方法

Android

在Android上,当app被kill后,还是可以收到极光通过Android各厂商推送来的厂家消息,如果要处理对应的消息业务,需要发送极光的Intent(推荐)或DeepLink(不推荐)类型的消息插件里才能接收到消息,在设置完回调后jpush.registerCallback((resp) => {}),会第一时间回调onIntentOrDeepLinkMessageOpened方法

  • 对应极光文档:https://docs.jiguang.cn/jpush/practice/intent#客户端配置

  • intent的格式为: intent:#Intent;action=cn.jiguang.myaction;component=${包名}/com.wrs.project.uniplugin.jpush.jpush.OpenClickActivity;S.key1=value;i.key2=3;end

  • 如: 包名为:com.dw.project.intellectterminal.test,则intent为:

intent:#Intent;action=cn.jiguang.myaction;component=com.dw.project.intellectterminal.test/com.wrs.project.uniplugin.jpush.jpush.OpenClickActivity;S.key1=value;i.key2=3;end

错误码

推送变量

var jpush = uni.requireNativePlugin("wrs-jpush");

有些接口Android、iOS返回的数据模型不一样,需要各端去适配下

  • 注册回调

            jpush.registerCallback((resp) => {
                var respStr = JSON.stringify(resp);
                this.showMsg("收到回调:" + respStr);
                var opt = resp.opt;
                switch (opt) {
                    // app是点击消息通知启动的,不是点击桌面图标启动的,在调用registerCallback接口后,如果app是点击消息通知启动的会回调此方法
                    // 主要用于处理点击消息通知跳到对应消息详情页面,目前只支持iOS,Android方案参考onIntentOrDeepLinkMessageOpened
                    case "onLaunchAppWithMessage":
                        var isRemoteNotification = resp.isRemoteNotification;
                        if (isRemoteNotification) { // 远程消息

                        } else { // 本地消息

                        }
                        break;
                        // 自定义消息回调,同时是应用内提醒回调。支持iOS、Android,数据结构不一样,需要各端去适配
                    case "onMessage":
                        // ios: {"userInfo":{"content":"您好,这是一条自定义消息","extras":{"name":"wrs","pwd":""},"_j_msgid":},"opt":"onMessage"} 
                        break;
                        // 点击通知回调,支持iOS、Android,具体的消息通知数据模型iOS、Android不一样,需要各端去适配
                    case "onNotifyMessageOpened":
                        // android: {"failedLink":"","showResourceList":[],"richType":0,"inAppMsgType":1,"_webPagePath":"","opt":"onNotifyMessageOpened","appkey":"4210bb77dde3dcc43d","notificationExtras":"{}","inAppMsgShowType":2,"inAppMsgContentBody":"","developerArg0":"","isWmDeepLink":false,"deeplink":"","notificationStyle":0,"notificationPriority":0,"notificationAlertType":7,"sspWmOriginId":"","notificationInbox":"","notificationId":,"appId":"com.dw.project.intellectterminal.test","targetPkgName":"","notificationNormalSmallIcon":"","failedAction":0,"isRichPush":false,"inAppType":0,"notificationChannelId":"","notificationTitle":"hhhh","notificationContent":"hhhh","sspWxAppId":"","displayForeground":"","notificationCategory":"","notificationSmallIcon":"","notificationType":0,"inAppMsgShowPos":0,"notificationBigPicPath":"","notificationBuilderId":0,"sspWmType":0,"msgId":"","platform":0,"inAppMsgTitle":"","notificationBigText":"","notificationLargeIcon":""}
                        // ios: {"body":"您好,您购买的商品支付成功,请查收!","opt":"onNotifyMessageOpened","title":"支付成功","isRemoteNotification":true,"badge":2,"userInfo":{"_j_msgid":,"password":"","_j_business":1,"_j_uid":,"aps":{"sound":"default","mutable-content":1,"alert":{"title":"支付成功","body":"您好,您购买的商品支付成功,请查收!"},"alternate_alert":"","badge":2,"interruption-level":"active"},"_j_data_":"{\"data_msgtype\":1,\"push_type\":1,\"is_vip\":0}","name":"wrs"}
                        break;
                        // 用户点击了通知栏按钮,通知的 MultiAction 回调
                    case "onMultiActionClicked":

                        break;
                        // 收到通知回调,仅支持Android,iOS参考onWillPresentNotification
                    case "onNotifyMessageArrived":
                        // {"failedLink":"","showResourceList":[],"richType":0,"inAppMsgType":1,"_webPagePath":"","opt":"onNotifyMessageArrived","appkey":"4210bb77dde3dcc43d","notificationExtras":"{}","inAppMsgShowType":2,"inAppMsgContentBody":"","developerArg0":"","isWmDeepLink":false,"deeplink":"","notificationStyle":0,"notificationPriority":0,"notificationAlertType":7,"sspWmOriginId":"","notificationInbox":"","notificationId":,"appId":"com.dw.project.intellectterminal.test","targetPkgName":"","notificationNormalSmallIcon":"","failedAction":0,"isRichPush":false,"inAppType":0,"notificationChannelId":"","notificationTitle":"hhhh","notificationContent":"hhhh","sspWxAppId":"","displayForeground":"","notificationCategory":"","notificationSmallIcon":"","notificationType":0,"inAppMsgShowPos":0,"notificationBigPicPath":"","notificationBuilderId":0,"sspWmType":0,"msgId":"","platform":0,"inAppMsgTitle":"","notificationBigText":"","notificationLargeIcon":""}
                        break;
                        // 清除通知回调,仅支持Android
                    case "onNotifyMessageDismiss":

                        break;
                        // 通知未展示回调,支持推送时指定前台不展示功能,当通知未展示时,会回调该接口,仅支持Android
                    case "onNotifyMessageUnShow":

                        break;
                        // registerID注册成功回调,支持Android、iOS
                    case "onRegister":
                        var registerID = resp.registerID;
                        break;
                        // 长连接状态回调,支持iOS、android
                    case "onConnected":
                        // {"opt":"onConnected","isConnected":true}
                        var isConnected = resp.isConnected;
                        break;
                        // 厂商通道 Token 回调说明,支持Android、iOS,两端返回数据模型不一样,需要各端去适配
                    case "Result":
                        switch (uni.getSystemInfoSync().platform) {
                            case 'android':
                                // android: {"cmd":2005,"errorCode":0,"extra":{"parcelled":false,"empty":false,"size":0},"opt":"Result","msg":"140fe1da9ec0a"} 

                                break;
                            case 'ios':
                                var flag = resp.flag;
                                if (flag) { // 苹果厂家远程消息推送注册成功

                                } else { // 注册失败

                                }
                                break;
                            default:
                                break;
                        }
                        break;
                        // 通知开关状态回调,支持Android、iOS
                    case "onNotificationSettingsCheck":
                        // {"source":1,"isOn":true,"opt":"onNotificationSettingsCheck"} 
                        break;
                    case "onGeofenceRegion":
                        break;
                        // 将要展示通知,仅支持iOS,Android参考onNotifyMessageArrived
                    case "onWillPresentNotification":
                        // {"body":"您好,您购买的商品支付成功,请查收!","opt":"onWillPresentNotification","title":"支付成功","isRemoteNotification":true,"badge":2,"userInfo":{"_j_msgid":,"password":"","_j_business":1,"_j_uid":,"aps":{"sound":"default","mutable-content":1,"alert":{"title":"支付成功","body":"您好,您购买的商品支付成功,请查收!"},"alternate_alert":"","interruption-level":"active","badge":2},"_j_data_":"{\"data_msgtype\":1,\"push_type\":1,\"is_vip\":0}","name":"wrs"}}
                        break;
                    case "onLogin":
                        // {"userInfo":{"version":1,"time":},"opt":"onLogin"}
                        break;
                    case "onServiceError":
                        break;
                        // 应用内提醒消息展示的回调,仅支持iOS
                    case "onDidShowJPushNotiInMessage":
                        break;
                        //  应用内提醒消息点击的回调,仅支持ios
                    case "onDidClickJPushNotiInMessage":
                        break;
                        // 仅支持Android
                        // app是点击消息通知启动的,不是点击桌面图标启动的,在调用registerCallback接口后,如果app是点击消息通知启动的会回调此方法
                    // 主要用于处理点击消息通知跳到对应消息详情页面,目前只支持Android,ios方案参考onLaunchAppWithMessage
                    case "onIntentOrDeepLinkMessageOpened":

                        break;
                }
            });
  • 注册registrationID,仅支持iOS,Android的registerID会自动生成(集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时生成)

                switch (uni.getSystemInfoSync().platform) {
                    // android的registrationID会自动生成
                    case 'android':

                        break;
                    case 'ios':
                        jpush.registerJPushRegistrationID((resp) => {
                            this.showMsg(JSON.stringify(resp));
                            var code = resp.code;
                            if (code == 0) {
                                var registrationID = resp.registrationID;
                                this.showMsg("registrationID:" + registrationID);
                            } else {
                                this.showMsg("registrationID 注册失败, code:" + code);

                            }
                        });
                        break;
                    default:
                        break;
                }
  • 获取 RegistrationID API

                jpush.getRegistrationID((resp) => {
                    this.showMsg(JSON.stringify(resp));
                    this.showMsg("获取为registrationID:" + resp.registerID);
                });
  • 通知开启状态,检查是否已经开启通知权限

jpush.isOpenNotificationEnable((resp) => {
    var code = resp.code;
    var desc = "";
    if(code == 1) { // 通知权限已经开启
        desc = "通知权限已经开启";
    } else if(code == 0) { // 通知权限没有开启
        desc = "通知权限没有开启";
    } else { // 通知权限未知
        desc = "通知权限未知";
    }
    this.showMsg(desc);
});
  • 跳转至应用通知设置页,跳到系统设置页面开启通知权限

jpush.openSettingApp();
  • 设置手机号 对App一段时间内无法收到推送的消息(可能由于断网、后台禁止运行、消息延迟等原因)的用户进行短信通道信息补充

var params = {};
params.mobileNumber = '';
jpush.setMobileNumber(params, (resp) => {
    var code = resp.code;
    if(code == 0) {
        var alias = resp.alias;
        this.showMsg("手机号设置成功");
    } else {
        this.showMsg("手机号设置失败:" + code);
    }
});
  • 设置别名,这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。

                var params = {
                    'alias': "alias1"
                };
                jpush.setAlias(params, (resp) => {
                    // {"tagCheckStateResult":false,"tagCheckOperator":false,"alias":"alias1","code":0,"errorCode":0,"sequence":0}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var alias = resp.alias;
                        this.showMsg("别名alias设置成功:" + alias);
                    } else {
                        this.showMsg("别名alias设置失败, code:" + code);
                    }
                });
  • 删除别名

                jpush.deleteAlias((resp) => {
                    // {"tagCheckOperator":false,"tagCheckStateResult":false,"code":0,"errorCode":0,"sequence":2}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        this.showMsg("删除别名alias成功");
                    } else {
                        this.showMsg("删除别名alias, code:" + code);
                    }
                });
  • 查询别名

                jpush.getAlias((resp) => {
                    // {"tagCheckStateResult":false,"tagCheckOperator":false,"alias":"alias1","code":0,"errorCode":0,"sequence":1}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var alias = resp.alias;
                        this.showMsg("别名alias:" + alias);
                    } else {
                        this.showMsg("别名alias获取失败, code:" + code);
                    }
                });
  • 设置标签,这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。

                var params = {
                    'tags': ["tag0"]
                };
                jpush.setTags(params, (resp) => {
                    // {"tags":["tag0"],"tagCheckOperator":false,"tagCheckStateResult":false,"code":0,"errorCode":0,"sequence":4}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var tags = resp.tags;
                        this.showMsg("标签tags设置成功:" + tags);
                    } else {
                        this.showMsg("标签tags设置失败, code:" + code);
                    }
                });
  • 新增标签

                var params = {
                    'tags': ["abc000"]
                };
                jpush.addTags(params, (resp) => {
                    // {"tags":["abc000"],"tagCheckOperator":false,"tagCheckStateResult":false,"code":0,"errorCode":0,"sequence":3}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var tags = resp.tags;
                        this.showMsg("增加标签tags成功:" + tags);
                    } else {
                        this.showMsg("增加tags失败, code:" + code);
                    }
                });
  • 删除标签

                var params = {
                    'tags': ["abc000"]
                };
                jpush.deleteTags(params, (resp) => {
                    // {"tags":["abc000"],"tagCheckOperator":false,"tagCheckStateResult":false,"code":0,"errorCode":0,"sequence":6}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var tags = resp.tags;
                        this.showMsg("删除标签tags成功:" + tags);
                    } else {
                        this.showMsg("删除标签tags失败, code:" + code);
                    }
                });
  • 清除所有标签

jpush.cleanTags((resp)=>{

});
  • 查询所有标签

                jpush.getTags((resp) => {
                    // {"tags":["abc000"],"tagCheckOperator":false,"tagCheckStateResult":false,"code":0,"errorCode":0,"sequence":5}
                    this.showMsg(JSON.stringify(resp));
                    var code = resp.code;
                    if (code == 0) {
                        var tags = resp.tags;
                        this.showMsg("标签tags:" + tags);
                    } else {
                        this.showMsg("标签tags获取失败, code:" + code);
                    }
                });
  • 查询指定标签的绑定状态

jpush.checkTagBindState({
tag: "xx"
}, (resp)=>{

})
  • 筛选有效标签,验证标签

jpush.validTag({
tag: ""
},(resp)=>{

});
  • 新增/更新用户属性

                jpush.setProperties({
                    "properties":{
                        "name": "abc",
                        "password": ""
                    }
                }, (resp)=>{
                    // {"errorCode":6036,"pros":{"name":"abc","password":""},"sequence":10,"tagCheckOperator":false,"tagCheckStateResult":false}
                    this.showMsg(JSON.stringify(resp));
                });
  • 删除指定用户属性

                jpush.deleteProperties({
                    "properties":{
                        "name": "abc",
                        "password": ""
                    }
                }, (resp)=>{

                });
  • 删除所有用户属性

jpush.cleanProperties((resp)=>{});
  • 注册接口,仅支持Android

jpush.registerToken({
appID: "",
appKey: "",
appSecret: ""
}, (resp)=>{})
  • 反注册接口,仅支持Android

jpush.unRegisterToken((resp)=>{})
  • 停止推送服务,仅支持Android

jpush.turnOffPush((resp)=>{})
  • 恢复推送服务,仅支持Android

jpush. turnOnPush((resp)=>{})
  • 设置调试模式 API

jpush.setDebugMode({
debugMode: true
})
  • 初始化推送服务 API 在配置插件参数的时候,如果ios参数appLaunchInit、Android参数JPUSH_APP_LAUNCH_INIT设为1时,表示app在启动的时候不会初始化极光推送,这时需要手动调用初始化推送服务接口,主要是为了某些app的消息设计不是在app第一次启动的时候弹出消息授权提示,而是在某个业务用到了消息推送的时候再初始化推送服务

jpush.initJpush()
  • 停止推送服务,仅支持Android

jpush.stopPush()
  • 恢复推送服务,仅支持Android

jpush.resumePush()
  • 检查推送是否被停止,仅支持Android

var resp = jpush.isPushStopped()
if(isString(resp)) {
resp = JSON.parse(resp);
}
var isPushStopped = resp.isPushStopped
if(isPushStopped) {

} else {
}
  • 配置 Channel API,仅支持Android

jpush.setChannel({
channel: "xxx"
})
  • 统计用户时长 android:

jpush.onResume()

jpush.onPause()

ios:


jpush.startLogPageView({
pageName: "xxx"
})

jpush.stopLogPageView({
pageName: "xxx"
})

jpush.beginLogPageView({
pageName: "xxx",
duration: 2
})
  • 上报统计事件

jpush.reportNotificationOpened({
msgId: "ssss"
})
  • 清除所有通知

jpush.clearAllNotifications()
  • 清除通知

jpush.clearNotificationById({
notificationId: 
})
  • 设置允许推送时间 API

jpush.setPushTime({
weekDays: [1],
startHour: 1,
endHour: 2
})
  • 设置通知静默时间 API

jpush.setSilenceTime({
startHour: 1,
startMinute: 1,
endHour: 2,
endMinute:2
})
  • 申请权限接口( Android 6.0 及以上)

jpush.requestPermission()
  • 设置是否开启省电模式

jpush.setPowerSaveMode({
enable: true
})
  • 通知栏样式定制 API, 规划中
  • 设置保留最近通知条数 API

jpush.setLatestNotificationNumber({
maxNum: 99
})
  • 关闭 CrashLog 上报

jpush.stopCrashHandler()
  • 开启 CrashLog 上报

jpush.initCrashHandler()
  • 获取推送连接状态

var resp = jpush.getConnectionState()
if(isString(resp)) {
resp = JSON.parse(resp)
}
var connectionState = resp.connectionState
  • 添加一个本地通知 Android8.0 以后通知都走 NotificationChannel 了。开发者可以自行定义 NotificationChannel,然后在 API 推送的时候可以指定 channelId 推送; 在 Android8.0 及以上的机型,通知会先查找对应 channelId 的 channel,通知的重要等级、声音、震动、呼吸灯由 channel 决定; 如果没有找到 channelId,或者处于静默时间内,则走默认的极光 channel。

                switch (uni.getSystemInfoSync().platform) {
                    case 'android':
                        jpush.addLocalNotification({
                            builderId: 0, // 设置本地通知样式
                            notificationId: 222, // 设置本地通知的 ID
                            broadcastTime: new Date().getTime() + 3000, // 设置本地通知触发时间
                            title: "这是标题", // 设置本地通知的 title
                            content: "这是内容", // 设置本地通知的 content
                            extras: JSON.stringify({
                                name: "wrs"
                            }) // 设置额外的数据信息 extras 为 json 字符串
                        });
                        break;
                    case 'ios':
                        jpush.addLocalNotification({
                            requestIdentifier: "sfafasfdasdf",
                            content: {
                                title: "这是标题", // 设置本地通知的 title
                                subtitle: "这是内容", // 设置本地通知的 content
                                body: "body content",
                                badge: 1, // 果不需要改变角标传-1
                                userInfo: {
                                    name: "wrs"
                                }
                                // sound: null
                            },
                            trigger: {
                                timeInterval: 2,
                                repeat: false
                                // region: {
                                //  latitude: .22,
                                //  longitude: 4545,
                                //  radius: 121,
                                //  identifier:  "wdf"
                                // }
                            }
                        }, (resp) => {
                            this.showMsg(JSON.stringify(resp));
                        });
                        break;
                    default:
                        break;
                }
  • 移除指定的本地通知

                switch (uni.getSystemInfoSync().platform) {
                    case 'android':
                        jpush.removeLocalNotification({
                            notificationId: 222
                        });
                        break;
                    case 'ios':
                        jpush.removeLocalNotification({
                                requestIdentifier: "sfafasfdasdf"
                        });

                        break;
                    default:
                        break;
                }
  • 移除所有的本地通知

                jpush.clearLocalNotifications();
  • NotificationChannel 配置

jpush.createNotificationChannel({
  notificationChannelGroup: {
    id: "xxx",
    name: "xxx"
  },
  notificationChannel: {
    id: "xxx",
    name: "xxx",
    groupId: "xx",
    importance: 1, // 0: IMPORTANCE_NONE 1: IMPORTANCE_MIN 2: IMPORTANCE_LOW 3: IMPORTANCE_DEFAULT 4: IMPORTANCE_HIGH
    enableLights: true,
    enableVibration: true,
    sound: "http://www/ssss/aa.mp3"
}

})
  • 设置地理围栏监控周期

jpush.setGeofenceInterval({
interval: 3000 // 单位是毫秒
})
  • 设置允许保存的最大地理围栏个数

jpush.setMaxGeofenceNumber({
maxNumber: 3 
})
  • 删除地理围栏

jpush.deleteGeofence({
geofenceid: ""
})
  • 设置角标数字 测试发现在iOS上极光的角标设置不行,ios的此接口设置 的是JPush 服务器中存储的 badge 值,如果需要改变app的角标数字,请调用setAppIconBadge方法

var params = {};
params.badge = 10;
jpush.setBadge(params);
  • 清空角标数字 测试发现在iOS上极光的角标设置不行,ios的此接口设置 的是JPush 服务器中存储的 badge 值,如果需要改变app的角标数字,请调用setAppIconBadge方法

jpush.resetBadge();
  • ios设置角标消息数,仅支持iOS

                // 仅支持iOS,当badgeNum小于等于0时为清空角标
                var params = {};
                params.badgeNum = 10;
                jpush.setAppIconBadge(params);
  • 设置应用内消息代理,仅支持iOS 设置了应用内消息代理,才会回调onDidShowJPushNotiInMessage、onDidClickJPushNotiInMessage方法

jpush.setNotiInMessage()
  • 取消设置应用内消息代理,仅支持iOS

jpush.cancelNotiInMessage()

极光统计

集成步骤
  1. 在集成上面极光统计的的基础上,在极光开发者平台对应的应用设置里找到"推送设置",分别绑定Android的包名和iOS的Bundle ID(即包名)
  2. 计数事件和计算事件需要现在极光开发者平台上创建事件ID(eventId),这样才能跟接口里的eventId对应上
  3. 插件集成步骤请参考https://www.cnblogs.com/wenrisheng/p/
  4. 官方APIhttps://docs.jiguang.cn/janalytics/client/android_api#sdk-%E5%88%9D%E5%A7%8B%E5%8C%96-api

  • 初始化极光统计

// 初始化
janalytics.initAnalytics();
  • 统计上报周期API

                // 设置统计上报的自动周期,未调用前默认即时上报
                janalytics.setAnalyticsReportPeriod({
                    period: 0 //周期,单位秒,最小10秒,最大1天,超出范围会打印调用失败日志。传0表示统计数据即时上报
                });
  • 页面流统计API-页面启动接口

            // 页面启动接口
                janalytics.onPageStart({
                    pageName: "test page"
                });
  • 页面流统计API-页面结束接口

                // 页面结束接口
                janalytics.onPageEnd({
                    pageName: "test page"
                });
  • 计数事件模型

                janalytics.countDataStatistic({
                    eventId: "click_count_btn", // 事件ID
                    eventParams: { // 事件参数
                        name: "Jack"
                    }
                });
  • 计算事件模型

                janalytics.calculateDataStatistic({
                    eventId: "click_calculate_btn",// 事件ID
                    eventValue: 2, // 事件值
                    eventParams: { // 事件参数
                        name: "Jack"
                    }
                });
  • 登录事件模型

                janalytics.loginDataStatistic({
                    loginMethod: "phoneLogin", // 登录方式(非空)
                    loginSuc: true, // 登录是否成功(非空)
                    eventParams: { // 事件参数/扩展参数
                        account: "xxx",
                        password: ""
                    }
                });
  • 注册事件模型

                janalytics.reigisterDataStatistic({
                    registerMethod: "phoneRegister",
                    registerSuc: true,
                    eventParams: { // 事件参数/扩展参数
                        account: "xxx",
                        password: ""
                    }
                });
  • 浏览事件模型

                janalytics.browserDataStatistic({
                    browseId: "browse_id",
                    browseName: "深圳热点新闻",
                    browseType: "news",
                    browseDuration: 22.1,
                    eventParams: {
                        account: "xxx"
                    }
                });
  • 购买事件模型

                janalytics.purchaseDataStatistic({
                    purchaseGoodsid: "",
                    purchaseGoodsName: "",
                    purchasePrice: 123.2,
                    purchaseSuccess: true,
                    purchaseCurrency: "CNY", // CNY:人民币  USD:美元
                    purchaseGoodsType: "",
                    purchaseGoodsCount: 2,
                    eventParams: {

                    }
                });
  • 账户维度模型

                janalytics.setUserInfo({
                    account: "xxx",
                    name: "jack",
                    phone: "137xxx",
                    email: "@qq.com",
                    birthdate: "", // yyyyMMdd格式
                    sex: 1, // 0未知 1男 2女/不能为其他数字,默认为0
                    paid: 1, // 是否付费    0未知 1是 2否/不能为其他数字,默认为0
                    creationTime: new Date().getTime(), 
                    eventParams: {}
                });
  • 解绑当前用户信息

janalytics.detachAccount((resp)=>{
    if(resp.code == 0) { // 成功

    }
})
  • 设置是否开启debug模式

janalytics.setDebugMode({
    debugMode: true
})
  • 开启crashlog日志上报

janalytics.initCrashHandler()
  • 关闭crashlog日志上报,仅支持Android,iOS暂未发现对应接口

janalytics.stopCrashHandler()
  • 地理位置统计,仅支持ios,android暂未发现对应接口

janalytics.setLocation({
    latitude:,
    longitude:
})

插件文档: CSDN:http://t.csdn.cn/IeQ00 简书:https://www.jianshu.com/p/e91f43

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android: 极光的通知权限 iOS: Wi-Fi、网络、推送权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的 极光 SDK会采集数据,详情可参考:https://www.jiguang.cn/

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问