更新记录

1.0.5(2023-03-25)

1、解决使用同一个插件的两个应用无法安装在同一台手机问题 2、添加定位回调显示

1.0.4(2022-04-20)

1、解决高德隐私合规性问题

1.0.3(2021-11-30)

1、解决锁屏开屏后会触发打开应用后自动关闭问题。

查看更多

平台兼容性

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手机型号和品牌多样,保活配置难度也是较大,不同型号不同品牌配置参数有较大差异,不过关键的几个点理解了基本上就并不会有啥问题。如下:
  • 配置自启动,应用被杀掉以后要能够自动起来,这个配置是关键。
  • 配置允许后台运行,不同手机操作不一致,如设置白名单、修改省电策略等等。目的是让应用能够尽量长久的再后台运行。 以上连个如果设置合理了,基本上能保证不被杀不死,甚至关闭应用以后服务还能自动起来继续运行!

插件后续规划

1、新增推送监听功能。 2、新增蓝牙打印功能。

插件使用说明

  • 需要先引入原生插件到uniapp项目 详细步骤访问链接地址
  • https://ask.dcloud.net.cn/article/36106

特别说明

  • 目前高德地图key的配置放在导入插件包时进行配置,如果不需要使用定位功能,则任意输入参数即可
  • App模块配置中,Geolocation或者Map至少需要开启配置一项,否则插件无法进行定位的。

1. 引入组件

首先参考上面的方法引入在线原生插件到项目中,然后再进行以下操作:

var KeepAliveModule = uni.requireNativePlugin("yh-alive")//保活组件
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
       });
   });

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. 开始位置监听

参数说明

参数 默认 说明
intervalTime 2000 定时间隔时间
gaodeApiKey 高德地图Key
locationMode 1 定位模式 1:高精度 2:仅网络(低功耗)3:仅设备
purpose 0 定位场景 0:无、1:签到、2:出行、3:运动
ifUpload false 是否上报服务器
uploadUrl 上报接口,post上传接口,默认上传主要定位数据,如http://xx/api/xxx
params 其他参数,如"{'lat':'1','lng':'3'}"
headers Http的header参数

定位信息默认上传参数

参数 类型 说明
longitude double 经度
latitude double 纬度
accuracy float 精度
address String 地址
speed float 速度
county String 国家
province String
city String 城市
district String 城区
street String 街道
streetNum String 街道门牌号
cityCode String 城市编码
adCode String 区域编码

使用示例

 startLocation() {
    KeepAliveModule.startLocation({
        intervalTime: 5000,//定位间隔时间
        gaodeApiKey: "0eef1axxxxxx7964",//高德地图Key,已停用,引入插件配置
        locationMode: 1,//定位模式
        purpose: 0,//定位场景
        ifUpload: true,//是否上报服务器
        uploadUrl: "http://xx:8080/api/reportLocation",//上报接口
        params: "{'lat':'1','lng':'3'}",//其他参数
        headers: "{'authorization1':'Bearer xOHeJhg'}",
    }, function(res) {
        console.log("启用结果:", res);
    });
}

6. 停止监听

stopLocation() {
    let ret = KeepAliveModule.stopLocation();
    modal.toast({
        message: "停止定位服务",
        duration: 1.5
    });
}

7. 获取当前位置

getCurrentLocation() {
    let ret = KeepAliveModule.getCurrentLocation();
    modal.toast({
        message: ret,
        duration: 1.5
    });
}

8. 电池白名单

inBatteryWhiteList() {
    KeepAliveModule.inBatteryWhiteList((ret) => {
        modal.toast({
            message: ret,
            duration: 1.5
        });
    })
}

9. 跳转电池设置

jumpBatterySetting() {
    var ret = KeepAliveModule.jumpBatterySetting({})
    modal.toast({
        message: ret,
        duration: 1.5
    });
}

10. 跳转自启动设置

jumpAutoStart() {
    var ret = KeepAliveModule.jumpAutoStart({})
    modal.toast({
        message: ret,
        duration: 1.5
    });
}

11. 检查定位服务/权限

返回参数说明

参数 类型 说明
service boolean 定位服务是否开启,true-已开启,其他-未开启
location boolean 定位权限是否已授权,true-已授权,其他-未授权

使用示例

 checkLocationPermission() {
        KeepAliveModule.checkLocationPermission(res => {
            modal.toast({
                message: "定位服务:" + res.service + ",定位权限:" + res.location,
                duration: 1.5
            });
        });
    }

12. 跳转定位服务开启页面

toOpenGps(){
    let ret = KeepAliveModule.toOpenGps();
    modal.toast({
        message: "跳转定位服务",
        duration: 1.5
    });
}

13. 获取定位权限

requireLocationPermission(){
    let ret = KeepAliveModule.requireLocationPermission();
}

14. 判断通知是否打开

isNotificationEnabled() {
    let ret=KeepAliveModule.isNotificationEnabled();
    modal.toast({
        message: ret,
        duration: 1.5
    });
}

15. 调整通知设置页

 openNotifySetting() {
    KeepAliveModule.openNotifySetting();
}

隐私、权限声明

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_COARSE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <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> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

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

1、插件不采集任何数据。 2、插件定位功能使用高德定位SDK,参考其官方网站 https://lbs.amap.com/ 3、插件定位功能使用高德定位SDK,启动时需要获取网络状态、访问Wi-Fi状态、位置信息、访问粗略位置、访问精准定位、读取手机状态和身份,其隐私协议参考 https://lbs.amap.com/agreement/compliance

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

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