合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
Health Service Kit云提供了订阅通知机制,当用户数据发生变化时,实时通知开发者,以便应用拥有用户的最新数据。
请使用企业开发者账号注册订阅通知能力,不支持个人开发者申请订阅。
当前支持数据事件订阅和场景事件订阅。

流程说明:当用户数据发生变化时,实时通知开发者,以便应用拥有用户的最新数据。
| 角色/组件 | 说明 |
|---|---|
| 订阅者 | 生态应用作为订阅者,当其用户数据更改时,Health Service Kit通知其服务端的回调地址。订阅者由Subscriber ID唯一标识。 |
| 事件 | 用户活动事件。包括用户取消授权、运动记录变化(更新、删除)、原子数据变化(更新、删除)等操作。 |
| 订阅记录 | 记录订阅者、用户、事件之间的关联关系。表示订阅者关注了用户的某个事件。订阅记录由Subscription ID唯一标识。 |
| 通知 | Health Service Kit向订阅者回调地址发出的通知请求,通知订阅用户事件变化。 |
| 事件类别(type) | 事件子类别(subType) | 事件类别ID(eventType) | 描述 | 扩展元数据 |
|---|---|---|---|---|
| USER_EVENT 用户账号事件 | REVOKE_ALL | USER_EVENT$REVOKE_ALL | 用户取消应用授权事件 | 无 |
| DELETE_USER | USER_EVENT$DELETE_USER | 用户销户事件 | ||
| REFRESH_TOKEN_INVALID | USER_EVENT$REFRESH_TOKEN_INVALID | 用户Refresh Token失效事件 | ||
| ACTIVITY_RECORD_EVENT 用户运动记录事件 | UPDATE | ACTIVITY_RECORD_EVENT$UPDATE | 新增/更新运动记录事件 | metaKey:
|
| DELETE | ACTIVITY_RECORD_EVENT$DELETE | 删除运动记录事件 | metaKey:
| |
| SAMPLESET_EVENT 采样数据事件 | UPDATE | SAMPLESET_EVENT$UPDATE${DATATYPE} | 新增/更新采样数据事件 | metaKey:
|
| DELETE | SAMPLESET_EVENT$DELETE${DATATYPE} | 删除采样数据事件 | metaKey:
| |
| HEALTH_RECORD_EVENT 健康记录事件 | UPDATE | HEALTH_RECORD_EVENT$UPDATE${DATATYPE} | 新增/更新健康记录事件 | metaKey:
|
| DELETE | HEALTH_RECORD_EVENT$DELETE${DATATYPE} | 删除健康记录事件 | metaKey:
| |
| SCENARIO_GOAL_EVENT 场景目标事件 | ACHIEVE | SCENARIO_GOAL_EVENT$ACHIEVE | 场景目标达成事件 | metaKey:
|
| DEVICE_EVENT GPRS设备事件 | BIND | DEVICE_EVENT$BIND | 设备绑定事件 | metaKey: deviceCode:设备绑定码 |
| UNBIND | DEVICE_EVENT$UNBIND | 设备解绑事件 | ||
| CONNECTION_VERIFY_EVENT 连通性测试事件 | VERIFY | CONNECTION_VERIFY_EVENT$VERIFY | 回调URL连通性校验事件 | 无 |
| SAMPLE_CONFIG_EVENT 配置变更事件 | UPDATE | SAMPLE_CONFIG_EVENT$UPDATE | 更新配置事件 | metaKey:
|
| HEALTH_ALARM_EVENT 健康预警事件 | ATRIAL_PREMATURE_BEAT | HEALTH_ALARM_EVENT$ATRIAL_PREMATURE_BEAT | 房性早搏预警事件 | metaKey:
|
| VENTRICULAR_PREMATURE_BEAT | HEALTH_ALARM_EVENT$VENTRICULAR_PREMATURE_BEAT | 室性早搏预警事件 | metaKey:
| |
| ATRIAL_FIBRILLATION | HEALTH_ALARM_EVENT$ATRIAL_FIBRILLATION | 房颤预警事件 | metaKey:
| |
| TACHYCARDIA | HEALTH_ALARM_EVENT$TACHYCARDIA | 心率过速预警事件 | metaKey:
| |
| BRADYCARDIA | HEALTH_ALARM_EVENT$BRADYCARDIA | 心率过缓预警事件 | metaKey:
| |
| LOW_SPO2 | HEALTH_ALARM_EVENT$LOW_SPO2 | 较低血氧提醒事件 | metaKey:
| |
| HYPERTHERMIA | HEALTH_ALARM_EVENT$HYPERTHERMIA | 体温过高预警事件 | metaKey:
| |
| HYPOTHERMIA | HEALTH_ALARM_EVENT$HYPOTHERMIA | 体温过低预警事件 | metaKey:
|
当前健康预警事件仅支持部分开发者使用,如有需要,可提单或者发送邮件至hihealth@huawei.com进行咨询。
| 事件类别 | 数据类型 | 活动类型/数据类型 | 描述 |
|---|---|---|---|
| 用户运动记录事件 | 运动记录 | 请参见运动类型常量 | 请参见运动类型常量 |
| 采样数据事件 | 个人信息采样数据 | com.huawei.instantaneous.body_weight | 体重 |
| 健康采样数据 | com.huawei.instantaneous.blood_glucose | 血糖 | |
| com.huawei.instantaneous.blood_pressure | 血压 | ||
| com.huawei.instantaneous.spo2 | 血氧 | ||
| com.huawei.instantaneous.heart_rate | 心率 | ||
| com.huawei.instantaneous.resting_heart_rate | 静息心率 | ||
| com.huawei.instantaneous.stress | 压力 | ||
| com.huawei.instantaneous.skin.temperature | 皮肤温度 | ||
| com.huawei.sleep.on_off_bed_record | 睡眠上离床记录 | ||
| com.huawei.instantaneous.body.temperature | 体温 | ||
| com.huawei.vo2max | 最大摄氧量 | ||
| com.huawei.obstructive_sleep_apnea | 睡眠呼吸暂停 | ||
| com.huawei.emotion | 情绪 | ||
| com.huawei.heart_rate_variability | 心率变异性 | ||
| com.huawei.instantaneous.breathe_rate | 呼吸率 | ||
| 运动采样数据 | com.huawei.continuous.steps.delta | 步数 | |
| com.huawei.continuous.distance.delta | 距离 | ||
| com.huawei.continuous.calories.burnt | 卡路里 | ||
| com.huawei.continuous.exercise_intensity.v2 | 中高强度 | ||
| 运动统计数据 | com.huawei.continuous.steps.total | 总步数 | |
| com.huawei.continuous.distance.total | 总距离 | ||
| com.huawei.continuous.calories.burnt.total | 卡路里统计 | ||
| com.huawei.continuous.exercise_intensity.v2.statistics | 中高强度统计 | ||
| 健康记录事件 | 健康记录数据 | com.huawei.continuous.ecg_record | ECG心电测量记录 |
| com.huawei.health.record.sleep | 睡眠记录 | ||
| com.huawei.health.record.menstrual_cycle | 女性生理周期 | ||
| com.huawei.health.record.tachycardia | 心率过速 | ||
| com.huawei.health.record.bradycardia | 心率过缓 | ||
| com.huawei.health.record.arrhythmia_result | 心律失常结果 | ||
| com.huawei.health.record.dynamic_bp | 动态血压 |
SCENARIO_GOAL_EVENT当前支持总步数。
| 数据类型 | 描述 | 支持的目标类型 |
|---|---|---|
| com.huawei.continuous.steps.total | 总步数 | 测量值目标:MetricGoal 持续时间目标:DurationGoal |
| 数据类型 | 描述 | 使用场景 |
|---|---|---|
| com.huawei.continuous.ecg_record | ECG心电测量记录 | 若只关注心电异常事件,可针对心电异常类别选择对应健康预警事件 |
| com.huawei.health.record.tachycardia | 心率过速 | 参考心率过速和过缓,目前仅支持部分开发者使用。 |
| com.huawei.health.record.bradycardia | 心率过缓 | |
| com.huawei.health.record.lowSpo2Alert | 低血氧 | 参考低血氧,目前仅支持部分开发者使用。 |
| com.huawei.health.record.hyperthermia | 体温过高 | 参考体温过高,目前仅支持部分开发者使用。 |
在联盟卡片申请Health Service Kit服务时,选择已经创建的产品,勾选注册订阅通知能力。可选择HTTP订阅方式,填写回调通知地址,并通过测试连通性来检查回调地址是否连通。
或者选择端侧订阅方式,填写应用包名与Action,如果您的使用场景满足如下条件:
1. 使用端侧订阅方式
2. 订阅事件类型是场景目标事件
3. 使用apk与apk间信息通知
请参考扩展能力服务开发指南。

当您选择HTTP订阅方式时,可选择添加多个回调地址信息,并赋予这些回调地址对应标签类别。例如:测试环境的回调地址、生产环境的回调地址。保存成功后,按照填写的回调地址,会生成对应回调地址的订阅者ID。当给用户创建订阅记录时,每个用户只能关联一个订阅者ID。

当您选择端侧订阅方式时,与HTTP订阅方式类似,支持多个Action的填写。
HTTP请求,请参见新增/更新订阅记录接口
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions 请求示例
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions 请求体
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions
Content-Type: application/json
Authorization: Bearer ***
x-client-id: ***
x-version: ***
x-caller-trace-id: ***
{
"subscriberId": "08666998-78f6-46b9-8620-faa06cdbac2b",
"eventTypes": [
// 订阅用户运动记录变化事件
{
"type": "ACTIVITY_RECORD_EVENT",
"subType": "UPDATE",
"eventType": "ACTIVITY_RECORD_EVENT$UPDATE"
},
// 订阅用户运动记录删除事件
{
"type": "ACTIVITY_RECORD_EVENT",
"subType": "DELETE",
"eventType": "ACTIVITY_RECORD_EVENT$DELETE"
},
// 订阅采样数据变化事件,以订阅体重数据为例
{
"type": "SAMPLESET_EVENT",
"subType": "UPDATE",
"eventType": "SAMPLESET_EVENT$UPDATE$com.huawei.instantaneous.body_weight"
},
// 订阅健康记录数据变化事件,以订阅睡眠记录数据为例
{
"type": "HEALTH_RECORD_EVENT",
"subType": "UPDATE",
"eventType": "HEALTH_RECORD_EVENT$UPDATE$com.huawei.health.record.sleep"
}
]
} 响应体
HTTP/1.1 200 OK
Content-type: application/json;charset=utf-8
[
{
"appId": "101524371",
"eventType": "ACTIVITY_RECORD_EVENT$UPDATE",
"subscriberId": "a2613ab0-19d8-4126-b18f-7779405b5992",
"subscriptionId": "0924d8d1-6d4a-4f81-99b9-b96b1a0c970c",
"goalInfo": "null",
"alarmThreshold": "null",
"subscriptionMode": 0,
"type": "ACTIVITY_RECORD_EVENT",
"subType": "UPDATE",
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY"
},
{
"appId": "101524371",
"eventType": "ACTIVITY_RECORD_EVENT$DELETE",
"subscriberId": "a2613ab0-19d8-4126-b18f-7779405b5992",
"subscriptionId": "641eeec8-a9c1-4c4c-9789-4963b92a6c46",
"goalInfo": "null",
"alarmThreshold": "null",
"subscriptionMode": 0,
"type": "ACTIVITY_RECORD_EVENT",
"subType": "DELETE",
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY"
},
{
"appId": "101524371",
"eventType": "SAMPLESET_EVENT$UPDATE$com.huawei.instantaneous.body_weight",
"subscriberId": "a2613ab0-19d8-4126-b18f-7779405b5992",
"subscriptionId": "536sfgc8-a6c1-3tt5c-9369-2643b92g7g46",
"goalInfo": "null",
"alarmThreshold": "null",
"subscriptionMode": 0,
"type": "SAMPLESET_EVENT",
"subType": "UPDATE",
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY"
},
{
"appId": "101524371",
"eventType": "HEALTH_RECORD_EVENT$UPDATE$com.huawei.health.record.sleep",
"subscriberId": "a2613ab0-19d8-4126-b18f-7779405b5992",
"subscriptionId": "138sfdc8-a6c1-7yt5c-9759-26e33dhh5g67",
"goalInfo": "null",
"alarmThreshold": "null",
"subscriptionMode": 0,
"type": "HEALTH_RECORD_EVENT",
"subType": "UPDATE",
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY"
}
] 订阅者对事件通知处理建议:
HTTP请求,请参见订阅事件通知接口
POST
https://www.example.com/healthkit/notifications 请求示例
POST
https://www.example.com/healthkit/notifications 请求体
POST
https://www.example.com/healthkit/notifications
Content-Type: application/json
x-notification-signature: ***
{
"eventTime":1607514090688,
"eventType":"ACTIVITY_RECORD_EVENT$UPDATE",
"metaData":[
{
"metaKey":"startTime",
"metaValue":"1606856007879" // 更新数据的开始时间
},
{
"metaKey":"endTime",
"metaValue":"1606916007879" // 更新数据的结束时间
},
{
"metaKey":"activityType", // 更新数据的类型
"metaValue":"1"
}
],
"openId":"MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY"
} 响应体
HTTP/1.1 204 No Content Content-type: application/json;charset=utf-8
根据推送过来的消息通知,向Health Service Kit服务端拉取数据,可以参见多日步数统计场景示例或者读取运动记录数据场景示例。
HTTP请求,请参见新增/更新订阅记录接口
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions 请求示例
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions 请求体
POST
https://health-api.cloud.huawei.com/healthkit/v2/subscriptions
Content-Type: application/json
Authorization: Bearer ***
x-client-id: ***
x-version: ***
x-caller-trace-id: ***
{
"subscriberId": "08666998-78f6-46b9-8620-faa06cdbac2b",
"eventTypes": [
{
"type": "SCENARIO_GOAL_EVENT",
"subType": "ACHIEVE",
"eventType": "SCENARIO_GOAL_EVENT$ACHIEVE",
"goalInfo": {
"createTime": 1654660859105,
"startDay": 20220608, // 目标开始计算日期,注意需晚于目标创建日期
"recurrence": {
"unit": 1, // 周期单位:日
"count": 30, // 整个周期30天
"expectedAchievedCount": 28
},
"goals": [
{
"goalType": 1,
"metricGoal": {
"value": 10000, // 设置达标值10000步
"fieldName": "steps",
"dataType": "com.huawei.continuous.steps.total"
}
}
]
}
}
]
} 响应体
HTTP/1.1 200 OK
Content-type: application/json;charset=utf-8
[
{
"appId": "101524371",
"eventType": "SCENARIO_GOAL_EVENT$ACHIEVE",
"subscriberId": "1b57117f-8a7a-4584-b90e-149039216af6",
"subscriptionId": "3a82f885-97bf-47f8-84d1-21e558fe6e99",
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY",
"goalInfo": "{\"createTime\":1654660859105,\"goals\":[{\"goalType\":1,\"metricGoal\":{\"dataType\":\"com.huawei.continuous.steps.total\",\"fieldName\":\"steps\",\"value\":10000.0}}],\"recurrence\":{\"count\":30,\"expectedAchievedCount\":28,\"unit\":1},\"startDay\":20220608}",
"alarmThreshold": "null",
"subscriptionMode": 0,
"type": "SCENARIO_GOAL_EVENT",
"subType": "ACHIEVE"
}
] 订阅者对事件通知处理建议:
HTTP请求,请参见订阅事件通知接口
POST
https://www.example.com/healthkit/notifications 请求示例
POST
https://www.example.com/healthkit/notifications 请求体
POST
https://www.example.com/healthkit/notifications
Content-Type: application/json
x-notification-signature: ***
[{
"appId": "101524371",
"subscriptionId": "3a82f885-97bf-47f8-84d1-21e558fe6e99",
"periodIndex": 0,
"periodStartDay": 20220608,
"periodEndDay": 20220608,
"goalAchieve": [{
"goalType": 1,
"metricGoal": {
"value": 10000.0,
"fieldName": "steps",
"dataType": "com.huawei.continuous.steps.total"
},
"achievedFlag": true //已达标
}
]
} HTTP/1.1 204 No Content Content-type: application/json;charset=utf-8
HTTP请求,请参见查询场景事件结果。
GET https://health-api.cloud.huawei.com/healthkit/v2/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord
请求示例
GET https://health-api.cloud.huawei.com/healthkit/v2/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord
请求体
无
HTTP/1.1 200 OK
Content-type: application/json;charset=utf-8
[
{
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY",
"appId": "101524371",
"subscriptionId": "3a82f885-97bf-47f8-84d1-21e558fe6e99",
"periodIndex": 0,
"periodStartDay": 20220608,
"periodEndDay": 20220608,
"goalAchieve": [{
"goalType": 1,
"metricGoal": {
"value": 10000.0, // 设定的目标值
"fieldName": "steps",
"dataType": "com.huawei.continuous.steps.total"
},
"achievedResult": "20023", // 实际值
"achievedFlag": true // 已达标标记
}]
},
{
"openId": "MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY",
"appId": "101524371",
"subscriptionId": "3a82f885-97bf-47f8-84d1-21e558fe6e99",
"periodIndex": 1,
"periodStartDay": 20220609,
"periodEndDay": 20220609,
"goalAchieve": [{
"goalType": 1,
"metricGoal": {
"value": 10000.0, // 设定的目标值
"fieldName": "steps",
"dataType": "com.huawei.continuous.steps.total"
},
"achievedResult": "9800", // 实际值
"achievedFlag": false // 未达标标记
}]
}
]