# @flomentumsolutions/capacitor-health-extended 中文文档

规范地址：https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/

版本：0\.9\.5
npm 元数据更新时间：2026-11-05T02:18:02.114Z
中文译文更新时间：2026-11-14T23:46:42.437Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40flomentumsolutions/capacitor-health-extended
原文对照：https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/?lang=original
项目主页：https://github.com/Flomentum-Solutions/capacitor-health-extended#readme
源码仓库：https://github.com/Flomentum-Solutions/capacitor-health-extended

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：269 kB，22 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：0 个
- peer 依赖：@capacitor/core \>=9\.0\.0-beta\.0
- 首次发布：2025-06-16T17:45:19.601Z
- 最新版本发布：2026-11-05T02:18:01.755Z
- 近 30 天下载量：31457（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：45（近 12 个月 26 个）

## 中文简介

苹果健康Kit和谷歌健康连接平台的电容插件

## 安装

```sh
npm install @flomentumsolutions/capacitor-health-extended
```

也可以使用：`pnpm add @flomentumsolutions/capacitor-health-extended`、`yarn add @flomentumsolutions/capacitor-health-extended`、`bun add @flomentumsolutions/capacitor-health-extended`

## README

# @flomentum溶液/电容-健康延伸

用于从 Apple HealthKit 读取数据的 Cross- platform Capacitor 插件 谷歌健康联通. 插件需要 **节点.js 24+** 并兼容 与 **电容 8**。对于iOS,插件传送 a **Swift 软件包管理器** 分布( 电容 8 默认), 而 CocoaPods 光谱 `FlomentumsolutionsCapacitorHealthExtended` 留作遗留项目之用.

## 感谢和归属

从 [电容器保健](https://github.com/mley/capacitor-health) 就是这样...

-   一些部分、概念和想法借用自 [克多瓦-插素-健康](https://github.com/dariosalvi78/cordova-plugin-health/)。 。 。 .
-   谢谢 [@dariosalvi78 (英语)](https://github.com/dariosalvi78) 供养.

谢谢 [@mley (英语)](https://github.com/mley) 在地面上工作。 这个分叉的目标是扩展功能和数据点,并跟上不断变化的全新的Android健康连接平台. 希望为基于电容API的健康数据访问创建平台等同.

## 要求(冲洗和消耗用具)

-   节点.js 24+(推荐最后的LTS版本)
-   电容 8
-   iOS 15+(Xcode 26 + HealthKit + SwiftPM 工具链)
-   Android 16+ (Android Studio Otter 2025.2.1 + Health Connect 1.2.0-alpha02 + Gradle 8.13.0 + Kotlin 2.2.2.20) (中文(简体) )

## 特征

-   检查设备是否有健康功能
-   申请和核实健康许可
-   查询步骤或卡路里等汇总数据
-   获取带有可选路由和心率数据的解决会话
-   创建解决会话(如攀岩),包含总计,可选路线,以及心率样本(写 API)
-   将手动测量值(体重、身高、身体脂肪%、休息心率)保存到健康与健康连接(写出API)
-   获取最新样本,包括步骤、距离(包括循环)、卡路里(活性/总/流域)、心率、休息HR、HRV、呼吸速率、血压、氧饱和、血糖、体温(下水道+核心)、体肥、高、体重、飞行爬升、睡眠(包括REM持续时间)和锻炼时间.
-   阅读iOS上的剖面特征:生物性别,血型,出生日期,菲茨帕特里克皮肤类型,轮椅使用.

### 支持的数据类型(均等iOS + Android)

-   活动:步道、相距、相距骑行、锻炼时间(阿普勒锻炼时间)、健身(带路线/步道/卡路里)、飞行爬升
-   能源:活性热量、总热量、玄武质热量
-   活性:心率,休息心率,HRV,呼吸率,血压,氧饱和,血糖,体温,玄武体温
-   身体:体重、身高、脂肪
-   特征(iOS):生物性别,血型,出生日期,菲茨帕特里克皮肤类型,轮椅使用
-   会话: 注意,入睡,入睡 REM(仅限最晚样本)

## 安装

```bash
npm install @flomentumsolutions/capacitor-health-extended
npx cap sync
```

## 设置消费应用程序

### iOS系统

电容 8 通过 SwiftPM 解决 iOS 插件。 运行 `npx cap sync ios` 将 添加 `FlomentumSolutionsCapacitorHealthExtended` 软件包(由 `capacitor-swift-pm`您的 Xcode 项目 。 如果你被钉在7号电容器上的话, 你可以继续使用可可花谱 `FlomentumSolutionsCapacitorHealthExtended`。 。 。 .

-   安装此插件时确保您的app id具有“ 健康 Kit” 权限( 见 iOS dev Centre) .
-   另外,确保您的应用和App Store描述符合苹果审查准则.
-   信息.plist文件要添加两个密钥:NSHealthShareUsageDescription和NSHealthUpdateUsageDecription.
-   请求 WRITEQQ 权限 `requestHealthPermissions` 以便节省锻炼/能量/距离/路由/心电图样本和手动测量(重量/高/身体脂肪/呼吸力)至健康设备.

### 机器人

插件命名空间/ 套件是 `com.flomentumsolutions.capacitorhealthextended.capacitor` (去除旧的连字符) `com.flomentumsolutions.capacitor-health-extended` 引用);在线条活动、显示条目或ProGuard规则时使用.

-   打开显示标记后立即在根标签中显示Android

```xml
    <!-- Make Health Connect visible to detect installation -->
    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>

    <!-- Declare permissions you’ll request -->
    <!-- READ permissions -->
    <uses-permission android:name="android.permission.health.READ_STEPS" />
    <uses-permission android:name="android.permission.health.READ_ACTIVE_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.READ_TOTAL_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.READ_DISTANCE" />
    <uses-permission android:name="android.permission.health.READ_EXERCISE" />
    <uses-permission android:name="android.permission.health.READ_EXERCISE_ROUTES" />
    <uses-permission android:name="android.permission.health.READ_HEART_RATE" />
    <uses-permission android:name="android.permission.health.READ_WEIGHT" />
    <uses-permission android:name="android.permission.health.READ_HEIGHT" />
    <uses-permission android:name="android.permission.health.READ_HEART_RATE_VARIABILITY" />
    <uses-permission android:name="android.permission.health.READ_BLOOD_PRESSURE" />
    <uses-permission android:name="android.permission.health.READ_MINDFULNESS" />
    <uses-permission android:name="android.permission.health.READ_RESTING_HEART_RATE" />
    <uses-permission android:name="android.permission.health.READ_RESPIRATORY_RATE" />
    <uses-permission android:name="android.permission.health.READ_OXYGEN_SATURATION" />
    <uses-permission android:name="android.permission.health.READ_BLOOD_GLUCOSE" />
    <uses-permission android:name="android.permission.health.READ_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.READ_BASAL_BODY_TEMPERATURE" />
    <uses-permission android:name="android.permission.health.READ_BODY_FAT" />
    <uses-permission android:name="android.permission.health.READ_FLOORS_CLIMBED" />
    <uses-permission android:name="android.permission.health.READ_BASAL_METABOLIC_RATE" />
    <uses-permission android:name="android.permission.health.READ_SLEEP" />
    <!-- WRITE permissions -->
    <uses-permission android:name="android.permission.health.WRITE_EXERCISE" />
    <uses-permission android:name="android.permission.health.WRITE_ACTIVE_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.WRITE_TOTAL_CALORIES_BURNED" />
    <uses-permission android:name="android.permission.health.WRITE_DISTANCE" />
    <uses-permission android:name="android.permission.health.WRITE_HEART_RATE" />
    <uses-permission android:name="android.permission.health.WRITE_EXERCISE_ROUTE" />
    <uses-permission android:name="android.permission.health.WRITE_WEIGHT" />
    <uses-permission android:name="android.permission.health.WRITE_HEIGHT" />
    <uses-permission android:name="android.permission.health.WRITE_BODY_FAT" />
    <uses-permission android:name="android.permission.health.WRITE_RESTING_HEART_RATE" />
```

调用时包含 WRITEQQ 条目 `saveWorkout` 插入练习会话、能量、距离、路由或心率样本,并在使用时添加参数写入权限 `saveMetrics`。 。 。 .

-   应用程序标签中的 Android 特性

```xml
    <!-- Handle Health Connect rationale (Android 13-) -->
    <!-- REPLACE com.my.app with your details -->
    <activity
        android:name="com.my.app.PermissionsRationaleActivity" 
        android:exported="true">
        <intent-filter>
            <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
            <category android:name="android.intent.category.HEALTH_PERMISSIONS"/>
        </intent-filter>
    </activity>

    <!-- Handle Android 14+ alias -->
    <!-- REPLACE com.my.app with your details -->
    <activity-alias
        android:name="ViewPermissionUsageActivity"
        android:exported="true"
        android:targetActivity="com.my.app.PermissionsRationaleActivity"
        android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
        <intent-filter>
            <action android:name="android.intent.action.VIEW_PERMISSION_USAGE"/>
            <category android:name="android.intent.category.HEALTH_PERMISSIONS"/>
        </intent-filter>
    </activity-alias>
```

-   安全 WebView 内容的应用程序标签中的 Android Munification

```xml
    <!-- Configure secure WebView and allow HTTPS loading -->
    <application
        android:usesCleartextTraffic="false"
        android:networkSecurityConfig="@xml/network_security_config">
        ...
    </application>
```

-   创建 `com.my.app.PermissionsRationaleActivity.kt` 与(REPLACE com.my.app与您的细节):

```xml
<!-- REPLACE com.my.app with your details -->
package com.my.app

import android.os.Bundle
import android.util.Log
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity

class PermissionsRationaleActivity : AppCompatActivity() {
    private lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        supportActionBar?.apply {
            title = "Privacy Policy"
            setDisplayHomeAsUpEnabled(true)
        }

        webView = WebView(this).apply {
            settings.apply {
                javaScriptEnabled = true
                domStorageEnabled = true
                useWideViewPort = true
                loadWithOverviewMode = true
            }
            webChromeClient = WebChromeClient()
            webViewClient = object : WebViewClient() {
                override fun shouldOverrideUrlLoading(view: WebView, request: android.webkit.WebResourceRequest) = false
                override fun onReceivedError(
                    view: WebView,
                    request: android.webkit.WebResourceRequest,
                    error: android.webkit.WebResourceError
                ) {
                    Log.e("WebView", "Failed to load: ${error.description}")
                }
                override fun onPageFinished(view: WebView, url: String) {
                    Log.d("WebView", "Loaded: $url")
                }
            }
            loadUrl("https://mywebsite.com/privacy-policy")
        }

        setContentView(webView)

        // Device back button behavior
        onBackPressedDispatcher.addCallback(this) {
            finish()
        }
    }

    // Toolbar Up button behavior
    override fun onSupportNavigateUp(): Boolean {
        finish()
        return true
    }
}
```

-   创建 `res/xml/network_security_config.xml` 改为:

```xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <base-config cleartextTrafficPermitted="false">
    <trust-anchors>
      <certificates src="system"/>
    </trust-anchors>
  </base-config>
</network-security-config>
```

此设置可确保您的 WebView 将安全地加载 HTTPS 内容并遵守 Android 默认的网络安全政策 .

## iOS 读取允许 UX 提示

在iOS上, `checkHealthPermissions` 对读取样本权限表示乐观,因为HealthKit没有区分 拒绝从空数据获取 。 如果查询返回无结果,请提示用户验证Apple Health设置.

```typescript
import { Health, type HealthPermission } from '@flomentumsolutions/capacitor-health-extended';

const NO_DATA_HINT =
  'No data found. If you believe this is an error, please verify your settings in Apple Health.';

export async function queryWithHealthEmptyHint<T>(
  permission: HealthPermission,
  query: () => Promise<T>,
  isEmpty: (result: T) => boolean,
  showHint: (message: string) => void
): Promise<T | null> {
  const { permissions } = await Health.checkHealthPermissions({ permissions: [permission] });
  if (!permissions[permission]) {
    return null;
  }

  const result = await query();

  if (isEmpty(result)) {
    showHint(NO_DATA_HINT);
  }

  return result;
}
```

## API 密码

```
<docgen-index>

* [`isHealthAvailable()`](#ishealthavailable)
* [`checkHealthPermissions(...)`](#checkhealthpermissions)
* [`requestHealthPermissions(...)`](#requesthealthpermissions)
* [`openAppleHealthSettings()`](#openapplehealthsettings)
* [`openHealthConnectSettings()`](#openhealthconnectsettings)
* [`showHealthConnectInPlayStore()`](#showhealthconnectinplaystore)
* [`getCharacteristics(...)`](#getcharacteristics)
* [`queryAggregated(...)`](#queryaggregated)
* [`queryWorkouts(...)`](#queryworkouts)
* [`queryLatestSample(...)`](#querylatestsample)
* [`queryWeight()`](#queryweight)
* [`queryHeight()`](#queryheight)
* [`queryHeartRate()`](#queryheartrate)
* [`querySteps()`](#querysteps)
* [`saveWorkout(...)`](#saveworkout)
* [`saveMetrics(...)`](#savemetrics)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

</docgen-index>
```

### 可健康( A)

```typescript
isHealthAvailable() => Promise<{ available: boolean; }>
```

检查是否有健康API. Android:如果还回了虚假信息,Google健康连接应用程序很可能没有安装. Ưμ㼯A

**回返情况:** `Promise<{ available: boolean; }>`

* * *

### 检查健康许可(...)

```typescript
checkHealthPermissions(permissions: PermissionsRequest) => Promise<PermissionResponse>
```

返回是否每个许可 . Android:使用健康连接赠款状态. iOS:写权限严格. 阅读样本类型的权限是乐观的, 因为 HealthKit 不 区分已拒绝的对无数据; 仅在未确定读取权限时此返回为虚假 。 对于 特性,此探测器在拒绝时会错误返回. UX 提示: 如果此返回为真, 但查询不产生结果, 请提示检查 Apple Health 设置 .

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| **`permissions`** | `[PermissionsRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-permissionsrequest)` | 查询权限 |

**回返情况:** `Promise<[PermissionResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-permissionresponse)>`

* * *

### 健康许可(...)

```typescript
requestHealthPermissions(permissions: PermissionsRequest) => Promise<PermissionResponse>
```

向用户请求权限 .

Android:Apps只能请求几回权限,之后用户必须手动授权进入 健康连接应用程序。 参见 openHealthConnectSettings ()

iOS:如果已经授予或拒绝权限,这种方法只会返回而不询问用户. 在iOS系统 我们无法真正发现用户是否批准或拒绝许可。 回报值反映了以下假设: 获得许可.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| **`permissions`** | `[PermissionsRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-permissionsrequest)` | 请求权限 |

**回返情况:** `Promise<[PermissionResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-permissionresponse)>`

* * *

### 开放式健康安排( )

```typescript
openAppleHealthSettings() => Promise<void>
```

打开应用程序设置, 这有点错误, 因为健康权限被配置在 : 设置 > Apps > (苹果) 健康 > 访问和装置 > \[app-name\] 但我们不能直接去那里.

* * *

### 开放式健康连接设置( )

```typescript
openHealthConnectSettings() => Promise<void>
```

打开 Google 健康连接应用程序 iOS:异名打开了AppleHealthSettings ().

* * *

### 显示健康连接InPlayStore ()

```typescript
showHealthConnectInPlayStore() => Promise<void>
```

在 PlayStore 中打开 Google 健康连接应用程序 iOS:不采取行动就解决.

* * *

### 获取特征(...)

```typescript
getCharacteristics(request?: CharacteristicsRequest | undefined) => Promise<CharacteristicsResponse>
```

iOS只:读取生物性别,血型,出生日期,菲茨帕特里克皮肤类型等用户特征,并使用轮椅. 值在无值或未获许可时无效。 Android 不暴露这些特性; 它返回 `platformSupported: false` (单位:千美元) `platformMessage` 为 UI 提示,而不释放无效值.

通过 `fields` 允许您只请求特定特性(例如出生日期)来保持范围狭小的许可。 省略时默认所有特性.

| 参数 | 类型 |
| --- | --- |
| **`request`** | `[CharacteristicsRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-characteristicsrequest)` |

**回返情况:** `Promise<[CharacteristicsResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-characteristicsresponse)>`

* * *

### 查询分类(...)

```typescript
queryAggregated(request: QueryAggregatedRequest) => Promise<QueryAggregatedResponse>
```

查询汇总数据

-   血压总量回落到平分数 `value` 加号 `systolic`, (中文(简体) ), `diastolic`,以及 `unit`。 。 。 .
-   `total-calories` 在iOS和Android上作为活性+玄武能量得到,用于最新的样品,汇总的查询和锻炼. 我们回到月台的总卡路里度(或活性卡路里), 请求两者 `READ_ACTIVE_CALORIES` 财务报告和审定财务报表 `READ_BASAL_CALORIES` 总计.
-   体重/身高汇总每天返回最新样本(无平均值).
-   Android聚合目前支持每日桶;不支持的桶会被拒绝.
-   机器人 `distance-cycling` 在自行车练习会中记录的总距离(需要距离+解决权限).
-   每日 `bucket: "day"` 查询使用设备时区的日历日边界(从一天开始到下一个开始日),而不是跟踪24小时窗口。 关于“今天”,请发送 `startDate` 在今天的开始和 `endDate` 现在或明天的开始.

| 参数 | 类型 |
| --- | --- |
| **`request`** | `[QueryAggregatedRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-queryaggregatedrequest)` |

**回返情况:** `Promise<[QueryAggregatedResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-queryaggregatedresponse)>`

* * *

### 查询工作(...)

```typescript
queryWorkouts(request: QueryWorkoutRequest) => Promise<QueryWorkoutResponse>
```

查询工作

| 参数 | 类型 |
| --- | --- |
| **`request`** | `[QueryWorkoutRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-queryworkoutrequest)` |

**回返情况:** `Promise<[QueryWorkoutResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-queryworkoutresponse)>`

* * *

### 查询LatestSample(...)

```typescript
queryLatestSample(request: { dataType: LatestDataType; }) => Promise<QueryLatestSampleResponse>
```

查询特定数据类型的最新样本

-   最新睡眠样本返回从上~36小时开始的最新完整睡眠会话(仅睡眠状态);如果存在更长的过夜会话,会忽略较短的午睡.
-   `sleep-rem` 返回最近睡眠会话的REM持续时间(分);需要iOS 16+睡眠阶段和Health Connect REM在Android上的数据.

| 参数 | 类型 |
| --- | --- |
| **`request`** | `{ dataType: [LatestDataType](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-latestdatatype); }` |

**回返情况:** `Promise<[QueryLatestSampleResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-querylatestsampleresponse)>`

* * *

### 查询网( )

```typescript
queryWeight() => Promise<QueryLatestSampleResponse>
```

查询最新重量样本 查询LatestSample({数据类型:"重量"})周围的方便包装器.

**回返情况:** `Promise<[QueryLatestSampleResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-querylatestsampleresponse)>`

* * *

### 查询高 ()

```typescript
queryHeight() => Promise<QueryLatestSampleResponse>
```

查询最新高度样本 查询LatestSample({ data Type: 'hight'})周围的方便包装器.

**回返情况:** `Promise<[QueryLatestSampleResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-querylatestsampleresponse)>`

* * *

### 查询HeartRate ()

```typescript
queryHeartRate() => Promise<QueryLatestSampleResponse>
```

查询最新心率样本 查询LatestSample({数据类型:'心率'})周围的方便包装器.

**回返情况:** `Promise<[QueryLatestSampleResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-querylatestsampleresponse)>`

* * *

### 查询Steps( )

```typescript
querySteps() => Promise<QueryLatestSampleResponse>
```

查询最新步骤样本 围绕查询LatestSample({ dataType: 'steps' })的方便包装器.

**回返情况:** `Promise<[QueryLatestSampleResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-querylatestsampleresponse)>`

* * *

### 保存 Workout (...)

```typescript
saveWorkout(request: SaveWorkoutRequest) => Promise<SaveWorkoutResponse>
```

创建包含可选总计和路由/心率样本的解决会话.

-   iOS 存储 a `HKWorkout` (活动) 绘图类型从 `activityType`),拥有总能/距离和可选元数据/路由/心率样本.
-   Android 存储 a `ExerciseSessionRecord` 加号 `ActiveCaloriesBurnedRecord`, (中文(简体) ), `DistanceRecord`,以及 `HeartRateRecord` 提供时。 路线通过 `ExerciseRoute`。 。 。 .
-   需要匹配 WRITEQ 权限来匹配您包括的值(例如 WRITE WORKOOTS + WRITE ACALORIES + WRITE DISTANCE + WRITE HEART RATE + WRITE RUTE).

| 参数 | 类型 |
| --- | --- |
| **`request`** | `[SaveWorkoutRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-saveworkoutrequest)` |

**回返情况:** `Promise<[SaveWorkoutResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-saveworkoutresponse)>`

* * *

### 保存度量衡(...)

```typescript
saveMetrics(request: SaveMetricsRequest) => Promise<SaveMetricsResponse>
```

将用户提供的体能测量值保存到健康平台. iOS:为保留读权限而写时请求相同的公尺类型读取权限.

| 参数 | 类型 |
| --- | --- |
| **`request`** | `[SaveMetricsRequest](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-savemetricsrequest)` |

**回返情况:** `Promise<[SaveMetricsResponse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-savemetricsresponse)>`

* * *

### 接口

#### 权限响应

| Prop | 类型 |
| --- | --- |
| **`permissions`** | `[Record](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-record)<[HealthPermission](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-healthpermission), boolean>` |

#### 权限请求

| Prop | 类型 |
| --- | --- |
| **`permissions`** | `HealthPermission[]` |

#### 特征响应

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`biologicalSex`** | `[HealthBiologicalSex](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-healthbiologicalsex) | null` |  |
| **`bloodType`** | `[HealthBloodType](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-healthbloodtype) | null` |  |
| **`dateOfBirth`** | `string | null` |  |
| **`fitzpatrickSkinType`** | `[HealthFitzpatrickSkinType](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-healthfitzpatrickskintype) | null` |  |
| **`wheelchairUse`** | `[HealthWheelchairUse](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-healthwheelchairuse) | null` |  |
| **`platformSupported`** | `boolean` | 表示平台是否通过插件(真在iOS上,假在Android上)来暴露这些特性. |
| **`platformMessage`** | `string` | 可选的平台特有消息;在Android上,我们返回一个面向用户的注释,解释除非从iOS同步,否则数值仍然为空. |

#### 特征请求

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`fields`** | `CharacteristicField[]` | 要查询的特征 。 省略时默认所有特性. |

#### 查询分类回复

| Prop | 类型 |
| --- | --- |
| **`aggregatedData`** | `AggregatedSample[]` |

#### 总计样本

| Prop | 类型 |
| --- | --- |
| **`startDate`** | `string` |
| **`endDate`** | `string` |
| **`value`** | `number` |
| **`systolic`** | `number` |
| **`diastolic`** | `number` |
| **`unit`** | `string` |

#### 查询分离请求

| Prop | 类型 |
| --- | --- |
| **`startDate`** | `string` |
| **`endDate`** | `string` |
| **`dataType`** | `'steps' | 'active-calories' | 'total-calories' | 'basal-calories' | 'distance' | 'weight' | 'height' | 'heart-rate' | 'resting-heart-rate' | 'respiratory-rate' | 'oxygen-saturation' | 'blood-glucose' | 'body-temperature' | 'basal-body-temperature' | 'body-fat' | 'flights-climbed' | 'exercise-time' | 'distance-cycling' | 'mindfulness' | 'sleep' | 'hrv' | 'blood-pressure'` |
| **`bucket`** | `string` |

#### 查询工作响应

| Prop | 类型 |
| --- | --- |
| **`workouts`** | `Workout[]` |
| **`errors`** | `[Record](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-record)<string, string>` |

#### 工作

| Prop | 类型 |
| --- | --- |
| **`startDate`** | `string` |
| **`endDate`** | `string` |
| **`workoutType`** | `string` |
| **`sourceName`** | `string` |
| **`id`** | `string` |
| **`duration`** | `number` |
| **`distance`** | `number` |
| **`steps`** | `number` |
| **`calories`** | `number` |
| **`sourceBundleId`** | `string` |
| **`route`** | `RouteSample[]` |
| **`heartRate`** | `HeartRateSample[]` |

#### 路由样板

| Prop | 类型 |
| --- | --- |
| **`timestamp`** | `string` |
| **`lat`** | `number` |
| **`lng`** | `number` |
| **`alt`** | `number` |

#### 心纹样

| Prop | 类型 |
| --- | --- |
| **`timestamp`** | `string` |
| **`bpm`** | `number` |

#### 查询工作请求

| Prop | 类型 |
| --- | --- |
| **`startDate`** | `string` |
| **`endDate`** | `string` |
| **`includeHeartRate`** | `boolean` |
| **`includeRoute`** | `boolean` |
| **`includeSteps`** | `boolean` |

#### 查询Latest 样本响应

| Prop | 类型 |
| --- | --- |
| **`value`** | `number` |
| **`systolic`** | `number` |
| **`diastolic`** | `number` |
| **`timestamp`** | `number` |
| **`endTimestamp`** | `number` |
| **`unit`** | `string` |
| **`metadata`** | `[Record](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-record)<string, unknown>` |

#### 保存工作响应

| Prop | 类型 |
| --- | --- |
| **`success`** | `boolean` |
| **`id`** | `string` |

#### 保存工作请求

| Prop | 类型 |
| --- | --- |
| **`activityType`** | `[WorkoutActivityType](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-workoutactivitytype)` |
| **`startDate`** | `string` |
| **`endDate`** | `string` |
| **`calories`** | `number` |
| **`distance`** | `number` |
| **`metadata`** | `[Record](https://npmcn.com/package/%40flomentumsolutions/capacitor-health-extended/#readme-record)<string, any>` |
| **`route`** | `RouteSample[]` |
| **`heartRateSamples`** | `HeartRateSample[]` |

#### 保存计量响应

| Prop | 类型 |
| --- | --- |
| **`success`** | `boolean` |
| **`inserted`** | `number` |

#### 保存计量请求

| Prop | 类型 |
| --- | --- |
| **`weightKg`** | `number` |
| **`heightCm`** | `number` |
| **`bodyFatPercent`** | `number` |
| **`restingHeartRate`** | `number` |

### 类型异名

#### 记录

构造 T 类型 K 的一组属性类型

`{ [P in K]: T; }`

#### 保健

`'READ_STEPS' | 'READ_WORKOUTS' | 'WRITE_WORKOUTS' | 'READ_ACTIVE_CALORIES' | 'WRITE_ACTIVE_CALORIES' | 'READ_TOTAL_CALORIES' | 'WRITE_TOTAL_CALORIES' | 'READ_DISTANCE' | 'WRITE_DISTANCE' | 'READ_WEIGHT' | 'WRITE_WEIGHT' | 'READ_HEIGHT' | 'WRITE_HEIGHT' | 'READ_HEART_RATE' | 'WRITE_HEART_RATE' | 'READ_RESTING_HEART_RATE' | 'WRITE_RESTING_HEART_RATE' | 'READ_ROUTE' | 'WRITE_ROUTE' | 'READ_MINDFULNESS' | 'READ_HRV' | 'READ_BLOOD_PRESSURE' | 'READ_BASAL_CALORIES' | 'READ_RESPIRATORY_RATE' | 'READ_OXYGEN_SATURATION' | 'READ_BLOOD_GLUCOSE' | 'READ_BODY_TEMPERATURE' | 'READ_BASAL_BODY_TEMPERATURE' | 'READ_BODY_FAT' | 'WRITE_BODY_FAT' | 'READ_FLOORS_CLIMBED' | 'READ_SLEEP' | 'READ_EXERCISE_TIME' | 'READ_BIOLOGICAL_SEX' | 'READ_BLOOD_TYPE' | 'READ_DATE_OF_BIRTH' | 'READ_FITZPATRICK_SKIN_TYPE' | 'READ_WHEELCHAIR_USE'`

#### 健康生物性行为

`'female' | 'male' | 'other' | 'not_set' | 'unknown'`

#### 健康血迹图

`'a-positive' | 'a-negative' | 'b-positive' | 'b-negative' | 'ab-positive' | 'ab-negative' | 'o-positive' | 'o-negative' | 'not_set' | 'unknown'`

#### 卫生基金会

`'type1' | 'type2' | 'type3' | 'type4' | 'type5' | 'type6' | 'not_set' | 'unknown'`

#### 卫生椅

`'wheelchair_user' | 'not_wheelchair_user' | 'not_set' | 'unknown'`

#### 特性字段

`'biologicalSex' | 'bloodType' | 'dateOfBirth' | 'fitzpatrickSkinType' | 'wheelchairUse'`

#### 最新数据类型

`'steps' | 'active-calories' | 'total-calories' | 'basal-calories' | 'distance' | 'weight' | 'height' | 'heart-rate' | 'resting-heart-rate' | 'respiratory-rate' | 'oxygen-saturation' | 'blood-glucose' | 'body-temperature' | 'basal-body-temperature' | 'body-fat' | 'flights-climbed' | 'exercise-time' | 'distance-cycling' | 'mindfulness' | 'sleep' | 'sleep-rem' | 'hrv' | 'blood-pressure'`

#### 工作活动类型

`'rock-climbing' | 'climbing' | 'hiking' | 'running' | 'walking' | 'cycling' | 'biking' | 'strength-training' | 'yoga' | 'other'`

## 常见问题

### @flomentumsolutions/capacitor-health-extended 是什么？

苹果健康Kit和谷歌健康连接平台的电容插件

### 如何安装 @flomentumsolutions/capacitor-health-extended？

在项目目录运行 npm install @flomentumsolutions/capacitor-health-extended，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@capacitor/core（\>=9\.0\.0-beta\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @flomentumsolutions/capacitor-health-extended 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @flomentumsolutions/capacitor-health-extended 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @flomentumsolutions/capacitor-health-extended 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @flomentumsolutions/capacitor-health-extended 可以商用吗？

@flomentumsolutions/capacitor-health-extended 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @flomentumsolutions/capacitor-health-extended 的下载量有多少？

根据 npm 官方下载统计，@flomentumsolutions/capacitor-health-extended 在 2026/10/15 – 2026/11/13 这 30 天内被下载 31,457 次，日均约 1,049 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @flomentumsolutions/capacitor-health-extended 还在维护吗？

最新版本 0\.9\.5 发布于 2026/11/05（10 天前）；至今共发布 45 个版本，其中过去 12 个月发布了 26 个；首次发布于 2025/06/17。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

