Skip to main content
版本:v3.x

后台服务

介绍

在 Zepp OS 3.0 系统版本之前,一旦退出 JS 小程序,则小程序被销毁,如果需要保存相关状态,则需要借助文件系统相关能力,并且无法在后台运行,做到如持续监测传感器数据这类场景。

在 Zepp OS 3.0,小程序支持后台服务的新特性,从运行时长的角度对服务进行区分,分为长服务和短服务。

长服务,在小程序页面中通过 @zos/app-service 模块中的 start 方法来启动,允许在后台常驻,并且重启后自动加载,直到使用 stop 方法停止服务。

短服务,即短时间运行的服务,如果启动后超出一定时长,会被强行关闭。类比于回调函数,由特定事件来触发,如 Zepp OS 新增的一系列模块 API,支持调用短服务。

  • @zos/alarm
    • 定时唤醒
  • @zos/notification
    • 操作系统通知,如点击通知唤起服务
  • app-event 系统事件
    • 监听系统事件,抛出某一事件的时候,唤起服务

配置后台服务

需要在 小程序配置 app.json 中的 module 进行配置,此外,后台服务的运行有权限限制,需要在 permissions 中声明相关权限。

{
"permissions": [
"device:os.notification",
"device:os.bg_service",
"event:os.health.heart_rate_abnl"
],
"module": {
"app-service": {
"services": ["app-service/long_service"]
},
"app-event": {
"path": "app-event/short-service"
}
}
}

一个小程序可以配置多个 app-service,用来启动长服务,长服务需要使用 startstop API 手动控制启动和停止

一个小程序只能配置一个用来监听系统事件的短服务,通过 app-eventpath 来指定服务的路径,当我们监听的系统事件触发,系统会调用短服务,并在一定时间后关闭这个服务

注册后台服务

使用 AppService 注册后台服务

能力限制

后台服务中调用 JS 方法,不能对前台应用造成影响,只支持调用以下 API

  • @zos/interaction 模块的 showToast
  • @zos/sensor
  • @zos/fs
  • @zos/ble
  • @zos/router
  • @zos/alarm
  • @zos/app-service
  • @zos/notification
  • 其余模块一系列 get 方法

短服务系统事件

小程序需要监听的系统事件也需要配置在 app.json permissions 字段中,目前支持如下事件监听

系统事件说明
event:os.health.heart_rate_abnl心率异常
event:os.health.spo2_low血氧偏低
event:os.weather.sun_rise日出
event:os.weather.sun_rise日落
event:os.weather.moon_rise月出
event:os.weather.moon_set月落

监听系统事件的短服务还需要在 app.json 中的 app-event 字段中进行配置

"app-service": {
"services": ["app-service/long_service"]
},
"app-event": {
"path": "app-event/short_service"
}
信息

更多系统事件还在不断完善中,敬请期待

完整示例

我们在 Github Sample 仓库中提供了一个后台服务 demo 用于演示这个功能,请参考 os-3.0show