You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中health 3.2.0包获取健康数据为空及oAuth配置问题咨询

数据返回长度为0的排查方案
  • 先校验平台配置是否完整
    • iOS端:必须在Xcode的「Signing & Capabilities」中添加HealthKit能力,同时在Info.plist中添加NSHealthShareUsageDescription和NSHealthUpdateUsageDescription对应的权限说明文案,确保你需要读取的所有数据类型都在HealthKit权限范围内
    • 安卓端:首先确认设备搭载了可正常使用的Google Play服务,国内无GMS的设备无法通过该包对接Google Fit读取数据;需要在AndroidManifest.xml中添加ACTIVITY_RECOGNITION权限,安卓13及以上版本还需单独动态申请该权限
  • 确认授权范围完整
    requestAuthorization方法只要用户同意了任意一项权限就会返回true,不代表你申请的所有数据类型都拿到了授权,你可以调用healthFactory.hasPermissions(types)方法校验你指定的4类数据是否都获得了读取权限
  • 校验是否存在对应数据
    先手动将查询时间范围缩小到最近7天,同时在系统健康APP/Google Fit中手动添加几条步数、体重类的测试数据后再重试,很多场景下返回空是因为对应时间段内确实没有存储的健康数据
  • 版本适配
    3.2.0版本存在部分安卓设备无法读取血糖、体重类数据的已知问题,可以尝试升级health包到最新稳定版后再测试
OAuth 相关文件说明
  • 这两个文件仅用于安卓端对接Google Fit的OAuth认证,iOS端无需配置
  • 你不需要将完整的client_secret.json文件放入项目中,只需要将申请到的OAuth client ID配置到安卓项目的android/app/src/main/res/values/strings.xml文件内,添加如下配置即可:
    <string name="health_client_id">你申请到的OAuth客户端ID值</string>
    
    health包会自动读取该配置完成Google Fit的身份认证,注意申请OAuth client ID时填写的包名、签名指纹必须和你当前运行的应用完全一致,debug和release环境的签名指纹不同需要分别申请对应client ID。

你的代码逻辑本身没有问题,按上述项逐一排查即可解决数据为空的问题。

内容的提问来源于stack exchange,提问作者saad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:05