Skip to content

LimeKeepAlive 应用保活

一个跨平台的应用保活解决方案,支持 Android 帮助您的应用在后台保持活跃状态,确保关键任务和服务不被系统杀死。

功能概述

本模块提供以下保活功能:

  • Android 平台

    • 前台服务保活
    • 音乐播放保活
    • 一像素保活(Android P 以下)
    • WorkManager 保活
    • 电池优化白名单
    • 崩溃自动重启
  • iOS 平台

    • 后台任务延期
    • 音频播放保活
    • 定时器保活
    • 网络请求保活
    • 本地通知保活

文档链接

📚 组件详细文档请访问以下站点:

安装方法

  1. 在 uni-app 插件市场入口 中搜索并导入 lime-keep-alive
  2. 请先在页面上引入插件后再自定义基座

使用方法

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)设置通知渠道IDchannelId: 渠道IDAndroid
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)启用/禁用 WorkManagerenabled: 是否启用Android
setCrashRestartUIEnabled(enabled)启用/禁用崩溃重启enabled: 是否启用Android
setServiceId(serviceId)设置服务IDserviceId: 服务IDAndroid
setWorkOnMainThread(enabled)设置回调在主线程执行enabled: 是否在主线程Android
usePreviousConfig(usePreviousConfig)使用上次配置usePreviousConfig: 是否使用Android
isIgnoringBatteryOptimizations()检查是否忽略电池优化Android
requestIgnoreBatteryOptimizations()请求忽略电池优化Android
openKeepAliveSettings()打开保活设置页面Android/iOS

WakeLock 相关 (Android)

方法名说明参数平台支持
setWakeLock(state, tag)设置 WakeLockstate: 状态
tag: 标签
Android
wakeLockAcquire()获取 WakeLockAndroid
wakeLockAcquire(time)获取指定时间的 WakeLocktime: 时间(毫秒)Android
wakeLockRelease()释放 WakeLockAndroid

注意事项

  1. Android 平台

    • 不同厂商的系统对后台应用有不同的限制策略,保活效果可能因设备而异
    • 建议引导用户手动设置应用自启动、后台运行权限
    • 部分功能在高版本 Android 系统上可能受限
  2. iOS 平台

    • iOS 系统对后台应用有严格限制,保活时间有限
    • 音频播放是最有效的保活方式,但需要合理使用
    • 建议结合多种保活方式以获得最佳效果
  3. 通用注意事项

    • 合理使用保活功能,避免过度消耗用户设备电量
    • 在应用真正需要后台运行时才启用保活服务
    • 提供明确的用户界面,让用户知道应用在后台运行及其原因

常见问题

  1. 保活服务无法启动

    • 检查是否已正确引入插件
    • 确认是否使用了自定义基座
    • 查看控制台是否有相关错误信息
  2. Android 保活效果不佳

    • 引导用户设置电池优化白名单
    • 引导用户设置自启动权限
    • 尝试启用多种保活方式组合使用
  3. iOS 保活时间有限

    • iOS 系统限制严格,无法实现完全的后台保活
    • 使用推送通知唤醒应用
    • 合理设置音频间隔,延长保活时间

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助微信赞助

源代码

组件源码