uniapp在android ios保活,挂后台可运行

1. 为什么要用保活

android保活/ios保活,为应用程序提供一个稳定的后台运行环境,为您的应用程序保驾护航,在正常情况下,应用挂在后台,系统将会把应用暂停掉,里面的东西不执行,通讯中断,等。微信等一些在后台不被杀死,是因为在手机白名单内,手机厂商设置的他们不用被杀死,所以正常app,挂后台,锁屏会被杀掉进程。

如有不懂,插件有点复杂一些问题,不知道怎么安装,导入,可联系我

2. 保活教程

导入 保活推荐使用插件android-keeplive 或先试用 试用教程在下面

链接https://ext.dcloud.net.cn/plugin?id=20316,普通授权码已经全完够用

购买后导入在自己的项目里

点击导入普通授权插件

image-20250515094201460

打开hbuilder X


image-20250515094201460

最后选择你的项目,导入进去,可以选择导入vue2 vue3都支持

image-20250515094201460

然后插件就在项目里面了

插件支持uniapp/uniappx 双端

image-20250515094349804

使用 保活推荐使用插件android-keeplive

  1. 选择试用,绑定要试用的项目appid,

  2. 选择后下载到对应的本地项目,

  3. 按照文档 -》把插件引入项目(即 import { KeepLive } from ‘@/uni_modules/android-keeplive’ 需要先引入),

  4. 发布-》云打包-》选择制作基座-》打包等基座制作完成

  5. 运行 -》 运行到手机或模拟器-》运行到Androidapp基座-》选择使用自定义基座运行-》选择手机-》运行

    选择试用就是插件试用,示例项目就是一个dome,可以下载下去 使用看看

image-20250515094349804

选择试用,导入自己的项目里面

image-20250515094349804

导入之后注意!!!!!!!!!!!!!!!!!!!!!!!!!

导入之后需要打包自定义基座,然后运行在自定义基座中,否则导入会报错,找不到该插件

uniappx使用保活插件

一定要先导入,后打包自定义基座,才能使用该插件

// #ifdef APP
import { KeepLive } from '@/uni_modules/android-keeplive' // 放在页面导入的地方
// #endif

//<!-- ------------------------------下方代码需要放进方法中-------------------------------------------------- -->  
// #ifdef APP
var keep=new KeepLive();
keep.setTitle("app");
keep.setContent("app is runing");
// keep.setLargeIcon("icon");
keep.setSmallIcon("icon"); //图标名字  图标放在 插件下面的 uni_modules\android-keeplive\utssdk\app-android\res 文件夹下
keep.onAddBackgroundCallback(function(res:boolean){
    console.log("后台运行 "+res)

})
keep.onAddScrrenListenerCallback(function(res:boolean){
    console.log("屏幕开启状态 "+res)

})  
keep.setWakeLock(1,"keeptag");// 设置唤醒类型

if(!keep.checkAppNotification()){
    keep.onOpenNotificationSetting(function(res:boolean){
        keep.register();
        var ignoring=  keep.isIgnoringBatteryOptimizations();
        if(!ignoring){
            keep.requestIgnoreBatteryOptimizations();
        }
    })
}else{
    keep.register();
    var ignoring=  keep.isIgnoringBatteryOptimizations();
    if(!ignoring){
        keep.requestIgnoreBatteryOptimizations();
    }
}
// 稳定定时器 需要的用户使用(默认定时器1 )
keep.startCSystemTimer(120,function(){
    console.log("startCSystemTimer ");
    keep.acquire(1000);// 一直唤醒则无需执行这个
});
// 需要插件增加程序后台运行能力的可以加下面代码 想程序始终保持活性(即稳定推送 scocket等)(体验好) 还是建议用户打开系统设置 启动项 后台运行
//keep.wifilock();//部分手机可能会断
// 定时器时间改成3秒 去掉上方的
//keep.startCSystemTimer(3,function(){
//  console.log("startCSystemTimer ");
//  keep.acquire(1000);// 一直唤醒则无需执行这个
//});
// #endif

uniapp使用保活插件

// #ifdef APP
import { KeepLive } from '@/uni_modules/android-keeplive' // 放在页面导入的地方
// #endif

//<!-- ------------------------------下方代码需要放进方法中-------------------------------------------------- -->  
// #ifdef APP   
var keep=new KeepLive();
keep.setTitle("app");
keep.setContent("app is runing");
// keep.setLargeIcon("icon");
keep.setSmallIcon("icon"); //图标名字  图标放在 插件下面的 res/drawable 文件夹下
keep.onAddBackgroundCallback(function(res){
    console.log("后台运行 "+res)

})
keep.onAddScrrenListenerCallback(function(res){
    console.log("屏幕开启状态 "+res)

})  
keep.setWakeLock(1,"keeptag");// 设置唤醒类型

if(!keep.checkAppNotification()){
    keep.onOpenNotificationSetting(function(res){
        keep.register();
        var ignoring=  keep.isIgnoringBatteryOptimizations();
        if(!ignoring){
            keep.requestIgnoreBatteryOptimizations();
        }
    })
}else{
    keep.register();
    var ignoring=  keep.isIgnoringBatteryOptimizations();
    if(!ignoring){
        keep.requestIgnoreBatteryOptimizations();
    }
}
var ignoring=  keep.isIgnoringBatteryOptimizations();
if(!ignoring){
    keep.requestIgnoreBatteryOptimizations();
}
keep.startCSystemTimer(120,function(){
    console.log("startCSystemTimer ");
    keep.acquire(1000);// 一直唤醒则无需执行这个
});
// 需要插件增加程序后台运行能力的可以加下面代码 想程序始终保持活性(即稳定推送 scocket等)(体验好) 还是建议用户打开系统设置 启动项 后台运行
//keep.wifilock();//部分手机可能会断
// 定时器时间改成3秒 去掉上方的
//keep.startCSystemTimer(3,function(){
//  console.log("startCSystemTimer ");
//  keep.acquire(1000);// 一直唤醒则无需执行这个
//});
// #endif
需要gps定位用户 可合并作者定位插件(推荐使用作者定时器1 ,系统休眠后可执行)

他这里写的有问题 不能一起使用,注意千万别用,买了不能退,我就被坑了

应用省电,选择无限制,别选智能,使用api会弹出来让选,辅助

API属性解说

// #ifdef APP
import { KeepLive } from '@/uni_modules/android-keeplive' // 放在页面导入的地方
// #endif

//<!-- ------------------------------下方代码需要放进方法中-------------------------------------------------- -->  
// #ifdef APP   
var keep=new KeepLive();
注册开启运行

register

keep.register();
重启

restart

keep.restart();
取消运行

unregister

keep.unregister();
判断是否运行

isRunning

return boolean

var run=keep.isRunning();
判断通知权限是否开启(安卓有效,ios 无功能)

checkAppNotification

var on=keep.checkAppNotification();
打开应用通知设置(安卓有效,ios 无功能) 最好打开,通知用户

goNotificationSetting

keep.goNotificationSetting();
打开应用通知设置并返回状态(安卓有效,ios 无功能)

uniappx

    keep.onOpenNotificationSetting(function(on:boolean){

    })

uniapp

    keep.onOpenNotificationSetting(function(on){
    })
通过包名打开应用程序(安卓有效,ios 无功能)

doStartApplicationWithPackageName

参数1 应用包名 string

keep.doStartApplicationWithPackageName("com.test");
开启应用省电后台运行 (安卓有效,ios 无功能)

requestIgnoreBatteryOptimizations

keep.requestIgnoreBatteryOptimizations();
判断应用是否开启省电后台运行 (安卓有效,ios 无功能)

isIgnoringBatteryOptimizations

return boolean

var ignoring=  keep.isIgnoringBatteryOptimizations();
设置后台无声音乐是否开启 (安卓有效,ios 无功能)

setBackgroundMusicEnabled

参数1 boolean

keep.setBackgroundMusicEnabled(true);
是否隐藏通知栏 (弃用,后续删除)

hideNotification(安卓有效,ios 无功能)

参数1 boolean

keep.hideNotification(false);
静音通知

setNotifaicationSoundEnable

参数1 boolean

keep.setNotifaicationSoundEnable(true);

设置通知角标

keep.setShowChannelBrage(false);
设置通知栏 ChannelId 默认keeplive(安卓有效,ios 无功能)

setChannelId

参数1 string

 keep.setChannelId("keeplive");
更新通知栏

updateNotification

keep.setTitle("Test");
keep.setContent("test runing");
keep.updateNotification();
设置通知栏标题

setTitle

参数1 string

 keep.setTitle("title");
设置通知栏内容

setContent

参数1 string

keep.setContent("msg");
设置通知重要性(安卓有效,ios 无功能)

setChannelImportance

参数1 number 0-4 低到高

keep.setChannelImportance(3);
设置通知栏小图标(安卓有效,ios 无功能)

setSmallIcon

参数1 string 插件的res drawable 目录下 名称

keep.setSmallIcon("icon");
设置通知栏大图标(安卓有效,ios 无功能)

setLargeIcon

参数1 string 插件的res drawable 目录下 名称

keep.setLargeIcon("icon");
设置唤醒cpu类型(安卓有效,ios 无功能)

setWakeLock

参数1 number
1:保持CPU 运转,屏幕和键盘灯有可能是关闭的。

参数2 string tag

keep.setWakeLock(1,"tag");
唤醒cpu 需先设置唤醒cpu 类型(安卓有效,ios 无功能)

acquire

参数1 number 时间

keep.acquire(-1);
释放cpu 需先设置唤醒cpu 类型(安卓有效,ios 无功能)

releaseAcquire

keep.releaseAcquire();
后台背景音乐测试 启动保活之前调用 (安卓有效,ios 无功能)
keep.setMusicVol(0) // 0~1 范围
keep.setMusicId("music")   // 将音乐放进  插件目录 /res/raw/music.mp3  
主动退出应用后台运行,相当于单击home (安卓有效,ios 无功能)
keep.toBackground();
android 息屏准确执行定时器 (二者选择一个就可)

定时器1 android/iOS/ web 三端均可用无需判断平台

//开启定时器     60时间为秒
 keep.startCSystemTimer(60,function(){
    console.log("startCSystemTimer ")
});

//keep.cancelCSystemTimer();// 取消定时器
//keep.clearAllCTimer();  // 取消全部定时器

定时器2

// android 原生定时任何状态一秒误差, 开始时间 1000为1秒0是马上执行, 开启周期 65*1000, 循环时间 大于60s 精准有效 低于60秒偏差误差
 keep.startAleraTask(0,65*1000,function(){
    console.log("onAleraTaskListener ")
 }); 

    //取消循环定时
keep.cancleAleraTask()

定时器3 (待测试) 推荐 android/iOS/ web 微信小程序四端可用无需判断平台 ~~~ //开启定时器 3时间为秒 keep.startKeepClcokTimer(3,function(){ console.log("startCSystemTimer ") }); //keep.cancelKeepClcokTimer();// 取消定时器 //keep.cancelAllKeepClcokTimer(); // 取消全部定时器

获取插件存活时间
var liveTime=keep.getLiveTime();// 毫秒时间
隐藏最近任务(安卓有效,ios 无功能)

参数1 boolean true 为隐藏,false为显示

keep.hideRecentTask(true);// 隐藏
打开安卓系统应用设置 方便用户设置自启动(安卓有效,ios 无功能)
keep.goAndroidSystemAppSetting();

权限设置

本插件需要申请的系统权限列表:
<uses-permission android:name="android.permission.START_ACTIVITIES" />
 <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.GET_TASKS" />
   <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.SET_ALARM"/>
    <uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
     <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
      <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
       <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐