スタートガイド
インストール手順と、このプラグインの完全なMarkdownガイドを含むセットアッププロンプトをコピーします。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-health`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/health/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
インストール
「インストール」セクションAIアシストによるセットアップでプラグインをインストールできます。以下のコマンドを使用して、お使いのAIツールに Capgo のスキルを追加してください:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins次に、以下のプロンプトを使用します:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-health` plugin in my project.手動セットアップを希望する場合は、以下のコマンドを実行してプラグインをインストールし、下記のプラットフォーム別の手順に従ってください:
bun add @capgo/capacitor-healthbunx cap syncインポート
「インポート」セクションimport { Health } from '@capgo/capacitor-health';クイックスタート
「クイックスタート」セクション利用可能性を確認し、必要なタイプへの読み取りアクセスを要求してから、日付範囲をクエリします。
import { Health } from '@capgo/capacitor-health';
async function loadTodaysSteps() { const { available, reason } = await Health.isAvailable(); if (!available) { console.warn('Health data not available', reason); return; }
await Health.requestAuthorization({ read: ['steps', 'heartRate'], write: ['weight'], });
const today = await Health.readSamples({ dataType: 'steps', startDate: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(), endDate: new Date().toISOString(), limit: 500, });
return today;}例:30日を超えるAndroidの履歴
セクション「例: 30日を超える Android の履歴」Health Connect は、ユーザーが許可しない限り履歴の読み取りに上限を設けています READ_HEALTH_DATA_HISTORY。以下でオプトインしてください requestHistoryAccess: true 、そして Android マニフェストに権限を宣言します:
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_HISTORY" />await Health.requestAuthorization({ read: ['steps'], requestHistoryAccess: true,});検証 historyAccessAvailable と historyAccessAuthorized 結果に基づいて、設定へのディープリンクを表示するかどうかを判断します。
例: 体重サンプルを記録
セクション「例: 体重サンプルのログ出力」await Health.saveSample({ dataType: 'weight', value: 72.4, unit: 'kilogram', startDate: new Date().toISOString(), endDate: new Date().toISOString(),});例: ステージ付きの睡眠
セクション「例: 段階付きの睡眠」リクエスト sleep における read、その後、夜間ウィンドウのサンプルを読み取ります。プラットフォームがステージデータを公開している場合、サンプルには以下が含まれる場合があります SleepStage セグメント(deep, rem, light、など)。
よくある落とし穴
「よくある落とし穴」セクション- 認可はデータ型ごとです:読み書きするすべての
HealthDataTypeデータ型を事前にリクエストしてください。 - Android Health Connect のインストール状態: 使用
isAvailableとopenHealthConnectSettingsプロバイダーが存在しない、または無効な場合。 - 履歴の権限は Android のみです:iOS では無視されます(30日間の上限は使用されません)。
- プロンプト表示前のチェック: 使用
checkAuthorization呼び出し前にUIをレンダリングするために使用requestAuthorizationを再度呼び出してください。
API の概要
「API 概要」セクションisAvailable
「isAvailable」セクション現在のプラットフォームがネイティブのヘルス SDK をサポートしているかどうかを返します。
import { Health } from '@capgo/capacitor-health';
const result = await Health.isAvailable();console.log(result);requestAuthorization
「requestAuthorization」セクション指定されたデータ型への読み取り/書き込みアクセスをリクエストします。
import { Health } from '@capgo/capacitor-health';
const result = await Health.requestAuthorization({ read: ['steps'] });console.log(result);checkAuthorization
「checkAuthorization」セクションユーザーにプロンプトを出さずに、指定されたデータ型の認可ステータスを確認します。
import { Health } from '@capgo/capacitor-health';
const result = await Health.checkAuthorization({ read: ['steps'] });console.log(result);readSamples
「readSamples」セクション指定されたデータ型のサンプルを、指定された期間内に読み取ります。
import { Health } from '@capgo/capacitor-health';
const result = await Health.readSamples({ dataType: 'steps' });console.log(result);saveSample
「saveSample」セクション1件のサンプルをネイティブのヘルスストアに書き込みます。
import { Health } from '@capgo/capacitor-health';
await Health.saveSample({ dataType: 'steps', value: 1,});openHealthConnectSettings
「openHealthConnectSettings」セクションHealth Connectの設定画面を開きます(Androidのみ)。 iOSでは、このメソッドは何もしません。
ユーザーがHealth Connectの権限を管理できるよう誘導したり、利用できない場合はHealth Connectのインストールを促したりするために使用します。
import { Health } from '@capgo/capacitor-health';
await Health.openHealthConnectSettings();showPrivacyPolicy
「showPrivacyPolicy」セクションHealth Connect 用のアプリのプライバシーポリシーを表示します(Android のみ)。 iOS では、このメソッドは何も行いません。
ユーザーが権限ダイアログで「プライバシーポリシー」をタップしたときに Health Connect が表示するのと同じプライバシーポリシー画面を表示します。
プライバシーポリシーの URL は、アプリの strings.xml に「health_connect_privacy_policy_url」という名前の文字列リソースを追加するか、assets 内の www/privacypolicy.html に HTML ファイルを置くことで設定できます。
import { Health } from '@capgo/capacitor-health';
await Health.showPrivacyPolicy();queryWorkouts
「queryWorkouts」セクションネイティブのヘルスストアからワークアウトセッションをクエリします。 iOS(HealthKit)と Android(Health Connect)に対応しています。
import { Health } from '@capgo/capacitor-health';
const result = await Health.queryWorkouts({ workoutType: 'americanFootball' });console.log(result);queryAggregated
「queryAggregated」セクションネイティブのヘルスストアから集計されたヘルスデータをクエリします。 データを時間バケット(時・日・週・月)にまとめ、合計・平均・最小・最大などの操作を行います。 広い日付範囲で個別のサンプルを取得するより効率的です。
iOS(HealthKit)と Android(Health Connect)に対応しています。
import { Health } from '@capgo/capacitor-health';
const result = await Health.queryAggregated({ dataType: 'steps' });console.log(result);型リファレンス
「型リファレンス」セクションAvailabilityResult
「AvailabilityResult」セクションexport interface AvailabilityResult { available: boolean; /** Platform specific details (for debugging/diagnostics). */ platform?: 'ios' | 'android' | 'web'; reason?: string;}AuthorizationOptions
「AuthorizationOptions」セクションexport interface AuthorizationOptions { /** Data types that should be readable after authorization. */ read?: HealthDataType[]; /** Data types that should be writable after authorization. */ write?: HealthDataType[]; /** * Android only: request access to health data older than 30 days. * Requires `android.permission.health.READ_HEALTH_DATA_HISTORY` in the manifest. */ requestHistoryAccess?: boolean;}AuthorizationStatus
「AuthorizationStatus」セクションexport interface AuthorizationStatus { readAuthorized: HealthDataType[]; readDenied: HealthDataType[]; writeAuthorized: HealthDataType[]; writeDenied: HealthDataType[];}QueryOptions
「QueryOptions」セクションexport interface QueryOptions { /** The type of data to retrieve from the health store. */ dataType: HealthDataType; /** Inclusive ISO 8601 start date (defaults to now - 1 day). */ startDate?: string; /** Exclusive ISO 8601 end date (defaults to now). */ endDate?: string; /** Maximum number of samples to return (defaults to 100). */ limit?: number; /** Return results sorted ascending by start date (defaults to false). */ ascending?: boolean;}ReadSamplesResult
「ReadSamplesResult」セクションexport interface ReadSamplesResult { samples: HealthSample[];}WriteSampleOptions
「WriteSampleOptions」セクションexport interface WriteSampleOptions { dataType: HealthDataType; value: number; /** * Optional unit override. If omitted, the default unit for the data type is used * (count for `steps`, meter for `distance`, kilocalorie for `calories`, bpm for `heartRate`, kilogram for `weight`). */ unit?: HealthUnit; /** ISO 8601 start date for the sample. Defaults to now. */ startDate?: string; /** ISO 8601 end date for the sample. Defaults to startDate. */ endDate?: string; /** Metadata key-value pairs forwarded to the native APIs where supported. */ metadata?: Record<string, string>; /** For blood pressure data, the systolic value in mmHg. Required when dataType is 'bloodPressure'. */ systolic?: number; /** For blood pressure data, the diastolic value in mmHg. Required when dataType is 'bloodPressure'. */ diastolic?: number;}QueryWorkoutsOptions
「QueryWorkoutsOptions」セクションexport interface QueryWorkoutsOptions { /** Optional workout type filter. If omitted, all workout types are returned. */ workoutType?: WorkoutType; /** Inclusive ISO 8601 start date (defaults to now - 1 day). */ startDate?: string; /** Exclusive ISO 8601 end date (defaults to now). */ endDate?: string; /** Maximum number of workouts to return (defaults to 100). */ limit?: number; /** Return results sorted ascending by start date (defaults to false). */ ascending?: boolean; /** * Anchor for pagination. Use the anchor returned from a previous query to continue from that point. * On iOS, this is the ISO 8601 cursor returned by the previous query. On Android, this uses * Health Connect's pageToken. * Omit this parameter to start from the beginning. */ anchor?: string;}QueryWorkoutsResult
「QueryWorkoutsResult」セクションexport interface QueryWorkoutsResult { workouts: Workout[]; /** * Anchor for the next page of results. Pass this value as the anchor parameter in the next query * to continue pagination. If undefined or null, there are no more results. */ anchor?: string;}QueryAggregatedOptions
「QueryAggregatedOptions」セクションexport interface QueryAggregatedOptions { /** The type of data to aggregate from the health store. */ dataType: HealthDataType; /** Inclusive ISO 8601 start date (defaults to now - 1 day). */ startDate?: string; /** Exclusive ISO 8601 end date (defaults to now). */ endDate?: string; /** Time bucket for aggregation (defaults to 'day'). */ bucket?: BucketType; /** Aggregation operation to perform (defaults to 'sum'). */ aggregation?: AggregationType;}QueryAggregatedResult
「QueryAggregatedResult」セクションexport interface QueryAggregatedResult { samples: AggregatedSample[];}HealthDataType
「HealthDataType」セクションexport type HealthDataType = | 'steps' | 'distance' | 'calories' | 'heartRate' | 'weight' | 'sleep' | 'respiratoryRate' | 'oxygenSaturation' | 'restingHeartRate' | 'heartRateVariability' | 'bloodPressure' | 'bloodGlucose' | 'bodyTemperature' | 'height' | 'flightsClimbed' | 'exerciseTime' | 'distanceCycling' | 'bodyFat' | 'basalBodyTemperature' | 'basalCalories' | 'totalCalories' | 'mindfulness' | 'workouts';HealthSample
「HealthSample」セクションexport interface HealthSample { dataType: HealthDataType; value: number; unit: HealthUnit; startDate: string; endDate: string; sourceName?: string; sourceId?: string; /** Platform-specific unique identifier (HealthKit UUID on iOS, Health Connect metadata ID on Android). */ platformId?: string; /** For sleep data, indicates the sleep state (e.g., 'asleep', 'awake', 'rem', 'deep', 'light'). */ sleepState?: SleepState; /** For blood pressure data, the systolic value in mmHg. */ systolic?: number; /** For blood pressure data, the diastolic value in mmHg. */ diastolic?: number;}Source of Truth
「Source Of Truth」セクションこのページはプラグインの src/definitions.tsから生成されています。upstream で公開 API が変更されたら、再度 sync を実行してください。
Getting Startedの続きを進める
「Getting Started からの続き」セクション使用している場合 スタートガイド ダッシュボードと API の運用を計画するには、これを次と連携させます @capgo/capacitor-health の使用 @capgo/capacitor-health を使う際のネイティブ機能については、 API の概要 「API の概要」の実装の詳細については、 はじめに 「はじめに」における実装の詳細については、 API キー および「API Keys」の実装の詳細については、 デバイス 実装の詳細については Devices を参照してください。