【FAQ】关于获取运动健康数据的常见问题及解答

发布时间 2023-09-26 15:28:00作者: HMSCore技术团队

目录

一、Health Kit健康数据采样, 原子采样数据问题

二、Health Kit查询历史数据查询数据和返回数据不一致

三、Health Kit关于获取历史数据问题

四、调用Health Kit接口出现获取不到数据的情况

问题解答

Q1:Health Kit健康数据采样, 原子采样数据问题

【问题描述】

1.体脂数据中的肌肉量和水份量是如何获得的,是用户自己上传体脂数据中的体重、体脂,然后系统通过计算公式得到数据吗?

2.日常活动统计数据包含什么内容,如何获取这些数据?

  1. 锻炼记录概要数据包含什么内容,是统计数据吗?获取方式是什么?

  2. 心脏健康数据测的是心电图相关记录。这些数据传到回调地址是什么数据格式?

【解决方案】

1、Health Kit是基于用户授权的前提下,将运动健康App中的数据进行开放,相关数据是由运动健康App提供的。

体脂数据是通过算法得到的, Health Kit仅会将有的数据进行返回。

体脂返回的有关数据可以查看“体重”指南

2、日常活动统计数据包含步数、活动热量、锻炼时长、活动小时数的目标与日统计值,可以查看“日常活动统计”指南中的数据开放说明进行获取,返回的参数在指南中也有描述。

3、包含的相关数据可以点击此处的图标进行查看,在“数据开放总览”中也有相关描述。

锻炼记录属于运动记录,获取方式以跑步为例,可以查看跑步指南中的场景示例。4、订阅功能,是数据有更新时会向您发送一个通知,通知内容并不包含具体的数据,仅会告知您用户的某个数据在某个时间点发生了什么。您在接收到通知后,需要根据推送过来的消息通知,向Health Kit服务端拉取数据。

比如,在接收到心电图①的通知后,根据通知中返回的信息,调用②的接口,拉取具体的数据。点击查看ECG心电测量记录

Q2:Health Kit查询历史数据查询数据和返回数据不一致

【问题描述】

通过https://health-api.cloud.huawei.com/healthkit/v1/activityRecords?startTime=&endTime=查询一个月运动记录,只能查询到最早5月26的数据,但是华为健康App里的数据最早为5月8日,为何查询不到?

【解决方案】

1、需要检查是否申请了历史数据权限,查询数据时,出于对用户的数据保护,只允许开发者查询用户授权之后的数据。例如用户是在2022年2月14日授权,那么2022年2月14日之前的数据将不可查询。

另外要申请历史数据相关权限。申请的测试权限一般会有半年有效期,若因到期被平台关闭,请重新申请相关权限。

2、如果运动记录为手动创建,请在查询时携带sourceType参数,接口详情请查看“查询已创建的运动记录”。

Q3:Health Kit关于获取历史数据问题

【问题描述1】

应用已经开通了历史数据访问权限,同时用户在授权页面已经勾选了”历史数据“项,调用healthkit的rest接口查询健康数据,那么用户授权之前一年的健康数据是否都能被查询到呢?

【解决方案】

当用户授予应用“读取历史数据”(一周、一月、一年)权限时,开发者可查询的用户数据时间范围从用户授权时间向前推移对应的时间。如果用户已授权一年的权限,则可以查询用户授权时间前一年内的健康数据。

【问题描述2】

获取一周中的每天步数总数,需要申请哪些权限?

【解决方案】

需要申请历史数据权限,使用历史数据权限,需要在认证鉴权时的scope参数中添加历史数据权限,供用户选择授权。

REST API 周的历史数据权限:https://www.huawei.com/healthkit/historydata.open.week

Android 周的历史数据权限:Scopes.HEALTHKIT_HISTORYDATA_OPEN_WEEK

点击查看REST接口认证鉴权、点击查看Android认证鉴权、点击查看读取历史数据操作:RESTAndroid

Q4:调用Health Kit接口出现获取不到数据的情况

【问题描述1】

已经在华为健康App中绑定设备,并确认有步数等信息且同步到了云端,但通过开发者接口无法获取。

【解决方案】

请确认Health Kit登录的账号和运动健康App中有数据的账号是同一个,并检查在运动健康App 隐私管理中是否关联了华为运动健康服务,如果未关联,无法获取数据。
如何判断用户是否关联了华为运动健康服务?

方式一:在运动健康App 隐私管理中,检查是否已开启标记②中的华为运动健康服务。

方式二:隐私接口请求时,在Headers中会返回x-health-app-privacy,需确保返回的值为1,1表示用户在运动健康App中已授权。

方式三:调用隐私授权状态查询接口进行判断。

如果未关联华为运动健康服务,开发者可以怎么做?

1、可以提示用户在运动健康App中开启华为运动健康服务开关:

2、可以根据华为运动健康App开放授权指南通过Health Kit云侧提供的H5页面关联华为运动健康服务。

【问题描述2】

查询隐私接口的时候,返回的状态为3。这是由于什么原因引起的?该怎么处理?

【解决方案】

1、3表示非华为运动健康App用户(不能授权),意思是用户没有使用过华为运动健康App,未关联华为运动健康服务。

2、隐私接口返回状态码3时:

1)可以进行相关提示,比如:“非华为运动健康App用户”(仅做参考)。

2)可以根据华为运动健康App开放授权指南通过Health Kit云侧提供的H5页面关联华为运动健康服务。

注意,一般为3的用户都没有产生过数据,关联华为运动健康服务后,也存在查询数据返回空的情况。

调用示例:https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?response_type=code&client_id=106804381&redirect_uri=https%3A%2F%2Fh5hosting.dbankcdn.com%2Fcch5%2Fhealthkit%2Flink%2Fpages%2FprivacyManage.html&access_type=offline&display=touch&state=zh-cn

URL中的参数client_id和redirect_uri是固定的,您不需要任何操作,URL中仅支持修改以下参数:

用户连接成功后,需要用户手动关闭此页面:

3、针对您隐私接口返回3及运动健康App中查询有数据的情况,请检查用户登录的是否为同一账号,请使用运动健康App中有数据的账号进行登录授权Health Kit。

了解更多详情>>

更多开发指导请参见开发文档

更多运动健康解决方案请参见运动健康场景

访问HMS Core 联盟官网

获取HMS Core 开发指导文档

关注我们,第一时间了解 HMS Core 最新技术资讯~