更新记录
1.0.0(2026-10-17) 下载此版本
Android 保活:常驻通知 + 唤醒锁 + 息屏定时任务 + 电池白名单/通知权限引导
平台兼容性
uni-app(5.26)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | - | - | √ | 1.0.0 | √ | 1.0.0 | 4.4 | 1.0.0 | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
lj-keeplive · Android 后台保活
一行代码启动后台保活。不依赖任何第三方 SDK。
| 项 | 值 |
|---|---|
| 插件 ID | lj-keeplive |
| 当前版本 | 1.0.0 |
| 插件类型 | UTS API 插件 |
| 支持平台 | Android(App) |
| 第三方依赖 | 无 |
一、功能
| 功能 | 说明 |
|---|---|
| 前台服务保活 | 常驻通知栏通知 |
| 唤醒锁 | 息屏后保持运行,到期自动续期 |
| 息屏定时任务 | 按设定周期在后台触发回调 |
| 屏幕状态回调 | 屏幕点亮 / 熄灭时通知业务层 |
| 权限引导 | 通知权限申请、电池优化白名单、系统设置页跳转 |
适用场景:后台维持长连接、周期性上报、蓝牙通信、推送协同、息屏后的定时同步。
二、平台支持
| 平台 | 支持情况 |
|---|---|
| Android(app-vue / app-nvue,Vue2 / Vue3) | ✅ 支持(最低 Android 4.4 / API 19) |
| iOS | ❌ 不支持 |
| 鸿蒙 | ❌ 不支持 |
| H5、各小程序、快应用 | ❌ 不支持 |
三、使用前提
1. 必须使用自定义基座
标准基座不含插件的原生内容,运行会完全无效。
- 制作路径:HBuilderX → 运行 → 运行到手机或模拟器 → 制作自定义调试基座
- 手机上已装过旧基座时,先卸载再安装新的
2. 打包方式
只支持云端传统打包,不支持离线打包、不支持安心打包。
四、快速开始
最小用法
// #ifdef APP
import { register, unregister } from '@/uni_modules/lj-keeplive'
register() // 启动保活
unregister() // 停止保活
// #endif
完整用法(含权限引导)
// #ifdef APP
import {
register,
unregister,
isRunning,
getAliveSeconds,
getTickCount,
setNotification,
setSmallIcon,
setNotificationId,
setChannel,
setTimerInterval,
setWakeLockTimeout,
setDebug,
Tick,
onScreenStateChange,
isNotificationEnabled,
requestNotificationPermission,
isIgnoringBatteryOptimizations,
requestIgnoreBatteryOptimizations,
openNotificationSettings,
openAppSettings
} from '@/uni_modules/lj-keeplive'
// ---- 1. 配置(在 register 之前调用)----
setDebug(true)
setNotification('应用正在后台运行', '保活服务已启动')
setTimerInterval(60) // 后台定时任务周期(秒),0 表示关闭
setWakeLockTimeout(600) // 唤醒锁时长(秒),0 表示不使用
// ---- 2. 注册回调(只需注册一次)----
Tick((count) => {
console.log('定时任务触发,累计次数:', count)
})
onScreenStateChange((screenOn) => {
console.log(screenOn ? '屏幕已点亮' : '屏幕已熄灭')
})
// ---- 3. 申请通知权限后启动 ----
if (isNotificationEnabled()) {
start()
} else {
requestNotificationPermission((granted) => {
console.log('通知权限申请结果:', granted)
start()
})
}
function start() {
register()
// 引导加入电池优化白名单
if (!isIgnoringBatteryOptimizations()) {
requestIgnoreBatteryOptimizations()
}
}
// #endif
停止保活
// #ifdef APP
unregister()
// #endif
五、API 文档
5.1 配置项
以下方法建议在 register() 之前调用。
| 方法 | 参数 | 说明 |
|---|---|---|
setNotification |
title: string, content: string |
设置常驻通知的标题与内容。运行中修改后需重新调用 register() 才刷新 |
setSmallIcon |
name: string |
设置通知小图标的 drawable 资源名(不带扩展名),默认 ic_keeplive |
setNotificationId |
id: number |
设置通知 id,不同 id 会生成不同通知,默认 10001 |
setChannel |
id: string, name: string |
设置通知渠道 id 与名称。渠道属性首次创建后不可修改,改样式必须换新 id |
setWakeLockTimeout |
seconds: number |
唤醒锁时长(秒),默认 600。<= 0 表示不使用唤醒锁。运行中修改在下次续期时生效 |
setTimerInterval |
seconds: number |
后台定时任务周期(秒),默认 60。<= 0 表示关闭定时任务。运行中调用立即生效 |
setDebug |
on: boolean |
开关插件调试日志(输出到 HBuilderX 控制台),默认关闭 |
5.2 生命周期
| 方法 | 返回值 | 说明 |
|---|---|---|
register() |
void |
启动保活。可重复调用,会按最新配置重新启动 |
unregister() |
void |
停止保活并移除常驻通知。停止为异步过程,调用后 isRunning() 可能短暂仍为 true |
isRunning() |
boolean |
保活是否正在运行 |
getAliveSeconds() |
number |
本次已持续运行的秒数,未运行时返回 0 |
getTickCount() |
number |
本次运行累计触发的定时次数 |
5.3 回调
这两个方法注册的是持续触发的回调,只需注册一次;重复注册会覆盖上一次。
| 方法 | 参数 | 说明 |
|---|---|---|
onTimerTick |
callback: (count: number) => void |
每次后台定时任务触发时回调,count 为累计次数 |
onScreenStateChange |
callback: (screenOn: boolean) => void |
屏幕点亮 / 熄灭时回调,true 为点亮 |
5.4 权限与系统设置
| 方法 | 返回值 / 参数 | 说明 |
|---|---|---|
isNotificationEnabled() |
boolean |
通知是否可用。用户在系统里关闭通知后返回 false |
requestNotificationPermission |
callback: (granted: boolean) => void |
申请通知权限(Android 13+)。回调只触发一次;低版本或已授权时立即回调 true |
isIgnoringBatteryOptimizations() |
boolean |
是否已在电池优化白名单中 |
requestIgnoreBatteryOptimizations() |
void |
申请加入电池优化白名单,会弹出系统确认框 |
openNotificationSettings() |
void |
打开系统通知设置页 |
openAppSettings() |
void |
打开应用的系统设置详情页 |
六、默认值一览
| 配置 | 默认值 |
|---|---|
| 通知标题 | 应用正在后台运行 |
| 通知内容 | 保活服务已启动 |
| 通知小图标 | ic_keeplive |
| 通知 id | 10001 |
| 通知渠道 id | lj_keeplive |
| 通知渠道名称 | 后台保活 |
| 唤醒锁时长 | 600 秒 |
| 定时任务周期 | 60 秒 |
| 调试日志 | 关闭 |
七、通知图标
- 插件内置图标:
utssdk/app-android/res/drawable/ic_keeplive.xml setSmallIcon()传入的是 drawable 资源名,不带扩展名- 换成自己的图标:把同名图标文件放到你项目根目录的
nativeResources/android/res/drawable/(或mipmap/)下即可覆盖,保持资源名一致,无需改代码 - 图标解析顺序:
drawable同名资源 →mipmap同名资源 → 应用自身图标
八、权限说明
插件会在打包时声明以下 Android 权限:
| 权限 | 用途 |
|---|---|
android.permission.FOREGROUND_SERVICE |
前台服务基础权限 |
android.permission.FOREGROUND_SERVICE_SPECIAL_USE |
Android 14+ 前台服务类型 specialUse 对应权限 |
android.permission.POST_NOTIFICATIONS |
Android 13+ 展示常驻通知 |
android.permission.WAKE_LOCK |
保持息屏后 CPU 运行 |
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS |
引导用户将应用加入电池优化白名单 |
如何修改:
- 移除电池白名单权限:删除插件内置
AndroidManifest.xml中对应的<uses-permission>,并同步删除项目manifest.json里app-plus.distribute.android.permissions的同名项。注意该权限属于敏感权限,Google Play 上架审核会重点审查,国内应用市场一般不受影响。 - 改前台服务类型:若你的应用具备真实的后台音频播放或数据传输业务,可把
AndroidManifest.xml中的android:foregroundServiceType="specialUse"改为mediaPlayback/dataSync,并同步替换权限为FOREGROUND_SERVICE_MEDIA_PLAYBACK/FOREGROUND_SERVICE_DATA_SYNC。注意 Android 15 对dataSync有「24 小时内累计 6 小时」的强制停止限制。 - Google Play 上架:
specialUse类型需要在 Play Console 中填写相同用途的使用理由。
九、常见问题
Q1:调用 register() 后毫无反应,通知栏也没有通知?
请确认已使用自定义基座运行。标准基座不含插件的原生内容,制作基座后在安装前先卸载旧基座。
Q2:服务已启动,但通知栏看不到常驻通知?
用 isNotificationEnabled() 检查、requestNotificationPermission() 申请通知权限。也可检查用户是否单独关闭了该通知渠道。
Q3:息屏一段时间后定时任务不再触发?
用 getTickCount() 判断是否还在增长。若不再增长,依次检查:
setWakeLockTimeout()是否为0或负数- 是否已加入电池优化白名单(
isIgnoringBatteryOptimizations()) - 系统设置里是否允许「自启动」「后台运行」,是否把应用锁定在最近任务列表
- 是否被厂商的「省电策略」「应用智能省电」限制
Q4:改了通知标题,为什么通知里没变?
文案变更后需要重新调用一次 register()。若要改铃声、震动等渠道属性,必须通过 setChannel() 换一个新的 channelId。
Q5:unregister() 之后可以立刻 register() 吗?
可以。
Q6:能保证 App 永不被杀吗?
不能。保活只能提升存活率,无法对抗用户的主动结束、系统资源紧张与厂商 ROM 策略。
十、已知限制
- 仅支持 Android,iOS / 鸿蒙 / H5 / 小程序均不支持。
- 仅支持云端传统打包,不支持离线打包、安心打包。
- 应用被系统回收后重新启动保活时,会回退到默认配置,请在启动时重新下发配置。
- 定时任务的实际触发间隔受系统调度影响,建议周期不小于 30 秒。
- 唤醒锁会带来额外耗电,请按业务需要设置合理的
setWakeLockTimeout()值。
十一、隐私声明
- 不采集、不存储、不上传任何用户数据
- 不含任何广告 SDK
- 不发起任何网络请求
- 仅使用上文列出的 Android 系统权限,用途均已在权限表中说明
十二、更新日志
1.0.0
- 首次发布。
- 支持前台服务 + 常驻通知保活。
- 支持唤醒锁与到期自动续期。
- 支持息屏 / 亮屏监听与屏幕状态回调。
- 支持后台定时任务。
- 提供通知权限申请、电池优化白名单引导、系统设置页跳转。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 20
赞赏 0
下载 12687952
赞赏 1956
赞赏
京公网安备:11010802035340号