wrs-jpush极光推送原生app插件
功能
- 支持通知消息、自定义消息,收到消息/点击消息通知回调
- 别名alias、标签tag管理、角标badge、Channel配置
- 厂家推送、厂商通道注册结果、token回调
- 支持app杀死时由点击消息启动app跳到对应消息详情页
- 权限通知判断、跳到通知权限页面
- 获取RegistrationID、设置手机号
- 本地通知管理、清除通知
- 注册/反注册推送服务、停止/恢复推送服务
- 用户属性管理、设置推送时间/通知静默时间、省电模式
- 统计分析API、保留最近通知条数、CrashLog闪退奔溃日志上报
- 自定义铃声、地理围栏
- 极光统计,页面出现/结束,计数/计算/浏览/登陆/注册/用户信息等统计
极光推送
集成步骤:
1. 极光开发者服务平台创建和配置应用https://www.jiguang.cn/portal/#/dev/app/4210b615342b77dde3dcc43d/info
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
插件参数说明
- 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
- 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厂商推送方案:
- 根据极光文档https://docs.jiguang.cn/jpush/client/Android/android_3rd_param 前往各个厂家开发者平台上创建应用
- 在极光开发者服务平台的应用里配置各个厂家的AppID、APPKey、AppSecret
- 在插件里配置各个厂商应用的AppID、APPKey、AppSecret
- 受限于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()
极光统计
集成步骤
- 在集成上面极光统计的的基础上,在极光开发者平台对应的应用设置里找到"推送设置",分别绑定Android的包名和iOS的Bundle ID(即包名)
- 计数事件和计算事件需要现在极光开发者平台上创建事件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插件相关推荐
- Laravel 集成 JPush 极光推送指北
2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...
- php集成jpush教程,Laravel 集成 JPush 极光推送指北
我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...
- 解决Android Studio配置JPush极光推送错误方案
1.在JPush极光推送官方下载 JPush SDK(jpush-android-release-2.1.7.zip) 2.解压下载好的压缩包解压并复制libs/jpush-android-2.1.7 ...
- Android Jpush极光推送
平时我们开发手机客户端总是少不了与服务器进行交流,那当我们服务器数据有更新时候,客户端是怎么知道的呢,我们以前一般用两种方法: 1,客户端每隔一段时间向服务器发请求,检测数据是否发生变化,当发生变化的 ...
- iOS第三方集成之jpush极光推送
iOS第三方集成之jpush极光推送 现在很多app都带推送功能,极光推送是很受大家欢迎的第三方推送,本文将为iOS初学者和初次设计开发推送的攻城狮们提供以下自己的使用心得. 大家可以边参考官方文档, ...
- JPush极光推送Java服务器端API
菜鸟的春天 JPush极光推送Java服务器端API // 对android和ios设备发送 JPushClient jpush = new JPushClient(masterSecret, app ...
- Ionic JPush极光推送 插件实例
1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ioni ...
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...
- app推送以及提示音java,springboot 整合 Jpush 极光推送
产品简介: JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控制台发 ...
最新文章
- LOJ2586 APIO2018 选圆圈
- 在iOS端如何使用Charles用作http调试
- Linux下启 停 oracle 以及em控制台
- SQL - SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)[转]...
- bzoj1070: [SCOI2007]修车
- 模式识别,计算机视觉,计算机图形学,智能控制,信号处理,语音识别,知识处理,机器学习,数据挖掘领域区别
- Django----中间件详解
- 【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)
- PHP 使用程序进行数据库字典文件生成 导出数据库字典
- RMI原理揭秘之远程方法调用
- input 框 去掉下面的提示文字、提示选项
- 【Python自然语言处理】中文分词技术——规则分词
- ireport模块之间的动态传参及拼接SQL
- 【晨读】二次验收--I Can
- iOS笔记(一)GCD多线程:信号量和条件锁
- 数据库建模——用PowerDesigner对现有的数据库进行逆向工程
- 「小程序JAVA实战」小程序页面的上拉下拉刷新(50)
- 8数据提供什么掩膜产品_喜茶、茶百道、书亦、古茗8月外卖热销产品数据全解析...
- 【2019杭电多校第七场1011=HDU6656】Kejin Player(期望dp+递推+逆元)
- java需要知道哪些英语单词_70个学习JAVA必背的英语单词,了解下
热门文章
2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...
我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...
1.在JPush极光推送官方下载 JPush SDK(jpush-android-release-2.1.7.zip) 2.解压下载好的压缩包解压并复制libs/jpush-android-2.1.7 ...
平时我们开发手机客户端总是少不了与服务器进行交流,那当我们服务器数据有更新时候,客户端是怎么知道的呢,我们以前一般用两种方法: 1,客户端每隔一段时间向服务器发请求,检测数据是否发生变化,当发生变化的 ...
iOS第三方集成之jpush极光推送 现在很多app都带推送功能,极光推送是很受大家欢迎的第三方推送,本文将为iOS初学者和初次设计开发推送的攻城狮们提供以下自己的使用心得. 大家可以边参考官方文档, ...
菜鸟的春天 JPush极光推送Java服务器端API // 对android和ios设备发送 JPushClient jpush = new JPushClient(masterSecret, app ...
1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ioni ...
这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...
产品简介: JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控制台发 ...