Per iniziare
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
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.
Puoi usare il nostro setup assistito dall'IA per installare il plugin. Aggiungi le skill Capgo al tuo strumento di IA usando il seguente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi usa il seguente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-health` plugin in my project.Se preferisci la configurazione manuale, installa il plugin eseguendo questi comandi e segui le istruzioni specifiche per piattaforma qui sotto:
bun add @capgo/capacitor-healthbunx cap syncImporta
Sezione intitolata “Import”import { Health } from '@capgo/capacitor-health';Avvio rapido
Sezione intitolata “Quick start”Verifica la disponibilità, richiedi l'accesso in lettura per i tipi necessari e interroga un intervallo di date.
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;}Esempio: cronologia Android oltre i 30 giorni
Sezione intitolata “Esempio: cronologia Android oltre i 30 giorni”Health Connect limita le letture storiche a meno che l'utente non conceda READ_HEALTH_DATA_HISTORY. Attivalo con requestHistoryAccess: true e dichiara il permesso nel tuo Android manifest:
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_HISTORY" />await Health.requestAuthorization({ read: ['steps'], requestHistoryAccess: true,});Ispeziona historyAccessAvailable e historyAccessAuthorized sul risultato per decidere se mostrare un deep link alle impostazioni.
Esempio: loggare un campione di peso
Sezione intitolata “Esempio: loggare un campione di peso”await Health.saveSample({ dataType: 'weight', value: 72.4, unit: 'kilogram', startDate: new Date().toISOString(), endDate: new Date().toISOString(),});Esempio: sonno con fasi
Sezione intitolata “Esempio: sonno con fasi”Richiesta sleep nella read, quindi leggi i campioni per una finestra notturna. Quando la piattaforma espone i dati di stage, i campioni possono includere SleepStage segmenti (deep, rem, light, ecc.).
Errori comuni
Sezione intitolata “Errori comuni”- L'autorizzazione è per tipo di dati: richiedi ogni
HealthDataTypeche leggi o scrivi in anticipo. - Stato di installazione di Health Connect su Android: usa
isAvailableeopenHealthConnectSettingsquando il provider è assente o disabilitato. - Il permesso History è solo per Android: ignorato su iOS, che non usa il limite di 30 giorni.
- Verifica prima del prompt: usa
checkAuthorizationper renderizzare la UI prima di chiamarerequestAuthorizationancora.
Panoramica API
Sezione intitolata “Panoramica API”isAvailable
Sezione intitolata “isAvailable”Restituisce se la piattaforma corrente supporta la salute nativa SDK.
import { Health } from '@capgo/capacitor-health';
const result = await Health.isAvailable();console.log(result);requestAuthorization
Sezione intitolata “requestAuthorization”Richiede l'accesso in lettura/scrittura ai tipi di dati forniti.
import { Health } from '@capgo/capacitor-health';
const result = await Health.requestAuthorization({ read: ['steps'] });console.log(result);checkAuthorization
Sezione intitolata “checkAuthorization”Verifica lo stato di autorizzazione per i tipi di dati forniti senza mostrare prompt all'utente.
import { Health } from '@capgo/capacitor-health';
const result = await Health.checkAuthorization({ read: ['steps'] });console.log(result);readSamples
Sezione intitolata “readSamples”Legge i campioni per il tipo di dati specificato nell'intervallo di tempo indicato.
import { Health } from '@capgo/capacitor-health';
const result = await Health.readSamples({ dataType: 'steps' });console.log(result);saveSample
Sezione intitolata “saveSample”Scrive un singolo campione nel health store nativo.
import { Health } from '@capgo/capacitor-health';
await Health.saveSample({ dataType: 'steps', value: 1,});openHealthConnectSettings
Sezione intitolata “openHealthConnectSettings”Apre la schermata di impostazioni di Health Connect (solo Android). Su iOS, questo metodo non esegue alcuna azione.
Usalo per indirizzare gli utenti a gestire i permessi di Health Connect o a installare Health Connect se non disponibile.
import { Health } from '@capgo/capacitor-health';
await Health.openHealthConnectSettings();showPrivacyPolicy
Sezione intitolata “showPrivacyPolicy”Mostra l'informativa sulla privacy per Health Connect (solo Android). Su iOS, questo metodo non fa nulla.
Visualizza la stessa schermata dell'informativa sulla privacy che Health Connect mostra quando l'utente tocca “Privacy policy” nel dialogo dei permessi.
L'URL dell'informativa sulla privacy può essere configurato aggiungendo una risorsa stringa chiamata “health_connect_privacy_policy_url” nel file strings.xml della tua app, oppure inserendo un file HTML in www/privacypolicy.html nei tuoi assets.
import { Health } from '@capgo/capacitor-health';
await Health.showPrivacyPolicy();queryWorkouts
Sezione intitolata “queryWorkouts”Interroga le sessioni di allenamento dallo store health nativo. Supportato su iOS (HealthKit) e Android (Health Connect).
import { Health } from '@capgo/capacitor-health';
const result = await Health.queryWorkouts({ workoutType: 'americanFootball' });console.log(result);queryAggregated
Sezione intitolata “queryAggregated”Interroga i dati sanitari aggregati dallo store health nativo. Aggrega i dati in intervalli temporali (ora, giorno, settimana, mese) con operazioni come somma, media, min o max. È più efficiente rispetto a recuperare singoli campioni per intervalli di date ampi.
Supportato su iOS (HealthKit) e Android (Health Connect).
import { Health } from '@capgo/capacitor-health';
const result = await Health.queryAggregated({ dataType: 'steps' });console.log(result);Riferimento ai tipi
Sezione: “Type Reference”AvailabilityResult
Sezione intitolata “AvailabilityResult”export interface AvailabilityResult { available: boolean; /** Platform specific details (for debugging/diagnostics). */ platform?: 'ios' | 'android' | 'web'; reason?: string;}AuthorizationOptions
Sezione intitolata “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
Sezione intitolata “AuthorizationStatus”export interface AuthorizationStatus { readAuthorized: HealthDataType[]; readDenied: HealthDataType[]; writeAuthorized: HealthDataType[]; writeDenied: HealthDataType[];}QueryOptions
Sezione intitolata “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
Sezione intitolata “ReadSamplesResult”export interface ReadSamplesResult { samples: HealthSample[];}WriteSampleOptions
Sezione intitolata “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
Sezione intitolata “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
Sezione intitolata “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
Sezione intitolata “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
Sezione intitolata “QueryAggregatedResult”export interface QueryAggregatedResult { samples: AggregatedSample[];}HealthDataType
Sezione intitolata “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
Sezione intitolata “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;}Fonte di verità
Sezione intitolata “Fonte di verità”Questa pagina è generata dal src/definitions.ts. Riesegui la sync quando il API pubblico cambia upstream.
Continua da Getting Started
Sezione intitolata “Continua da Getting Started”Se stai usando Per iniziare per pianificare le operazioni della dashboard e di API, collegalo a Utilizzo di @capgo/capacitor-health per la funzionalità nativa in Utilizzo di @capgo/capacitor-health, Panoramica API per i dettagli di implementazione in Panoramica di API, Introduzione per i dettagli di implementazione in Introduzione, Chiavi API per i dettagli di implementazione in Chiavi API, e Dispositivi per i dettagli di implementazione in Dispositivi.