更新记录
0.0.3(2025-09-24)
- chore: 更新文档
0.0.2(2025-09-24)
- feat: 支持ios
0.0.1(2025-09-24)
- 首次发布
- 支持 Android应用保活功能
- 提供多种保活策略:前台服务、音频播放、一像素活动等
平台兼容性
uni-app(4.71)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | 5.0 | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.74)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | 5.0 | - | - | - |
lime-keep-alive 应用保活
一个跨平台的应用保活解决方案,支持 Android 帮助您的应用在后台保持活跃状态,确保关键任务和服务不被系统杀死。
功能概述
本模块提供以下保活功能:
-
Android 平台:
- 前台服务保活
- 音乐播放保活
- 一像素保活(Android P 以下)
- WorkManager 保活
- 电池优化白名单
- 崩溃自动重启
-
iOS 平台:
- 后台任务延期
- 音频播放保活
- 定时器保活
- 网络请求保活
- 本地通知保活
文档链接
📚 组件详细文档请访问以下站点:
安装方法
- 在 uni-app 插件市场中搜索并导入
lime-keep-alive
- 请先在页面上引入插件后再自定义基座
使用方法
import { useKeepAlive, type UseKeepAliveOptions } from '@/uni_modules/lime-keep-alive'
// 初始化保活服务
const keepAlive = useKeepAlive({
success: (res) => {
console.log('保活服务启动成功:', res)
},
fail: (err) => {
console.log('保活服务启动失败:', err)
}
} as UseKeepAliveOptions)
使用示例
基本使用
<template>
<view class="container">
<button @click="openSettings">打开保活设置</button>
<button @click="stopService">停止保活服务</button>
<button @click="restartService">重启保活服务</button>
</view>
</template>
// 保活服务实例
let keepAlive = useKeepAlive({
success: (res) => {
console.log('保活服务启动成功:', res);
}
} as UseKeepAliveOptions);
// 设置调试模式
keepAlive.isDebug(true);
// 设置通知信息
keepAlive.setTitle('我的应用');
keepAlive.setContent('正在后台运行');
// 添加前后台切换回调
keepAlive.addBackgroundCallback((isBackground) => {
console.log('应用切换到' + (isBackground ? '后台' : '前台'));
});
// 必须注册
keep.register()
// 打开保活设置
const openSettings = () => {
keepAlive.openKeepLive();
};
// 停止保活服务
const stopService = () => {
keepAlive.unregister();
};
// 重启保活服务
const restartService = () => {
keepAlive.restart();
};
高级配置
// 配置通知
keepAlive.setTitle('我的应用');
keepAlive.setContent('正在后台运行中...');
keepAlive.setChannelId('my_keep_alive_channel');
keepAlive.setChannelName('应用保活通知');
// Android 平台特有配置
if (uni.getSystemInfoSync().platform === 'android') {
// 设置小图标(Android) 小图标需要放在插件目录uni_modules\lime-keep-alive\utssdk\app-android\res\drawable里。
keepAlive.setSmallIcon('notification_icon');
// 请求忽略电池优化
if (!keepAlive.isIgnoringBatteryOptimizations()) {
keepAlive.requestIgnoreBatteryOptimizations();
}
// 配置一像素保活
keepAlive.setOnePixEnabled(true);
// 配置 WorkManager
keepAlive.setWorkerEnabled(true);
// 配置崩溃自动重启
keepAlive.setCrashRestartUIEnabled(true);
}
// 配置音频保活
keepAlive.setMusicEnabled(true);
keepAlive.setMusicInterval(60000); // 60秒间隔
keepAlive.setBackgroundMusicEnabled(true);
API 参考
核心方法
方法名 | 说明 | 参数 | 平台支持 |
---|---|---|---|
isRunning() |
检查保活服务是否在运行 | 无 | Android/iOS |
register() |
注册保活服务 | 无 | Android/iOS |
unregister() |
注销保活服务 | 无 | Android/iOS |
restart() |
重启保活服务 | 无 | Android/iOS |
updateNotification() |
更新通知内容 | 无 | Android/iOS |
addBackgroundCallback(cb) |
添加前后台切换回调 | cb : 回调函数,参数为布尔值,表示是否在后台 |
Android/iOS |
addCallback(cb, work?) |
添加定期执行的回调(未实现) | cb : 回调函数work : 可选的工作计数回调 |
Android |
isDebug(isDebug) |
设置调试模式 | isDebug : 是否启用调试模式 |
Android/iOS |
通知配置
方法名 | 说明 | 参数 | 平台支持 |
---|---|---|---|
setTitle(title) |
设置通知标题 | title : 标题文本 |
Android/iOS |
setContent(content) |
设置通知内容 | content : 内容文本 |
Android/iOS |
setChannelId(channelId) |
设置通知渠道ID | channelId : 渠道ID |
Android |
setChannelName(channelName) |
设置通知渠道名称 | channelName : 渠道名称 |
Android |
setSmallIcon(icon) |
设置通知小图标(仅支持插件目录的资源) | icon : 图标资源名称 |
Android |
setLargeIcon(icon) |
设置通知大图标(支持本地资源) | icon : 图标资源名称 |
Android |
hideNotification(hide) |
隐藏通知 | hide : 是否隐藏 |
Android/iOS |
hideNotificationAfterO(hide) |
隐藏 Android 8.0+ 通知 | hide : 是否隐藏 |
Android |
setNotification() |
使用自定义通知 | 无 | Android |
setNotificationChannel() |
使用自定义通知渠道 | 无 | Android |
setNotificationClick() |
设置通知点击事件 | 无 | Android |
setPendingIntent() |
设置通知点击意图 | 无 | Android |
openNotificationSettings() |
打开通知设置页面 | 无 | Android/iOS |
音频保活配置
方法名 | 说明 | 参数 | 平台支持 |
---|---|---|---|
setMusicEnabled(enabled) |
启用/禁用音频保活 | enabled : 是否启用 |
Android/iOS |
setBackgroundMusicEnabled(enabled) |
启用/禁用后台音乐 | enabled : 是否启用 |
Android/iOS |
setMusicInterval(time) |
设置音乐播放间隔 | time : 间隔时间(毫秒) |
Android/iOS |
setMusic() |
使用自定义音乐 | 无 | Android |
Android 特有配置
方法名 | 说明 | 参数 | 平台支持 |
---|---|---|---|
setOnePixEnabled(enabled) |
启用/禁用一像素保活 | enabled : 是否启用 |
Android |
setWorkerEnabled(enabled) |
启用/禁用 WorkManager | enabled : 是否启用 |
Android |
setCrashRestartUIEnabled(enabled) |
启用/禁用崩溃重启 | enabled : 是否启用 |
Android |
setServiceId(serviceId) |
设置服务ID | serviceId : 服务ID |
Android |
setWorkOnMainThread(enabled) |
设置回调在主线程执行 | enabled : 是否在主线程 |
Android |
usePreviousConfig(usePreviousConfig) |
使用上次配置 | usePreviousConfig : 是否使用 |
Android |
isIgnoringBatteryOptimizations() |
检查是否忽略电池优化 | 无 | Android |
requestIgnoreBatteryOptimizations() |
请求忽略电池优化 | 无 | Android |
openKeepAliveSettings() |
打开保活设置页面 | 无 | Android/iOS |
WakeLock 相关 (Android)
方法名 | 说明 | 参数 | 平台支持 |
---|---|---|---|
setWakeLock(state, tag) |
设置 WakeLock | state : 状态tag : 标签 |
Android |
wakeLockAcquire() |
获取 WakeLock | 无 | Android |
wakeLockAcquire(time) |
获取指定时间的 WakeLock | time : 时间(毫秒) |
Android |
wakeLockRelease() |
释放 WakeLock | 无 | Android |
注意事项
-
Android 平台:
- 不同厂商的系统对后台应用有不同的限制策略,保活效果可能因设备而异
- 建议引导用户手动设置应用自启动、后台运行权限
- 部分功能在高版本 Android 系统上可能受限
-
iOS 平台:
- iOS 系统对后台应用有严格限制,保活时间有限
- 音频播放是最有效的保活方式,但需要合理使用
- 建议结合多种保活方式以获得最佳效果
-
通用注意事项:
- 合理使用保活功能,避免过度消耗用户设备电量
- 在应用真正需要后台运行时才启用保活服务
- 提供明确的用户界面,让用户知道应用在后台运行及其原因
常见问题
-
保活服务无法启动
- 检查是否已正确引入插件
- 确认是否使用了自定义基座
- 查看控制台是否有相关错误信息
-
Android 保活效果不佳
- 引导用户设置电池优化白名单
- 引导用户设置自启动权限
- 尝试启用多种保活方式组合使用
-
iOS 保活时间有限
- iOS 系统限制严格,无法实现完全的后台保活
- 使用推送通知唤醒应用
- 合理设置音频间隔,延长保活时间
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() |
![]() |