更新记录

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:未测试 ×

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


插件主要功能

  • 该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();
},

隐私、权限声明

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

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

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

插件不采集任何数据

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

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