更新记录
1.0.3(2023-03-25)
1、解决同一个手机无法安装两个使用本插件的应用。 2、添加定位回调信息
1.0.2(2022-08-05)
1、解决启动通知栏监听异常问题。 2、解决启动保活顶部通知栏不显示问题。
1.0.1(2022-05-23)
1、新增短信监听功能 2、解决通知栏不显示问题
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
插件主要功能
- 该Android保活组件集成了无声音乐,前台服务、双进程守护、像素保活,jobs五种保活方式,只要用户不主动杀死程序基本可以保证不会死。
- 如果配置了自启动、电池管理等,即使用户主动关闭前端应用,后台进程也能够保持持续运行。
- 插件集成了通知监听功能,通知可以自动上报后台,也可以反馈前端,也可配置语音播报。
插件应用场景
- 应用需要尽量保持不被系统杀死。
- 应用需要随时监听推送消息,并对推送进行后续后续操作
插件应用行业
- 服务行业,服务端需要持续监听新订单。
- 电商行业,商家需要持续监听订单信息。
- 外卖行业,商家需要监听新订单等信息。
- 其他行业,比如需要实现个人免签支付用于监听微信支付宝通知等。 等等。。。
保活配置核心
由于Androiid手机型号和品牌多样,保活配置难度也是较大,不同型号不同品牌配置参数有较大差异,不过关键的几个点理解了基本上就并不会有啥问题。如下:
- 配置自启动,应用被杀掉以后要能够自动起来,这个配置是关键。
- 配置允许后台运行,不同手机操作不一致,如设置白名单、修改省电策略等等。目的是让应用能够尽量长久的在后台运行。 以上两个如果配置正确了,基本上能保证不被杀死,甚至关闭应用以后服务还能自动起来继续运行!
插件使用说明
- 需要先引入原生插件到uniapp项目 详细步骤访问链接地址
- https://ask.dcloud.net.cn/article/36106
1. 引入组件
首先参考上面的方法引入在线原生插件到项目中,然后再进行以下操作:
var KeepAliveModule = uni.requireNativePlugin("yh-notify")//保活监听组件
const modal = uni.requireNativePlugin('modal');//弹toast需要
var globalEvent = uni.requireNativePlugin('globalEvent');//监听回调需要
2. 监听事件
监听定时任务回调。
globalEvent.addEventListener('myEvent', function(e) {
console.log('myEvent' + JSON.stringify(e));
modal.toast({
message: "myEvent收到:" + JSON.stringify(e),
duration: 1.5
});
});
监听通知回调。
globalEvent.addEventListener('notify', function(e) {
console.log('notify' + JSON.stringify(e));
modal.toast({
message: "notify:" + JSON.stringify(e),
duration: 1.5
});
});
3. 开始保活
参数说明
参数 | 默认值 | 说明 |
---|---|---|
showNotification | false | 是否显示状态栏通知 |
notificationTitle | 应用名称 | 通知标题 |
notificationText | 通知内容 | |
runModel | 0 | 0-省点模式,省电一些,但保活效果会差一点;1-流氓模式,相对耗电,但可造就不死之身 |
intervalTime | 5000 | 定时任务时间间隔,单位:毫秒 |
使用示例
startKeepAlive() {
KeepAliveModule.startKeepAlive({
showNotification:true,
notificationTitle:"保活应用",
notificationText:"后台运行中",
runModel:1,//0-省电模式,1-流氓模式
intervalTime:5000,
},res=>{
modal.toast({
message: ret,
duration: 1.5
});
})
}
4. 停止保活
stopKeepAlive() {
var ret = KeepAliveModule.stopKeepAlive({})
modal.toast({
message: ret,
duration: 1.5
});
},
5. 电池白名单
inBatteryWhiteList() {
KeepAliveModule.inBatteryWhiteList((ret) => {
modal.toast({
message: ret,
duration: 1.5
});
})
}
6. 跳转电池设置
jumpBatterySetting() {
var ret = KeepAliveModule.jumpBatterySetting({})
modal.toast({
message: ret,
duration: 1.5
});
}
7. 跳转自启动设置
jumpAutoStart() {
var ret = KeepAliveModule.jumpAutoStart({})
modal.toast({
message: ret,
duration: 1.5
});
}
8. 判断通知是否打开(该通知未打开,系统无法接收应用该通知)
isNotificationEnabled() {
let ret=KeepAliveModule.isNotificationEnabled();
modal.toast({
message: ret,
duration: 1.5
});
}
9. 跳转通知设置页
openNotifySetting() {
KeepAliveModule.openNotifySetting();
}
10. 应用通知授权判断(通知未授权,无法获取到应用通知内容)
checkNotifySetting(){
let ret=KeepAliveModule.checkNotifySetting();
modal.toast({
message: ret,
duration: 1.5
});
},
11. 应用通知授权配置
goNotifySetting(){
KeepAliveModule.goNotifySetting();
},
12. 开始监听通知信息
参数说明
参数 | 默认 | 说明 |
---|---|---|
listenPkgs | 监听包名,格式如:"com.tencent.mm,com.xyz.abc",如果多个应用中间用逗号分隔,如果不填,则默认监听当前应用的通知 | |
ifPlayAudio | false | 是否播放音频,如果选择是,audioJsons必填,否则会报错 |
audioJsons | 音频内容,格式如下:"[{'title':'微信','audioUrl':'https://bjee0d8.mp3'}]",其中title表示通知标题信息,audioUrl表示播放的音频文件,达到不同通知播放播放不同音频,注意:音频文件务必使用网络音频文件 | |
ifUpload | false | 是否上报服务器 |
uploadUrl | 上报接口,post上传接口,默认上传主要定位数据,如http://xx/api/xxx | |
params | 其他参数,如"{'lat':'1','lng':'3'}" | |
headers | Http的header参数 |
通知信息默认上传参数
参数 | 类型 | 说明 |
---|---|---|
title | String | 通知标题 |
content | String | 通知内容 |
data | String | 通知数据内容,如果以上两个参数不满足可自行解析 |
使用示例
openNotifyListener(){
let ret=KeepAliveModule.openNotifyListener({
ifUpload: true,//是否上报服务器
ifPlayAudio:true,//是否播放音频
listenPkgs:"com.tencent.mm",//监听包名
audioJsons:"[{'title':'微信','audioUrl':'https://xxx0d8.mp3'}]",//音频文件
uploadUrl: "http://192.168.0.104/api/uploadXXX",//上报接口
params: "{'lat':'1','lng':'3'}",//其他参数
headers: "{'authorization':'Bearer eyJhbGciOiJBzpIm8A'}",
});
modal.toast({
message: ret,
duration: 1.5
});
},
13. 清空通知栏信息
clearNotify(){
KeepAliveModule.clearNotify();
},