# 本地闹钟
# 协议类型
| 消息类型 | 名称 | 必须实现 | 
|---|---|---|
| directive | set_alarm | 否 | 
| delete_alarm | 否 | |
| event | state_sync | 否 | 
说明
在请求时,context中包含alarm对象,则代表设备使用本地闹钟。如果想在设备本地保存闹钟列表,需要实现alarm类unios_directive。
在此之前需要考虑以下几个问题:
- 实现本地闹钟需要设备本地将闹钟列表持久化保存,不能因为设备重启等原因造成设备闹钟列表丢失
 - 实现本地闹钟需要保证设备本地时间正确。UniOS 在接入大量厂商时发现很多芯片的时间钟不稳定,建议使用 system.ping 来保证设备系统时间的准确性
 - 实现本地闹钟需要在设备本地对设备闹钟进行一定的容错处理
 
注意
闹钟的设置、修改、删除和响铃,都必须使用状态同步(system.state_sync)来告知云端
# context
请求示例
"unios_context": {
  ...
  "alarm": {
    "version": "1.0",
    "local": [
      {
        "alarm_id": "xxxxx",
        "timestamp": 1558598737
      }
    ],
    "active": {
      "alarm_id": "xxxxx"
    }
  },
  ...
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| version | String | 模块版本,现在是1.0 | 是 | 
| local | List | 设备本地闹钟列表,如果没有,请传输空数组 | 是 | 
| local.alarm_id | String | 设备闹钟的唯一id | 是 | 
| local.timestamp | Long | unix时间戳,单位:秒 | 是 | 
| active | Object | 正在活动的闹钟 | 否 | 
| active.alarm_id | String | 正在活动的闹钟的唯一id | 否 | 
# directive
设置闹钟
在设备发起recognize请求或状态同步之后,可能会得到一个闹钟指令。在收到这个unios_directive之后,需要根据信息在设备本地记录和设置闹钟。
回复示例
{
  "unios_directives": [
    ...,
    {
      "header": {
        "name": "alarm.set_alarm"
      },
      "payload": {
        "alarm_id": "xxxxx",
        "timestamp": 1558598737,
        "url": "https://www.UniOS.cn/example....2.m4a"
      }
    }
  ]
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| alarm_id | String | 闹钟的唯一id | 是 | 
| timestamp | Long | unix时间戳,单位:秒 | 是 | 
| url | String | 铃声地址 | 是 | 
删除闹钟
在设备发起recognize请求或状态同步之后,可能会得到一个闹钟指令。在收到这个unios_directive之后,需要根据信息在设备本地记录中删除对应alarm_id的闹钟。
回复示例
{
  "unios_directives": [
    ...,
    {
      "header": {
        "name": "alarm.delete_alarm"
      },
      "payload": {
        "alarm_id": "xxxxx",
      }
    }
  ]
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| alarm_id | String | 闹钟的唯一id | 是 | 
# event
状态同步
当本地闹钟时间到时,需要在闹钟开始响和结束响的时候将状态告知云端。
请求示例
{
  "unios_header": {...},
  "unios_context": {...},
  "unios_event": {
    "header": {
      "name": "alarm.state_sync",
      "message_id": "xxxxxxxx"
    },
    "payload": {
      "type": "STARTED",
      "alarm_id": "xxxxx"
    }
  }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| unios_header | Object | 构建的通用 unios_header | 是 | 
| unios_context | Object | 构建的通用 unios_context | 是 | 
| type | String | 状态类型,取值: - STARTED:开始响铃 - STOPPED:响铃停止,包括自然响铃完成和用户操作(唤醒或按键)  |  是 | 
| alarm_id | String | 闹钟的唯一id | 是 |