主题
LimeKeepAlive 应用保活
一个跨平台的应用保活解决方案,支持 Android 帮助您的应用在后台保持活跃状态,确保关键任务和服务不被系统杀死。
功能概述
本模块提供以下保活功能:
Android 平台:
- 前台服务保活
- 音乐播放保活
- 一像素保活(Android P 以下)
- WorkManager 保活
- 电池优化白名单
- 崩溃自动重启
iOS 平台:
- 后台任务延期
- 音频播放保活
- 定时器保活
- 网络请求保活
- 本地通知保活
文档链接
📚 组件详细文档请访问以下站点:
安装方法
使用方法
js
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)
使用示例
基本使用
html
<template>
<view class="container">
<button @click="openSettings">打开保活设置</button>
<button @click="stopService">停止保活服务</button>
<button @click="restartService">重启保活服务</button>
</view>
</template>
js
// 保活服务实例
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();
};
高级配置
js
// 配置通知
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 系统限制严格,无法实现完全的后台保活
- 使用推送通知唤醒应用
- 合理设置音频间隔,延长保活时间
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() | ![]() |