更新记录
1.0.3(2022-11-16)
1 增加极光统计模块,页面出现/结束,计数/计算/浏览/登陆/注册/用户信息等统计
1.0.2(2022-11-03)
- 去除registerJPushClickRemoteMsgCallback接口,统一使用jpush.registerCallback接口作为回调,请各位使用者适配
- 优化和新增功能:
- 支持通知消息、自定义消息,收到消息/点击消息通知回调
- 别名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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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
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集不集成都可以
插件参数说明
- 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本地离线打包方式,具体方案请联系作者
app杀死时,点击通知栏消息启动app处理对应消息业务跳到对应消息详情页
ios
在iOS上,当app被kill后,还是可以收到通过极光发来的苹果厂家消息,点击消息启动app时,在设置完回调后jpush.registerCallback((resp) => {}),会第一时间回调onLaunchAppWithMessage方法
Android
在Android上,当app被kill后,还是可以收到极光通过Android各厂商推送来的厂家消息,如果要处理对应的消息业务,需要发送极光的Intent(推荐)或DeepLink(不推荐)类型的消息插件里才能接收到消息,在设置完回调后jpush.registerCallback((resp) => {}),会第一时间回调onIntentOrDeepLinkMessageOpened方法
-
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
-
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方案参考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()
极光统计
集成步骤
- 在集成上面极光统计的的基础上,在极光开发者平台对应的应用设置里找到"推送设置",分别绑定Android的包名和iOS的Bundle ID(即包名)
- 计数事件和计算事件需要现在极光开发者平台上创建事件ID(eventId),这样才能跟接口里的eventId对应上
- 插件集成步骤请参考https://www.cnblogs.com/wenrisheng/p/
-
官方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