移动开发中的健康数据授权:本质、工作原理及HealthKit访问权限

作者: IT Sectr 发布日期: 2026-05-22 阅读时间: 8 分钟

健康数据授权是通过移动平台系统API获取用户明确同意以读取和写入医疗及健身数据的过程。在iOS上,授权通过HealthKit实现,使用HKHealthStore和HKObjectType类;在Android上,则通过Google Fit API配合OAuth 2.0和FitnessOptions实现。根据Apple HealthKit Documentation, 2025,健康数据被归类为高度机密类别。医疗准确性和遵守法规是处理此类数据时的关键要求。

要点

  • Health Data Authorization — 获取用户医疗数据访问权限的强制同意流程。
  • HealthKit — Apple的健康数据框架,包括HKHealthStore和HKObjectType。
  • Google Fit API — Android平台通过OAuth 2.0和FitnessOptions访问健身数据。
  • HKHealthStore — iOS的核心类,用于请求授权和执行健康数据操作。
  • 用户同意 — 用户选择具体数据类型提供访问权限的强制步骤。

什么是健康数据授权?

健康数据授权是一种机制,要求在访问用户的医疗和健身指标之前获得其明确且已记录的同意。与标准权限(联系人、日历)不同,健康数据受额外的法律规范约束:美国的HIPAA、欧洲的GDPR以及俄罗斯的152-FZ。

iOS上,健康授权通过HealthKit实现:用户会看到一个屏幕,列出应用请求的所有数据类型,并可以选择特定类别来授予访问权限。在Android上,使用Google Fit API通过OAuth 2.0进行授权,每种数据类型都需要单独的作用域。

根据App Annie(2025)的数据,健康和健身应用是移动市场中增长最快的细分市场之一,年增长率为28%。同时,如果应用未提供关于收集目的明确说明,71%的用户会拒绝访问其健康数据。

关键区别在于健康授权与其他权限相比,能够提供部分访问权限。用户可以允许读取步数,但禁止访问心率数据或医疗记录。

HealthKit在iOS上的工作原理

HealthKit是Apple在iOS 8中引入的框架,提供统一的集中式健康数据存储库。应用无法直接访问HealthKit — 它们通过HKHealthStore请求授权,用户决定提供哪些数据类型。所有数据在设备上加密,并通过iCloud使用端到端加密进行同步。

请求HealthKit访问权限

授权过程从创建HKHealthStore实例并调用requestAuthorization(toShare:read:)方法开始。应用传递两组类型:用于读取(应用想要读取的HKObjectType)和用于写入(应用想要保存的HKSampleType)。系统显示同意屏幕,用户可以在该屏幕上单独启用或禁用每种类型。

一个重要特性:HealthKit不会向开发者显示用户在同意屏幕上具体允许了哪些类型。调用requestAuthorization后,需要通过HKHealthStore.authorizationStatus(for:)单独检查每种类型的访问权限。根据WWDC Session 11108(2024),Apple建议在每次读取或写入操作之前检查授权状态。

HKObjectType数据类型

HealthKit支持数百种数据类型,分为以下几类:定量(步数、脉搏、卡路里)、特征(身高、体重、出生日期)、临床记录(过敏、疫苗接种、检测结果)、症状和月经周期。每种类型由HKObjectType的子类表示:HKQuantityType用于数值指标,HKCategoryType用于分类数据。

从iOS 18开始,Apple扩展了HealthKit,通过FHIR(快速医疗互操作性资源)支持来自医疗机构的数据。如果用户已将医院或诊所连接到健康应用,应用可以请求访问结构化的医疗记录。

Google Fit API在Android上的工作原理

Google Fit是在Android上处理健身数据的平台,使用OAuth 2.0进行授权。与HealthKit不同,Google Fit并未在系统级别嵌入到操作系统中 — 它是一个独立的Google Play Services服务,需要通过Google Play Console连接并创建OAuth 2.0凭据。

Google Fit和OAuth 2.0

要访问Google Fit,应用必须在Google Cloud Console中注册OAuth 2.0客户端ID。授权通过GoogleSignInAccount和GoogleSignIn.requestPermissions()请求。用户会看到标准的Google同意屏幕,列出请求的作用域:fitness.activity.read、fitness.body.read、fitness.nutrition.write等。

Google Fit针对每种数据类型区分读取和写入权限。应用可以在不请求写入权限的情况下请求读取步数的访问权限。从Google Fit API v2开始,所有授权请求必须包含数据使用目的的说明 — 否则请求将被Google审核拒绝。

FitnessOptions和作用域

FitnessOptions类允许声明式地指定需要访问哪些数据类型。每种类型可以设置访问级别:ACCESS_READ、ACCESS_WRITE或两者。权限集与用户帐户一起传递到GoogleSignin.requestPermissions()。

可用类型列表包括:步数(DataType.TYPE_STEP_COUNT_DELTA)、卡路里(TYPE_CALORIES_EXPENDED)、脉搏(TYPE_HEART_RATE_BPM)、距离(TYPE_DISTANCE_DELTA)、活动(TYPE_ACTIVITY_SEGMENT)和睡眠(TYPE_SLEEP_SEGMENT)。每种类型都有自己的更新频率和权限要求。

访问健康数据的代码示例

健康数据授权请求的实现在iOS和Android上存在显著差异。以下是针对HealthKitGoogle Fit API的工作示例。

Swift中的HealthKit

在Swift中,HealthKit授权请求通过HKHealthStore执行,指定读取和写入的类型。示例演示了请求访问步数和脉搏数据。

swift
import HealthKit

let healthStore = HKHealthStore()

let readTypes: Set<HKObjectType> = [
    HKObjectType.quantityType(forIdentifier: .stepCount)!,
    HKObjectType.quantityType(forIdentifier: .heartRate)!
]

let writeTypes: Set<HKSampleType> = [
    HKObjectType.quantityType(forIdentifier: .stepCount)!
]

guard HKHealthStore.isHealthDataAvailable() else {
    fatalError("HealthKit在此设备上不可用")
}

healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
    if success {
        // 单独检查每种类型的状态
        let status = healthStore.authorizationStatus(for: readTypes.first!)
        print("HealthKit授权状态:\(status.rawValue)")
    } else {
        print("HealthKit授权错误:\(error?.localizedDescription ?? "未知")")
    }
}

Kotlin中的Google Fit

在Android上,Google Fit授权通过GoogleSignIn和FitnessOptions执行。示例演示了请求访问步数和卡路里数据。

kotlin
val fitnessOptions = FitnessOptions.builder()
    .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
    .addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
    .build()

val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)

if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
    GoogleSignIn.requestPermissions(
        this,
        REQUEST_GOOGLE_FIT,
        account,
        fitnessOptions
    )
} else {
    // 权限已授予 — 正在读取数据
    readGoogleFitData(account)
}

// 处理权限请求结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
        val account = GoogleSignIn.getSignedInAccountFromIntent(data)
        account?.let { readGoogleFitData(it) }
    }
}

安全性与法规合规

健康数据属于特别敏感的个人数据类别。使用HealthKit或Google Fit的应用开发者必须遵守用户所在地区适用的法规要求。

健康数据的HIPAA和GDPR

在美国,健康数据受HIPAA(健康保险便携性和责任法案)管辖,该法案对医疗信息的存储、传输和处理制定了严格要求。如果数据以加密形式发送到服务器且访问受到限制,使用HealthKit的应用可以符合HIPAA要求。

在欧盟,根据GDPR(第9条),健康数据被视为个人数据的特殊类别。处理此类数据需要用户的明确同意,并且在大多数情况下,需要进行数据保护影响评估。违反GDPR要求可能导致高达2000万欧元或公司年营业额4%的罚款。

俄罗斯,健康数据的收集受152-FZ《个人数据法》的管辖。自2025年起,所有处理俄罗斯联邦公民医疗数据的应用必须使用经过认证的加密工具,并将数据存储在位于俄罗斯联邦境内的服务器上,以符合Roskomnadzor的要求。

建议:在发布处理健康数据的应用之前,请咨询法律部门以检查是否符合当地法规。如果应用的隐私政策不符合要求,Apple和Google保留拒绝该应用的权利。

常见问题解答

HealthKit和Google Fit有什么区别?

HealthKit — 内置的iOS框架,带有本地加密的健康数据存储库。Google Fit — 基于Google Play Services的云服务,使用OAuth 2.0进行授权。HealthKit可离线工作,Google Fit需要互联网连接进行同步。

用户可以授予对健康数据的部分访问权限吗?

是的,在两个平台上都可以。在iOS上,用户在HealthKit同意屏幕上选择特定的数据类型(步数、脉搏、睡眠)。在Android上,用户可以看到Google Fit作用域的列表,并可以通过Google帐户设置撤销单独的权限

什么是HKHealthStore,它的作用是什么?

HKHealthStore — iOS上HealthKit框架的核心类。它管理所有健康数据的授权、读取和写入。应用无法直接访问HealthKit存储库 — 所有操作都通过HKHealthStore进行,这保证了统一的访问接口并遵守用户的访问权限。

如何撤销应用对Google Fit的访问权限?

用户可以通过Google设置 — 管理帐户 — 安全性 — 具有访问权限的第三方应用来撤销访问权限。选择该应用并单击“删除访问权限”。还可以通过Google Play Console撤销访问权限:关联服务 — Google Fit — 管理应用。

使用HealthKit的应用是否必须符合HIPAA?

如果应用处理美国用户的健康数据并将其发送到服务器,则必须符合HIPAA要求。如果所有数据都保留在设备本地且不传输给第三方,应用可能不需要符合HIPAA,但Apple建议无论司法管辖区如何,都应遵循最佳安全实践。

总结

  • Health Data Authorization — 获取用户明确同意以访问医疗数据的强制流程。
  • HealthKit — Apple在iOS上通过HKHealthStore处理健康数据的框架。
  • Google Fit API — Android平台通过OAuth 2.0和FitnessOptions访问健身数据。
  • 数据类型 — HealthKit支持定量、分类和临床数据;Google Fit支持步数、卡路里、脉搏、活动和睡眠。
  • 部分访问 — 用户可以在两个平台上授予对某些数据类型的访问权限,同时拒绝其他类型。
  • HIPAA和GDPR — 在美国和欧盟领域处理健康数据时的强制性法规要求。
  • 俄罗斯法规 — 152-FZ要求在处理俄罗斯公民的医疗数据时使用经过认证的加密方式,并将数据存储在俄罗斯联邦境内的服务器上。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读