更新记录
1.0.0(2026-10-21)
- 首发版本:基于 UTS 原生混编实现,同时兼容 uni-app 与 uni-app x。
- 完整提供常用保活能力:前台服务常驻通知、后台无声音乐保活、省电白名单引导、通知权限检查与设置页跳转、息屏定时任务、唤醒锁、WiFi 锁定、通知点击回调、前后台状态回调、屏幕亮灭状态回调。
- 新增扩展能力(相对同类保活插件):
- 保活等级策略(低/中/高)一键切换;
- 业务守护任务注册与移除(多任务统一调度);
- 心跳任务(面向长连接/推送场景);
- 保活时段窗口(时段外自动降级);
- 通知自定义操作按钮与点击回调;
- 应用崩溃回调与自动恢复;
- 网络状态监听、电源与电量监听;
- 保活运行日志与统计;
- 系统省电模式检测、后台运行限制一键检测、省电白名单组合引导;
- 前台服务通知优先级配置。
- 平台支持:Android 能力最完整;iOS / 鸿蒙提供基础实现与兼容占位。
平台兼容性
uni-app(4.26)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.26)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
保活增强版 KeeplivePlus(安卓 / iOS / 鸿蒙 后台保活扩展)
keeplive-plus 是一个用于提升应用后台存活率的保活增强插件,适用于需要在后台持续维持连接、定时任务、蓝牙通信、推送协同、WebSocket 长连接等场景。
本插件在同类保活插件常用能力的基础上扩展了:保活等级策略、业务守护任务、心跳任务、保活时段、通知操作按钮、崩溃自动恢复与回调、网络/电源监听、保活日志与统计等能力。
支持平台
| 平台 | 支持情况 |
|---|---|
| uni-app(Vue2 / Vue3) | ✅ |
| uni-app x | ✅ |
| Android | ✅ 能力最完整 |
| iOS | ✅ 基础实现(系统后台机制限制,部分能力为兼容占位) |
| 鸿蒙(HarmonyOS NEXT) | ✅ 基础实现(需主工程 EntryAbility 配置,见下文) |
兼容性说明:UTS 插件由 HBuilderX 编译,Android 端为 UTS + Kotlin 原生混编,iOS 端为 UTS + Swift 原生混编,鸿蒙端为 UTS 实现。
功能概述
常用保活能力(与同类插件一致的 API 命名,方便迁移)
- 前台服务常驻通知保活(可自定义标题、内容、图标、通道、分组等)
- 后台无声音乐保活(内置静音音频资源,可自定义音量与循环间隔)
- 省电白名单引导(检测 + 跳转授权页 + 返回结果回调)
- 通知权限检查与设置页跳转(兼容 Android 13+)
- 息屏后定时任务(系统定时器 / 原生闹钟定时器 / 时钟定时器 / worker 定时器)
- 唤醒锁 WakeLock / WiFi 锁定
- 通知点击回调、前后台状态回调、屏幕亮灭状态回调
- 一键跳转厂商保活设置(小米 / 华为 / OPPO / vivo 等)
- 开机自启(Android,需系统授权自启动权限)
扩展能力(本插件新增)
setKeepLevel保活等级策略:低(仅前台服务)/ 中(+定时器)/ 高(+唤醒锁+音乐),一键切换setKeepSchedule保活时段窗口:指定时间段内才执行高强度保活,其余时间自动降级addGuardTask/removeGuardTask业务守护任务:多个业务任务统一注册调度,随保活启停startHeartbeat/stopHeartbeat心跳任务:面向长连接 / 推送场景addNotificationAction通知操作按钮:通知栏可添加自定义按钮(如“停止保活”“去设置”),点击有回调onAppCrash应用崩溃回调 +setCrashRestartUIEnabled崩溃自动恢复onNetworkChange网络状态监听(wifi / mobile / none),便于断线重连onPowerChange电源与电量监听(充电 / 断开)onKeepStatusChange保活状态变化回调(running / stopped / restarted)getLogs/exportLogs/clearLogs保活运行日志(排查保活失效问题)getKeepStats保活统计(运行时长 / 重启次数 / 定时器触发次数等)isPowerSaveMode系统省电模式检测checkBackgroundRunning后台运行限制一键检测guideBatteryWhitelist省电白名单组合引导(检测 + 跳转 + 回调)setForegroundPriority前台服务通知优先级配置
使用前必读
- Android / iOS 需要使用自定义基座。本插件依赖原生能力,标准基座相关能力可能不生效。
- iOS 若用于 uni-app,需要在
manifest.json的“后台运行能力”中启用audio、fetch(插件的info.plist已声明,云打包时合并)。 - Android 端建议引导用户:锁定最近任务、开启自启动、允许后台运行、关闭省电限制(可使用本插件
goKeepLiveSetting/startAutoStart/startHighBattery/guideBatteryWhitelist辅助跳转)。 - Android 默认通知 id 为
6234542,可通过setNotifationId修改。 - 息屏保活、后台执行、通知常驻等行为会受到 ROM、系统版本、厂商限制影响,无法保证 100% 不被杀。
快速开始
引入插件
// #ifdef APP
import { KeepLive } from '@/uni_modules/keeplive-plus'
// #endif
最简启动(uni-app / uni-app x 通用写法)
// #ifdef APP
const keep = new KeepLive()
// 保活已运行时直接返回
if (keep.isRunning()) {
console.log('保活正在运行')
} else {
// 通知配置
keep.setTitle('保活运行中')
keep.setContent('应用正在后台稳定运行')
keep.setSmallIcon('keeplive_icon') // 小图标默认使用插件自带图标,也可放入自己的 drawable
// 唤醒锁
keep.setWakeLock(1, 'keeplive')
// 开机自启标记(需系统授权)
keep.setAutoStartEnable(true)
// 保活等级:0低 / 1中 / 2高
keep.setKeepLevel(2)
// 回调:前后台、屏幕、通知点击
keep.onAddBackgroundCallback(function(res) {
console.log('后台运行 ' + res)
})
keep.onAddScrrenListenerCallback(function(res) {
console.log('屏幕开启状态 ' + res)
})
keep.onAddNotificationClickListener(function(data) {
console.log('通知点击 ' + data)
})
// 通知权限:无权限则先引导开启,再启动保活
if (!keep.checkAppNotification()) {
keep.onOpenNotificationSetting(function(on) {
keep.register()
})
} else {
keep.register()
}
// 省电白名单
if (!keep.isIgnoringBatteryOptimizations()) {
keep.guideBatteryWhitelist(function(on) {
console.log('省电白名单引导结果 ' + on)
})
}
// 息屏定时任务:每 60 秒触发一次
keep.onStartCSystemTimer(60, function() {
console.log('定时任务触发')
})
}
// #endif
uni-app x / uvue 页面写法
uni-app x 页面优先使用 Compat 方法(页面层直接传普通 function 即可):
// #ifdef APP
import { KeepLive } from '@/uni_modules/keeplive-plus'
// #endif
// #ifdef APP
const keep = new KeepLive()
keep.onAddBackgroundCallbackCompat(function(res : boolean) {
console.log('后台运行 ' + res)
})
keep.onAddScrrenListenerCallbackCompat(function(res : boolean) {
console.log('屏幕状态 ' + res)
})
keep.onAddNotificationClickListenerCompat(function(data : string) {
console.log('通知点击 ' + data)
})
keep.onStartCSystemTimerCompat(60, function() {
console.log('定时任务触发')
})
// #endif
扩展功能示例
保活等级与时段
// 高等级保活:前台服务 + 定时器 + 唤醒锁 + 后台音乐
keep.setKeepLevel(2)
// 只在 8:00 - 24:00 执行高强度保活,其余时间自动降级
keep.setKeepSchedule(8, 24)
业务守护任务与心跳
// 注册守护任务:每 30 秒执行一次业务检查
keep.addGuardTask('订单状态检查', 30, function() {
console.log('订单状态检查执行')
})
// 移除守护任务
keep.removeGuardTask('订单状态检查')
// 心跳任务:每 10 秒一次(长连接保活)
keep.startHeartbeat(10, function() {
console.log('心跳发送')
})
keep.stopHeartbeat()
通知操作按钮
keep.addNotificationAction('stop', '停止保活')
keep.addNotificationAction('settings', '去设置')
keep.onNotificationActionClick(function(actionId) {
console.log('点击了按钮:' + actionId)
if (actionId === 'stop') {
keep.unregister()
}
})
keep.updateNotification()
崩溃自动恢复与日志统计
keep.setCrashRestartUIEnabled(true) // 崩溃后自动拉起
keep.onAppCrash(function(info) {
console.log('捕获崩溃:' + info)
})
// 保活日志与统计
console.log(keep.exportLogs())
console.log(keep.getKeepStats())
// 后台运行限制一键检测
const result = keep.checkBackgroundRunning()
console.log(result)
常用 API 一览
生命周期
| 方法 | 说明 |
|---|---|
register() |
启动保活主逻辑 |
unregister() |
停止保活逻辑并清理相关状态 |
restart() |
重新启动保活流程 |
isRunning() |
查询当前保活是否正在运行 |
通知与通道
setTitle setContent setSmallIcon setLargeIcon setNotifationId getNotifationId setChannelId setChannelName setChannelImportance setLockscreenVisibility setAllowBubbles enableVibration setNotifaicationSoundEnable setShowChannelBrage setAutoCancel setNotifationMsgGroup setNotifationExterData setGroupSummary preCreateNotificationChannel updateNotification hideNotification cancelNotifation cancelGroupNotifaon closeNotifation setNotifationAcIntent setNotifationBrodcastIntent setNewPendingIntent
通知操作按钮(扩展)
addNotificationAction(actionId, actionTitle) onNotificationActionClick(cb) onNotificationActionClickCompat(cb)
权限与系统设置
isHavePermision requestPermison requesMoretPermison checkAppNotification checkNotificationPer goNotificationSetting requestNotifationPer onOpenNotificationSetting onOpenNotificationSettingCompat isIgnoringBatteryOptimizations requestIgnoreBatteryOptimizations onRequestIgnoreBatteryOptimizations guideBatteryWhitelist(扩展)goKeepLiveSetting goAndroidSystemAppSetting startAutoStart startHighBattery getPkgName
回调
onAddNotificationClickListener onAddNotificationClickListenerCompat onAddBackgroundCallback onAddBackgroundCallbackCompat onAddScrrenListenerCallback onAddScrrenListenerCallbackCompat checkAppNotifationPer
状态监听(扩展)
onKeepStatusChange onKeepStatusChangeCompat onNetworkChange onNetworkChangeCompat onPowerChange onPowerChangeCompat onAppCrash onAppCrashCompat
定时器与线程
startCSystemTimer startCSystemTimerCompat onStartCSystemTimer onStartCSystemTimerCompat startAleraTask cancleAleraTask startKeepClcokTimer cancelKeepClcokTimer cancelAllKeepClcokTimer cancelCSystemTimer clearAllCTimer onStartWorkerTimer cancelWorker setWorkerEnabled onExecThreadTask onExecMainTask setWorkOnMainThread
守护任务与心跳(扩展)
addGuardTask(taskName, interval, cb) removeGuardTask(taskName) startHeartbeat(interval, cb) stopHeartbeat()
唤醒锁 / WiFi / 音乐
setWakeLock acquire releaseAcquire wifilock wifiunlock setBackgroundMusicEnabled setMusicEnabled setMusicId setMusicVol setMusicInterval hideRecentTask setAutoStartEnable
保活等级与策略(扩展)
setKeepLevel(level) getKeepLevel() setKeepSchedule(startHour, endHour) getKeepSchedule() setForegroundPriority(priority)
状态查询与调试
getLiveTime getLiveStr setDebug setCrashRestartUIEnabled crash startMicSevice toBackground doStartApplicationWithPackageName restartThisApp setBackgroundModes getBackgroundModes
系统检测与日志(扩展)
isPowerSaveMode() checkBackgroundRunning() getLogs() clearLogs() exportLogs() getKeepStats()
鸿蒙端额外配置
鸿蒙端如果只是引入插件并调用 keep.register(),但没有补充主工程 harmony-configs 里的 EntryAbility 配置,后台保活不会生效。
请在项目根目录新增或修改 harmony-configs/entry/src/main/module.json5,为 EntryAbility 增加 backgroundModes,并补充 ohos.permission.KEEP_BACKGROUND_RUNNING 权限声明(可先编译一次鸿蒙工程,从生成的鸿蒙工程中复制 entry/src/main/module.json5 到项目根目录的 harmony-configs/entry/src/main/module.json5 后再修改)。示例:
{
"module": {
"name": "entry",
"type": "entry",
"mainElement": "EntryAbility",
"deviceTypes": ["phone", "tablet", "2in1"],
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"exported": true,
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["action.system.home"]
}
],
"backgroundModes": [
"audioPlayback",
"dataTransfer"
]
}
],
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" },
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
"reason": "$string:EntryAbility_label",
"usedScene": { "abilities": ["EntryAbility"], "when": "always" }
}
]
}
}
调用时在 register() 前通过 setBackgroundModes 选择当前业务的后台任务模式:
keep.setBackgroundModes(['audioPlayback'])
keep.register()
运行时传入的模式必须已同时声明在主工程
EntryAbility.backgroundModes中;未声明的模式无法生效,修改声明后需要重新编译并安装应用。模式必须与真实业务一致,不要用空转定时器或高频 CPU 唤醒模拟业务,否则系统仍可能停止后台任务。
图标与资源放置
- Android 通知小图标资源放在:
uni_modules/keeplive-plus/utssdk/app-android/res(如drawable/keeplive_icon.xml),图标名称通过setSmallIcon('keeplive_icon')传入。 - 后台无声音乐资源放在:
uni_modules/keeplive-plus/utssdk/app-android/assets(默认keeplive_silent.wav),可通过setMusicId更换(文件名为musicId + '.wav')。
常见问题
- UTSCallback 在 uvue 页面里标红:通常是 HBuilderX 页面编辑器的语法服务对 UTSCallback 识别不完整,不代表编译失败。建议在 uvue 页面优先使用本插件提供的 Compat 方法,页面层统一直接写普通
function(...) {}回调。 - 标准基座运行无效:本插件依赖原生能力,运行到标准基座时相关能力可能不生效,请使用自定义基座。
- 息屏后定时任务不触发:部分 ROM 会限制息屏后的后台活动,请配合自启动、省电白名单、后台运行权限一起使用;Android 建议使用“系统定时器 + 闹钟定时器”组合。
- Android 13+ 通知不显示:需要先申请
POST_NOTIFICATIONS运行时权限,使用requestNotifationPer或onOpenNotificationSetting引导。 - 后台音乐无声音:默认使用静音音频,属于正常现象;如需可听音乐,请将音频文件放入 assets 并设置
setMusicId。
更新日志
见 changelog.md。
许可
仅供学习与合法业务场景使用。请遵守应用商店与各厂商后台运行相关政策,不得用于规避系统安全机制等违规用途。

收藏人数:
购买源码授权版(
试用
使用 HBuilder 导入示例项目
赞赏(0)
下载 510
赞赏 5
下载 12703634
赞赏 1957
赞赏
京公网安备:11010802035340号