Centrum nápovědy HealthyApps
Čeština
Centrum nápovědy
Hlavní web ↗

Hledat v nápovědě

Tréninky - formát exportu JSON

Dokumentace struktury tréninků v JSON exportech

Poslední aktualizace: 31. října 2026

Na této stránce
Verze exportu
Tréninky Verze 2 Tréninky Verze 2 Základní strukturaPovinná poleVolitelná poleČasové seskupení metrik tréninku
Tréninky Verze 1 (Legacy) Tréninky Verze 1 (Legacy) Struktura Verze 1
Související dokumentace

JSON exporty ukládají tréninky do pole workouts.

Verze exportu

Health Auto Export podporuje dvě verze exportu tréninků:

  • Verze 2 (Doporučeno): Vylepšený formát s podrobnějšími metadaty a strukturovanými daty
  • Verze 1 (Legacy): Starší formát zachovaný pro kompatibilitu se stávajícími workflow

Tréninky Verze 2

Verze 2 zahrnuje následující povinná pole a volitelná data. Příklady jsou s vypnutým Lokalizovat jednotky; zapnutí může změnit popisky jednotek v metrických řadách.

Základní struktura

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "duration": 1800
}

Povinná pole

  • id (String): Jedinečný identifikátor tréninku
  • name (String): Název typu tréninku (např. "Running", "Cycling", "Swimming")
  • start (Date): Čas začátku tréninku ve formátu yyyy-MM-dd HH:mm:ss Z
  • end (Date): Čas konce tréninku ve formátu yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Doba trvání tréninku v sekundách

Volitelná pole

Volitelná pole závisí na dostupných datech a vašich volbách exportu:

Zdroj záznamu

{
  "source": {
    "name": "Workout App",
    "identifier": "com.example.workouts"
  }
}
  • source (Object): Aplikace nebo zařízení, které trénink zaznamenalo; s názvem a identifikátorem aplikace. Jednotlivá čtení metrik mají samostatné řetězce zdroje a mohou pocházet z jiné aplikace nebo zařízení.

Informace o místě

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Jedna z "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Zda byl trénink proveden uvnitř

Energie a intenzita

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "kcal/hr\u00b7kg"
  }
}
  • activeEnergyBurned (Object): Aktivní kalorie spálené během tréninku
  • totalEnergy (Object): Celkové spálené kalorie (aktivní + klidové)
  • intensity (Object): Hodnota metabolického ekvivalentu úkolu (MET)

Vzdálenost a rychlost

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  }
}
  • distance (Object): Celková ujetá vzdálenost
  • speed (Object): Průměrná rychlost vypočtená ze vzdálenosti a doby
  • avgSpeed (Object): Průměrná rychlost během tréninku
  • maxSpeed (Object): Dosažená maximální rychlost

Každý objekt obsahuje qty a units.

Převýšení

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Celkové získané převýšení
  • elevationDown (Object): Celkové ztracené převýšení

Jednotky: "ft" (stopy) nebo "m" (metry)

Environmentální data

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Teplota okolí během tréninku
  • humidity (Object): Relativní vlhkost v procentech

Jednotky teploty: "degF" (Fahrenheit) nebo "degC" (Celsius)

Pole specifická pro plavání

{
  "lapLength": {
    "qty": 0.025,
    "units": "mi"
  },
  "strokeStyle": "Freestyle",
  "swolfScore": 45,
  "salinity": "Fresh Water",
  "totalSwimmingStrokeCount": {
    "qty": 1200,
    "units": "count"
  },
  "swimCadence": {
    "qty": 30,
    "units": "count/min"
  }
}
  • lapLength (Object): Délka každého úseku
  • strokeStyle (String): Jedna z:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Skóre efektivity plavání
  • salinity (String): "Fresh Water" nebo "Salt Water"
  • totalSwimmingStrokeCount (Object): Celkový počet záběrů
  • swimCadence (Object): Záběry za minutu

Data kroků a kadence

{
  "stepCount": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 5000,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "stepCadence": {
    "qty": 180,
    "units": "count/min"
  },
  "flightsClimbed": {
    "qty": 10,
    "units": "count"
  }
}
  • stepCount (Array): Pole měření počtu kroků v čase
  • stepCadence (Object): Kroky za minutu
  • flightsClimbed (Object): Počet vystoupaných pater

Data tepové frekvence

{
  "heartRate": {
    "min": {
      "qty": 120,
      "units": "count/min"
    },
    "avg": {
      "qty": 150,
      "units": "count/min"
    },
    "max": {
      "qty": 175,
      "units": "count/min"
    }
  },
  "maxHeartRate": {
    "qty": 175,
    "units": "count/min"
  },
  "avgHeartRate": {
    "qty": 150,
    "units": "count/min"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "Min": 120,
      "Avg": 150,
      "Max": 175,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ],
  "heartRateRecovery": [
    {
      "date": "2024-02-06 07:30:00 -0800",
      "Min": 140,
      "Avg": 145,
      "Max": 150,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ]
}
  • heartRate (Object): Souhrn min, prům. a max tepové frekvence během tréninku
  • maxHeartRate (Object): Maximální tepová frekvence během tréninku
  • avgHeartRate (Object): Průměrná tepová frekvence během tréninku
  • heartRateData (Array): Podrobná měření z tréninku; končí, když trénink skončí
  • heartRateRecovery (Array): Oddělená měření ze dvou minut ihned po skončení tréninku

Souhrnné tepové frekvence používají zaznamenané hodnoty tréninku, když jsou dostupné; jinak se spoléhají na čtení tepové frekvence tréninku. Exportovaná čtení zahrnují měření během pauz; proto se špičky a průměry mohou lišit od souhrnu.

Pole časových řad

Když je zapnuto „Zahrnout metriky tréninku“, mnoho metrik může být zahrnuto jako pole časových řad:

{
  "activeEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 50,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "basalEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "cyclingCadence": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 90,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ],
  "cyclingDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.5,
      "units": "mi",
      "source": "Apple Watch"
    }
  ],
  "cyclingPower": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 200,
      "units": "W",
      "source": "Power Meter"
    }
  ],
  "cyclingSpeed": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 18,
      "units": "mi/hr",
      "source": "Apple Watch"
    }
  ],
  "swimDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 25,
      "units": "yd",
      "source": "Apple Watch"
    }
  ],
  "swimStroke": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "walkingAndRunningDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.25,
      "units": "mi",
      "source": "Apple Watch"
    }
  ]
}

Struktura QuantityData:

  • date (Date): Časová značka měření
  • qty (Number): Hodnota množství
  • units (String): Měrná jednotka
  • source (String, volitelné): Zdrojové zařízení nebo aplikace

Struktura HeartRateData:

  • date (Date): Časová značka měření
  • Min (Number): Minimální tepová frekvence
  • Avg (Number): Průměrná tepová frekvence
  • Max (Number): Maximální tepová frekvence
  • units (String): Jednotka (count/min s vypnutým Lokalizovat jednotky)
  • source (String, volitelné): Zdrojové zařízení nebo aplikace

Data trasy

Když je zapnuto „Zahrnout data trasy“ a trénink má data GPS:

{
  "route": [
    {
      "latitude": 37.7749,
      "longitude": -122.4194,
      "altitude": 50.5,
      "course": 45.0,
      "courseAccuracy": 5.0,
      "horizontalAccuracy": 10.0,
      "verticalAccuracy": 15.0,
      "timestamp": "2024-02-06 07:00:00 -0800",
      "speed": 7.0,
      "speedAccuracy": 0.5
    }
  ]
}

Pole umístění:

  • latitude (Number): Zeměpisná šířka GPS
  • longitude (Number): Zeměpisná délka GPS
  • altitude (Number): Nadmořská výška v metrech
  • course (Number): Směr pohybu ve stupních (0–360)
  • courseAccuracy (Number): Přesnost měření směru ve stupních
  • horizontalAccuracy (Number): Horizontální přesnost polohy v metrech
  • verticalAccuracy (Number): Vertikální přesnost polohy v metrech
  • timestamp (Date): Kdy byla poloha zaznamenána
  • speed (Number): Rychlost v metrech za sekundu
  • speedAccuracy (Number): Přesnost měření rychlosti v m/s

Metadata

{
  "metadata": {
    "customField": {
      "label": "value",
      "quantity": 123
    },
    "anotherField": [
      1,
      2,
      3
    ]
  }
}
  • metadata (Object): Další vlastní metadata spojená s tréninkem

Události, aktivity a úseky

Exporty JSON a Markdown Verze 2 mohou zahrnovat events, segments, laps a activities zaznamenané aplikací tréninku. Ty jsou dostupné i s vypnutým Zahrnout metriky tréninku. CSV a GPX tyto záznamy nezahrnují.

Se zapnutým Zahrnout metriky tréninku a vybranými souvisejícími metrikami mohou intervaly také zahrnovat vzdálenost, aktivní energii, souhrny tepové frekvence a tempo nebo rychlost aktivní doby. Hodnoty oddělují zaznamenaná měření od odhadů; nedostupné hodnoty se přeskočí.

Když je vybrána vzdálenost, splits mohou zahrnovat odhadované kilometrové a milové úseky. Mohou se lišit od úseků zaznamenávající aplikace a poslední úsek je označen jako částečný, pokud je kratší než cílová vzdálenost. Chybějící čtení vzdálenosti nebo nepodporované typy tréninků mohou zabránit výpočtu úseků.

Skóre úsilí tréninku

Exporty JSON a Markdown Verze 2 mohou zahrnovat vybrané hodnoty Skóre úsilí tréninku (effortScore) a Odhadované skóre úsilí tréninku (estimatedEffortScore). Každé je objektem obsahujícím qty a units: "appleEffortScore".

Skóre vyžadují iOS 18 nebo novější a přístup k souvisejícím datům v Apple Health. Skóre celého tréninku a aktivit jsou oddělená. Jsou nezávislá na Časovém seskupení a Zahrnout metriky tréninku; CSV je nezahrnuje.

V Procházet → Tréninky otevřete stránku exportu seznamu nebo nastavení exportu Verze 2 tréninku a poté před exportem použijte Vybrat pole exportu k výběru skóre úsilí.

Časové seskupení metrik tréninku

Při použití Verze exportu 2 a zapnutém „Zahrnout metriky tréninku“ můžete řídit úroveň detailu dat časových řad:

  • Minuty: Seskupuje metriky tréninku podle minut hodiny. První a poslední minuta mohou zahrnovat několik sekund těsně před začátkem nebo po skončení tréninku.
  • Sekundy: Seskupuje metriky tréninku podle sekund hodiny; každá časová značka označuje začátek své sekundy. První a poslední sekunda mohou zahrnovat zlomek sekundy těsně mimo trénink. Soubory jsou větší než při minutovém seskupení.

Aktivní a klidová energie používají v každé časové skupině stejné sjednocené součty jako ostatní metriky tréninku. Čtení z více zařízení nebo aplikací se zahrnují společně.

Tréninky Verze 1 (Legacy)

Verze 1 používá jednodušší strukturu. Pro nové exporty se doporučuje Verze 2.

Struktura Verze 1

{
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "activeEnergy": {
    "qty": 350,
    "units": "kcal"
  },
  "distance": {
    "qty": 3.5,
    "units": "mi"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 150,
      "units": "bpm"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

Související dokumentace