更新记录

1.1.0(2026-09-06)

  • 归并本轮 uni-app x Android 修复:兼容对象序列化保留业务字段与回调,补齐 Android 入口公开 API 投影和示例选项类型;版本号保持 1.1.0,发布时与本版本内容一起提交。
  • 2026-09-05 修复 Android UTS 兼容参数和单例转发的类型错误,保留各公开方法的参数与回调合同;修复 uni-app x 示例参数适配,完整传递预设启动、定时周期和事件筛选选项。
  • Android 前台服务改为由项目按真实业务显式选择 dataSyncmediaPlayback;未选择时只保留最佳努力运行态,不会把通用保活伪装成某一种前台服务。历史的其他服务类型值不再启用前台服务。
  • 看门狗和稳定定时器改为低频、非精确系统兜底,不再申请精确闹钟权限;原有查询与请求入口保留,但不会再跳转精确闹钟授权页。
  • 修复主动取消注册后遗留闹钟和默认策略可能再次恢复的问题;屏幕状态监听改为运行期间动态注册,停止或取消注册后自动释放。
  • iOS 与 Harmony 后台报告改为如实反映“进程内心跳观测”;不再将配置样板或人工确认标记为后台验收通过。iOS 不再为保活目的声明后台模式。
  • 升级后需要重新制作并安装 Android 自定义基座;iOS、Harmony 如有对应原生配置或业务处理器,也需要重新原生联编或重新打包后按真实业务路径复测。

1.0.4(2026-07-31)

  • 将真机回归清单迁出插件发布目录,并移除客户 README 的“当前版本”标题,避免内部验收资料进入市场包。
  • 修复 uni-app x 示例日志样式在 HarmonyOS 编译时使用不受支持的 white-space: pre-wrap 导致构建失败的问题,改用平台支持的 normal 并保留自动换行。
  • 同步 package.jsonuni_modules.json 与多端运行诊断中的 pluginVersion;公开 API、保活策略和回调语义不变。
  • 示例样式修复本身不要求新基座;如需运行诊断显示新版本号,App 端仍需重新原生联编或制作匹配自定义基座。

1.0.3(2026-07-22)

  • 修复 HBuilderX 5.15 更严格类型检查下,公共 RegisterOptions/KeepAliveBaseOptions 直接传入 Android AndroidBaseCallbackOptions 触发的四处 error17
  • Android 根入口改为显式构造平台 options 并完整复制 success/fail/complete 与注册配置,避免用运行时类强转掩盖编译错误;公共 API 和保活状态机保持不变。
  • 同步 package、README、Android PLUGIN_VERSION 及多端降级报告到 1.0.3。升级后需重新原生联编或重新打 Android 自定义基座。
查看更多

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - -

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序

lizhao-app-keepalive

lizhao-app-keepalive 用于让需要持续处理业务的应用,在进入后台后更稳定地保持运行状态、记录业务心跳,并按约定执行周期任务。

它能帮你做什么

你的业务需求 插件提供的帮助
设备、订单或消息连接需要持续关注 记录连接心跳和运行事件,便于发现中断。
应用在后台仍要做周期性工作 按设定间隔触发同步、巡检、上报等业务任务。
希望用户能看到应用仍在工作 支持配置运行提示和常用操作入口。
不确定当前设备是否适合开启保活 提供状态、权限和系统限制检查,返回下一步建议。
需要根据不同业务选择保活强度 提供均衡、强保活、媒体和任务等预设。

适用场景

  • 设备管理:持续关注设备在线状态,发现连接中断后及时处理。
  • 消息与客服:在后台保持业务心跳,避免长时间无状态反馈。
  • 订单与工单:定时同步待处理数据,并记录每次执行结果。
  • 巡检与上报:按照固定节奏触发巡检、告警检查或状态上报。
  • 运营排查:查看当前运行状态,定位通知、系统限制或设置项带来的影响。

开始使用

1. 下载并导入

在 DCloud 插件市场搜索 lizhao-app-keepalive,下载后导入 uni-app 或 uni-app x 项目。

在需要调用的页面从插件根目录导入:

import * as keepAlive from '@/uni_modules/lizhao-app-keepalive'

后续示例都默认已完成上述导入。

2. 先确认当前平台能力

不同平台允许的后台能力不同。首次接入时先查询能力,再决定是否启动对应业务。

keepAlive.getCapabilities({
  success(capabilities) {
    console.log('当前平台:', capabilities.platform)
    console.log('是否支持后台保活:', capabilities.keepAlive)
    console.log('受限原因:', capabilities.restrictedReason)
  },
  fail(err) {
    console.error('能力查询失败:', err)
  }
})

3. 启动基础保活

先注册,再启动。下面只设置最常用的心跳间隔和运行提示操作,其余配置会使用插件默认值。

keepAlive.register({
  config: {
    heartbeatIntervalMs: 15000,
    notificationActionsEnabled: true
  },
  success() {
    keepAlive.startKeepAlive({
      success(status) {
        console.log('保活已启动:', status.running)
      },
      fail(err) {
        console.error('启动保活失败:', err)
      }
    })
  },
  fail(err) {
    console.error('注册保活失败:', err)
  }
})

业务不再需要后台运行时,主动停止并取消注册:

keepAlive.stopKeepAlive({
  success() {
    keepAlive.unregister({
      success() {
        console.log('保活已停止')
      }
    })
  }
})

按业务模块接入

模块一:连接守护

适合设备连接、消息连接或页面轮询。业务在收到连接成功、消息到达或关键操作完成时发送一次心跳;运行事件可以用于更新页面状态或写入业务日志。

keepAlive.setOnKeepAliveEvent({
  listener(event) {
    console.log('运行事件:', event.name)
  }
})

function reportDeviceOnline(deviceId: string) {
  keepAlive.sendHeartbeat({
    tag: 'device-online',
    payload: { deviceId },
    success(result) {
      console.log('心跳已记录:', result)
    }
  })
}

模块二:周期任务

适合订单同步、设备巡检、待办刷新等需要定时执行的业务。插件负责按间隔通知业务;业务完成后回传成功或失败结果。

keepAlive.setOnKeepAliveTaskListener({
  listener(event) {
    console.log('开始执行任务:', event.taskId)

    // 在这里执行自己的同步、巡检或上报业务。
    keepAlive.reportKeepAliveTaskResult({
      taskId: event.taskId,
      result: 'success',
      message: '订单同步完成'
    })
  }
})

keepAlive.registerKeepAliveTask({
  task: {
    taskId: 'sync-order',
    title: '订单同步',
    intervalMs: 30000,
    runImmediately: true
  },
  success(tasks) {
    console.log('已注册任务:', tasks)
  },
  fail(err) {
    console.error('任务注册失败:', err)
  }
})

模块三:策略与运行提示

适合不想逐项配置的项目。先选择贴近业务的预设,再按需修改通知文字或其他配置。

keepAlive.applyKeepAlivePreset({
  presetId: 'balanced',
  startImmediately: true,
  success(result) {
    console.log('已应用策略:', result.presetId)
  },
  fail(err) {
    console.error('策略应用失败:', err)
  }
})

keepAlive.setNotice({
  title: '设备服务运行中',
  content: '正在保持设备连接',
  success() {
    console.log('运行提示已更新')
  }
})

模块四:状态检查与问题提示

适合在设置页或运维页展示当前状态。报告会给出是否可用、当前得分和建议处理项;业务可以直接把建议展示给用户或记录到日志。

keepAlive.getKeepAliveReadinessReport({
  success(report) {
    if (report.ready) {
      console.log('当前可以正常使用保活')
      return
    }

    console.log('需要处理:', report.nextSteps)
  },
  fail(err) {
    console.error('状态检查失败:', err)
  }
})

keepAlive.getKeepAliveHealthReport({
  success(report) {
    console.log('当前状态:', report.level)
    console.log('建议:', report.recommendations)
  }
})

模块五:定时心跳

适合只需要按固定节奏上报状态、无需注册完整业务任务的场景。先监听定时事件,再在事件中发送业务心跳。

keepAlive.setOnStableTimerListener({
  listener(event) {
    keepAlive.sendHeartbeat({
      tag: 'periodic-report',
      payload: { tick: event.tick },
      success() {
        console.log('本次状态已上报')
      }
    })
  }
})

keepAlive.startStableTimer({
  intervalMs: 60000,
  tag: 'periodic-report',
  success() {
    console.log('定时心跳已启动')
  }
})

不需要继续上报时调用:

keepAlive.stopStableTimer({
  success() {
    console.log('定时心跳已停止')
  }
})

按用途找功能

模块 什么时候使用 常用方法 你会得到什么
启动与停止 应用进入需要持续处理业务的页面,或业务结束时 registerstartKeepAlivestopKeepAliveunregister 当前是否已注册、是否正在运行。
连接状态 设备、消息或长连接有关键状态变化时 sendHeartbeatsetOnKeepAliveEventcheckAlive 最近心跳和运行事件。
周期任务 要定时同步、巡检、上报或补偿业务时 registerKeepAliveTasksetOnKeepAliveTaskListenerreportKeepAliveTaskResult 任务触发、成功次数、失败次数和下次执行时间。
定时心跳 只需要按间隔上报状态时 startStableTimersetOnStableTimerListenerstopStableTimer 定时触发事件和当前定时状态。
策略选择 希望快速选择适合业务的运行方式时 applyKeepAlivePresetgetKeepAlivePresetOptionssetConfig 已应用的策略和当前配置。
运行提示 需要调整应用运行时的提示文案或操作入口时 setNoticesetNotificationSoundEnabledsetNotificationVibrateEnabled 更新后的运行提示设置。
状态检查 用户反馈后台不稳定,或需要在设置页显示建议时 getKeepAliveReadinessReportgetKeepAliveHealthReportgetKeepAliveRestrictionStatus 可用状态、风险项和下一步建议。
系统设置引导 需要帮助用户处理通知、电池或厂商设置时 getKeepAlivePermissionStatusgetKeepAliveVendorGuideopenAutoStartSettings 当前设置状态和可打开的系统入口。
运行记录 需要排查任务是否触发、服务是否中断时 getStatusgetKeepAliveEventTimelinegetKeepAliveTaskStatuses 运行状态、事件记录和任务列表。
自动处理 希望由插件按推荐策略恢复常用配置时 applyKeepAliveSuiteautoHealKeepAlivegetKeepAliveAutoHealReport 已执行动作和后续建议。

常用配置

只在确有业务需要时传入配置。下面列出首次接入最常用的字段。

参数 类型 必填 说明 默认值 可选参数
config.heartbeatIntervalMs number 自动心跳间隔,单位毫秒 15000 建议不小于 1000
config.autoStartOnBoot boolean 应用重新启动后是否尝试恢复已启用的保活策略 false true / false
config.notificationActionsEnabled boolean 是否在运行提示中提供常用操作 true true / false
config.wakeLockEnabled boolean 需要持续处理业务时是否保持设备唤醒 false true / false
config.wifiLockEnabled boolean 需要保持网络连接时是否启用 Wi-Fi 辅助 false true / false
config.powerMode string 运行策略强度 balanced balanced / performance / ultra

支持平台

平台 是否支持 说明
uni-app 可在支持的客户端平台调用。
uni-app x 可在支持的客户端平台调用。
Android 提供完整的后台运行、任务和状态检查能力。
iOS 按系统允许的后台任务能力执行,不承诺长期常驻。
Harmony 提供受系统限制的后台运行与状态能力。
Web 返回轻量结果,不提供系统级后台常驻。
微信小程序 返回轻量结果,不提供系统级后台常驻。
支付宝小程序 返回轻量结果,不提供系统级后台常驻。

常见错误码

错误码 含义 说明
9013001 当前平台不支持该能力 先通过 getCapabilities 判断当前平台。
9013002 参数不合法 检查必填字段、任务 ID 和时间间隔。
9013003 服务未注册 先调用 register,再启动或配置服务。
9013004 服务已在运行 无需重复启动,直接查询状态即可。
9013005 服务未运行 先启动保活,再使用依赖运行状态的功能。
9013006 权限不足 根据返回的建议引导用户完成系统设置。
9013007 能力受限或不可用 当前设备或系统不允许该项能力。
9013008 系统调用失败 记录 err.details,结合当前状态再次判断。
9013009 电池优化策略拒绝 请用户在系统设置中确认对应选项。
9013010 唤醒锁不可用 降级处理当前业务,不要把它当作已启用。
9013011 设置页面不可达 提示用户手动进入应用设置页。
9013012 调用过于频繁 减少重复启动或短时间连续操作。

常见问题

可以保证应用永远不被系统停止吗?

不能。不同手机和系统对后台运行的限制不同。插件会明确返回当前状态和建议,但不承诺绕过系统或厂商限制。

应该选择哪种策略?

一般业务从 balanced 开始;对设备在线、消息连接或重要同步要求较高时,再评估 strong;只有明确的高强度业务需求才使用 ultra

如何知道周期任务有没有执行?

使用 getKeepAliveTaskStatuses 查询任务状态,或在 setOnKeepAliveTaskListener 中记录每次触发和业务回执。

业务退出时要做什么?

不再需要后台处理时,按 stopKeepAliveunregister 的顺序释放运行状态;不再需要定时心跳时,同时调用 stopStableTimer

联系方式

信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)

作者系列 UTS 插件

以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。

插件 能力方向 插件市场
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件
lizhao-gallery-pro 相册媒体分页、筛选、缩略图与导出 查看插件
lizhao-video-thumb 视频封面、批量取帧与 Base64 返回 查看插件
lizhao-ble BLE 扫描、连接、读写、通知与自动重连 查看插件
lizhao-sse-pro SSE、Line、JSONL 与 Raw 流式请求 查看插件
lizhao-pdf-pro PDF 阅读、签批、真实写回与页面处理 查看插件
lizhao-serial-port 路径串口、USB 串口、多会话收发与诊断 查看插件
lizhao-wechat-kit 微信登录、分享、支付、小程序与客服 查看插件
lizhao-video-editor 视频裁剪、压缩、取帧与 FFmpeg/FFprobe 查看插件
lizhao-vpn-pro 企业 VPN、IKEv2、安全接入与脱敏诊断 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

前台服务、保活证据会话、自愈后复测计划、自愈证据聚合、自愈闭环证据、恢复证据快照、持久化事件时间线、交付证据归档包导出、交付证据文件导出、交付报告一键复制、发布包质量门禁、插件市场发布体检报告、前台服务合规体检、媒体播放前台服务、通知、通知通道体检、通知动作广播、通知运行时权限、精确闹钟、JobScheduler 兜底守护、BIND_JOB_SERVICE、电池优化忽略、唤醒锁、WiFi 锁、Android onDestroy 服务销毁自恢复、Android onTaskRemoved 任务划掉恢复、stopWithTask=false 前台服务配置、iOS 后台套件、iOS UIBackgroundModes、一键终极体检报告、保活巡航守护、厂商 ROM 设置验收审计与下一项设置导航、交付验收计划、售后/交付支持报告、自定义基座完整性报告、事件时间线与恢复审计、长跑观测报告、保活验收报告、售后诊断包、一键自愈守护、鸿蒙后台套件、一键保活套件、保活生存力测试、保活证据包、后台任务守护与执行结果回执、保活准备度报告、一键保活策略预设、静音音频保活策略、稳定后台任务定时器、Harmony 后台运行配置指引、厂商 ROM 保活指引、开机/屏幕唤醒自恢复广播、通知点击与运行态事件广播按平台配置

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: