功能

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

极光推送

集成步骤:

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

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


2. 在uniapp项目集成本插件

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

2.2 在项目目录manifest.json -> App原生插件配置 -> 云端插件里选择本插件,并填写插件对应配置

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集不集成都可以

支持定制,联系方式 QQ:252797991

插件参数说明

  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本地离线打包方式,具体方案请联系作者(QQ:252797991)

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

错误码

  • android错误码查询:https://docs.jiguang.cn/jpush/client/Android/android_code

  • ios错误码查询:https://docs.jiguang.cn/jpush/client/iOS/ios_code

  • android返回数据里的errorCode与code是一样的,code为0业务处理成功,其它为业务处理错误

  • ios返回数据里只有code,code为0业务处理成功,其它为业务处理错误

推送变量

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方案参考onIntentOrDeepLinkMessageOpenedcase "onLaunchAppWithMessage":var isRemoteNotification = resp.isRemoteNotification;if (isRemoteNotification) { // 远程消息} else { // 本地消息}break;// 自定义消息回调,同时是应用内提醒回调。支持iOS、Android,数据结构不一样,需要各端去适配case "onMessage":// ios: {"userInfo":{"content":"您好,这是一条自定义消息","extras":{"name":"wrs","pwd":"123456"},"_j_msgid":18100427112724380},"opt":"onMessage"} break;// 点击通知回调,支持iOS、Android,具体的消息通知数据模型iOS、Android不一样,需要各端去适配case "onNotifyMessageOpened":// android: {"failedLink":"","showResourceList":[],"richType":0,"inAppMsgType":1,"_webPagePath":"","opt":"onNotifyMessageOpened","appkey":"4210b615342b77dde3dcc43d","notificationExtras":"{}","inAppMsgShowType":2,"inAppMsgContentBody":"","developerArg0":"","isWmDeepLink":false,"deeplink":"","notificationStyle":0,"notificationPriority":0,"notificationAlertType":7,"sspWmOriginId":"","notificationInbox":"","notificationId":512623466,"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":"18100425851304375","platform":0,"inAppMsgTitle":"","notificationBigText":"","notificationLargeIcon":""}// ios: {"body":"您好,您购买的商品支付成功,请查收!","opt":"onNotifyMessageOpened","title":"支付成功","isRemoteNotification":true,"badge":2,"userInfo":{"_j_msgid":18100427111617504,"password":"123456","_j_business":1,"_j_uid":65437359255,"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参考onWillPresentNotificationcase "onNotifyMessageArrived":// {"failedLink":"","showResourceList":[],"richType":0,"inAppMsgType":1,"_webPagePath":"","opt":"onNotifyMessageArrived","appkey":"4210b615342b77dde3dcc43d","notificationExtras":"{}","inAppMsgShowType":2,"inAppMsgContentBody":"","developerArg0":"","isWmDeepLink":false,"deeplink":"","notificationStyle":0,"notificationPriority":0,"notificationAlertType":7,"sspWmOriginId":"","notificationInbox":"","notificationId":512623466,"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":"18100425851304375","platform":0,"inAppMsgTitle":"","notificationBigText":"","notificationLargeIcon":""}break;// 清除通知回调,仅支持Androidcase "onNotifyMessageDismiss":break;// 通知未展示回调,支持推送时指定前台不展示功能,当通知未展示时,会回调该接口,仅支持Androidcase "onNotifyMessageUnShow":break;// registerID注册成功回调,支持Android、iOScase "onRegister":var registerID = resp.registerID;break;// 长连接状态回调,支持iOS、androidcase "onConnected":// {"opt":"onConnected","isConnected":true}var isConnected = resp.isConnected;break;// 厂商通道 Token 回调说明,支持Android、iOS,两端返回数据模型不一样,需要各端去适配case "onCommandResult":switch (uni.getSystemInfoSync().platform) {case 'android':// android: {"cmd":2005,"errorCode":0,"extra":{"parcelled":false,"empty":false,"size":0},"opt":"onCommandResult","msg":"140fe1da9e415448c0a"} break;case 'ios':var flag = resp.flag;if (flag) { // 苹果厂家远程消息推送注册成功} else { // 注册失败}break;default:break;}break;// 通知开关状态回调,支持Android、iOScase "onNotificationSettingsCheck":// {"source":1,"isOn":true,"opt":"onNotificationSettingsCheck"} break;case "onGeofenceRegion":break;// 将要展示通知,仅支持iOS,Android参考onNotifyMessageArrivedcase "onWillPresentNotification":// {"body":"您好,您购买的商品支付成功,请查收!","opt":"onWillPresentNotification","title":"支付成功","isRemoteNotification":true,"badge":2,"userInfo":{"_j_msgid":18100427111617504,"password":"123456","_j_business":1,"_j_uid":65437359255,"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":1667187758},"opt":"onLogin"}break;case "onServiceError":break;// 应用内提醒消息展示的回调,仅支持iOScase "onDidShowJPushNotiInMessage":break;//  应用内提醒消息点击的回调,仅支持ioscase "onDidClickJPushNotiInMessage":break;// 仅支持Android// app是点击消息通知启动的,不是点击桌面图标启动的,在调用registerCallback接口后,如果app是点击消息通知启动的会回调此方法// 主要用于处理点击消息通知跳到对应消息详情页面,目前只支持Android,ios方案参考onLaunchAppWithMessagecase "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 = '18800000000';
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": "123456"}}, (resp)=>{// {"errorCode":6036,"pros":{"name":"abc","password":"123456"},"sequence":10,"tagCheckOperator":false,"tagCheckStateResult":false}this.showMsg(JSON.stringify(resp));});
  • 删除指定用户属性
jpush.deleteProperties({"properties":{"name": "abc","password": "123456"}}, (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: 45454
})
  • 设置允许推送时间 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, // 设置本地通知的 IDbroadcastTime: new Date().getTime() + 3000, // 设置本地通知触发时间title: "这是标题", // 设置本地通知的 titlecontent: "这是内容", // 设置本地通知的 contentextras: JSON.stringify({name: "wrs"}) // 设置额外的数据信息 extras 为 json 字符串});break;case 'ios':jpush.addLocalNotification({requestIdentifier: "sfafasfdasdf",content: {title: "这是标题", // 设置本地通知的 titlesubtitle: "这是内容", // 设置本地通知的 contentbody: "body content",badge: 1, // 果不需要改变角标传-1userInfo: {name: "wrs"}// sound: null},trigger: {timeInterval: 2,repeat: false// region: {//    latitude: 12121.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_HIGHenableLights: 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对应上

官方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", // 事件IDeventParams: { // 事件参数name: "Jack"}});
  • 计算事件模型
janalytics.calculateDataStatistic({eventId: "click_calculate_btn",// 事件IDeventValue: 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: "252797991@qq.com",birthdate: "20220201", // yyyyMMdd格式sex: 1, // 0未知 1男 2女/不能为其他数字,默认为0paid: 1, // 是否付费    0未知 1是 2否/不能为其他数字,默认为0creationTime: 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:234213,longitude:23423
})

插件文档:https://www.jianshu.com/p/545786e91f43

支持定制,联系方式 QQ:252797991

如果觉得可以就点个

wrs-jpush极光推送原生app插件相关推荐

  1. Laravel 集成 JPush 极光推送指北

    2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...

  2. php集成jpush教程,Laravel 集成 JPush 极光推送指北

    我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...

  3. 解决Android Studio配置JPush极光推送错误方案

    1.在JPush极光推送官方下载 JPush SDK(jpush-android-release-2.1.7.zip) 2.解压下载好的压缩包解压并复制libs/jpush-android-2.1.7 ...

  4. Android Jpush极光推送

    平时我们开发手机客户端总是少不了与服务器进行交流,那当我们服务器数据有更新时候,客户端是怎么知道的呢,我们以前一般用两种方法: 1,客户端每隔一段时间向服务器发请求,检测数据是否发生变化,当发生变化的 ...

  5. iOS第三方集成之jpush极光推送

    iOS第三方集成之jpush极光推送 现在很多app都带推送功能,极光推送是很受大家欢迎的第三方推送,本文将为iOS初学者和初次设计开发推送的攻城狮们提供以下自己的使用心得. 大家可以边参考官方文档, ...

  6. JPush极光推送Java服务器端API

    菜鸟的春天 JPush极光推送Java服务器端API // 对android和ios设备发送 JPushClient jpush = new JPushClient(masterSecret, app ...

  7. Ionic JPush极光推送 插件实例

    1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ioni ...

  8. 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

    这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...

  9. app推送以及提示音java,springboot 整合 Jpush 极光推送

    产品简介: JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控制台发 ...

最新文章

  1. LOJ2586 APIO2018 选圆圈
  2. 在iOS端如何使用Charles用作http调试
  3. Linux下启 停 oracle 以及em控制台
  4. SQL - SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)[转]...
  5. bzoj1070: [SCOI2007]修车
  6. 模式识别,计算机视觉,计算机图形学,智能控制,信号处理,语音识别,知识处理,机器学习,数据挖掘领域区别
  7. Django----中间件详解
  8. 【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)
  9. PHP 使用程序进行数据库字典文件生成 导出数据库字典
  10. RMI原理揭秘之远程方法调用
  11. input 框 去掉下面的提示文字、提示选项
  12. 【Python自然语言处理】中文分词技术——规则分词
  13. ireport模块之间的动态传参及拼接SQL
  14. 【晨读】二次验收--I Can
  15. iOS笔记(一)GCD多线程:信号量和条件锁
  16. 数据库建模——用PowerDesigner对现有的数据库进行逆向工程
  17. 「小程序JAVA实战」小程序页面的上拉下拉刷新(50)
  18. 8数据提供什么掩膜产品_喜茶、茶百道、书亦、古茗8月外卖热销产品数据全解析...
  19. 【2019杭电多校第七场1011=HDU6656】Kejin Player(期望dp+递推+逆元)
  20. java需要知道哪些英语单词_70个学习JAVA必背的英语单词,了解下

热门文章

  1. 目标检测yolov3+文字识别CRNN 实现文本检测和识别
  2. MySQL中忘记用户密码怎么办?
  3. 鲁邦通机器人梯控,助力物业电梯安全管理
  4. 天猫店铺中同类产品布局操作?
  5. 为什么是onenote?微软最强大笔记应用onenote的强大之处
  6. python爬虫-淘宝商品密码(图文教程附源码)
  7. java:stringbuffer的常用方法
  8. 利用c#从网上爬取成语的解释
  9. 【BZOJ2393】Cirno的完美算数教室
  10. 惊艳于红警开源代码?赏心悦目的代码注释,我们也可以 !