> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spikeapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Flutter SDK Changelog

> A changelog documenting version updates and changes of Spike SDK for Flutter platform.

## 4.5.24

* Updated Android SDK to `4.5.22`
* Updated iOS SDK to `4.5.21`
* Added **backfill** on the v3 connection to upload historical health data for a chosen number of days. Call it after you have granted the relevant permissions (HealthKit on iOS; Health Connect and/or Samsung Health Data on Android).
  ```dart theme={null}
  await spikeConnection.backfill(
    statisticTypes: statisticTypes,
    metricTypes: metricTypes,
    activityConfigs: [activityConfig],
    sleepConfigs: [sleepConfig],
  );
  ```
* **iOS (HealthKit):** added `requestPermissionsFromHealthKitAndBackfill` — requests read permissions for the given categories, then starts a backfill. Data for today and yesterday is pushed before the call resolves; older days continue in the background.
  ```dart theme={null}
  await spikeConnection.requestPermissionsFromHealthKitAndBackfill(
    statisticTypes: statisticTypes,
    metricTypes: metricTypes,
    activityConfigs: [activityConfig],
    sleepConfigs: [sleepConfig],
  );
  ```
* **Android (Samsung Health Data):** added `requestPermissionsFromSamsungHealthDataAndBackfill` — enables Samsung Health Data integration, requests permissions for the given categories, then starts a backfill.
* **Android (Health Connect):** added `requestPermissionsFromHealthConnectAndBackfill` — enables Health Connect integration, requests permissions for the given categories, then starts a backfill.
* **iOS:** If after updating you get errors while building iOS app please do following:
  1. `rm -rf ios/Pods/ ios/Podfile.lock` - delete old pods
  2. `cd ios; pod install --repo-update` - install updated pods
  3. Open project in Xcode and do a full clean: `Product -> Clean build folder` or `Shift + Command + K`

## 4.5.14

* Added `RecordConfig` for configuring records queries:
  * `includeSamples` - whether to include samples (raw data points) in the response
* Updated `getRecords` to accept an optional `RecordConfig` parameter:
  ```
  spikeConnection.getRecords(
      ofTypes: metricTypes,
      from: startDate,
      to: endDate,
      filter: StatisticsFilter(excludeManual: true),
      config: RecordConfig(includeSamples: true),
  )
  ```
* Fixed ActivityConfig parsing
* Updated Android SDK to `4.5.12`
* Updated iOS SDK to `4.5.11`
  * IMPORTANT! If after updating you get errors while building iOS app please do following:
    1. `rm -rf ios/Pods/ ios/Podfile.lock` - delete old pods
    2. `cd ios; pod install --repo-update` - install updated pods
    3. Open project in XCode 26 and do a full clean: `Product -> Clean build folder` or `Shift + Command + K`

## 4.4.14

* Updated Android SDK to `4.4.12`
* Updated iOS SDK to `4.4.11`
* Updated `Unit` enum with new values:
  * Added: `miles`, `mPerSec`, `fahrenheit`, `ms`, `seconds`, `degrees`, `sleepStage`, `secPerM`, `rpm`, `spm`, `breathsPerMin`, `g`, `lbs`, `st`, `mmHg`, `mLPerKgPerMin`, `uV`, `mgPerDl`, `w`
  * Removed: `kmh`, `kmPerMin`
* Improved data communication with API
* Enhanced the `getSleep` endpoint.
  Important:
  * Dates provided are now interpreted as dates only; the time component is ignored when querying the API.
  * The primary night sleep period is associated with the calendar date on which it ends.

## 4.3.184

* Updated Android SDK to `4.3.142`
  * Internal improvements
* Updated iOS SDK to `4.3.161`
  * Better Nutrition Facts Label Recognition response parsing

## 4.3.174

* MetricType: added namespace with metric allowlists for API requests:
  * `MetricType.availableForRecordsRequest` – list of metric types available for records requests
  * `MetricType.availableForActivitiesRequest` – list of metric types available for activities requests
  * `MetricType.availableForSleepRequest` – list of metric types available for sleep requests
  * `MetricType.availableForPersonRequest` – list of metric types available for person requests
* Updated iOS SDK to `4.3.151`:
  * Improved data push to API
  * Fixed workout digest generation for caching
  * Improved client cache configuration

## 4.3.164

* Updated Android SDK to `4.3.132`:
  * Samsung Health Data Integration - Major Expansion:
  * Added support for reading and pushing the following data types from Samsung Health:
    * Workouts (exercises)
    * Sleep data
    * Body composition data (weight, height, BMI, body fat)
    * User profile data (weight, height, birth date, gender)
    * Blood pressure measurements
    * Skin temperature measurements
    * Heart rate measurements
    * Blood oxygen saturation (SpO2) measurements
    * Body temperature measurements
  * More efficient Samsung Health Data pushes
  * Large Samsung Health Data pushes are now automatically split into smaller chunks for reliable delivery
  * Large Health Connect pushes are now automatically split into smaller chunks for reliable delivery

## 4.3.154

* Added Nutrition Facts Label Recognition for extracting nutritional information from label photos.
  For more information please visit our [documentation](https://docs.spikeapi.com).
  * `recognizeNutritionFactsLabel({required String imageBase64, NutritionFactsLabelRecognitionConfig? config})` - Analyze a nutrition facts label image and extract nutritional data
* Added methods for manual nutrition record management:
  * `createNutritionRecord(NutritionRecord nutritionRecord)` - Insert a new nutrition record with custom data
  * `replaceNutritionRecord(NutritionRecord nutritionRecord)` - Replace an existing nutrition record completely
* Added `NutritionRecordUtils` for creating and manipulating nutrition records:
  * `NutritionRecordUtils.create({...})` - Create a new nutrition record with specified properties
  * `record.withIngredient(ingredient)` - Add an ingredient to a record
  * `record.withoutIngredient(ingredient)` - Remove an ingredient from a record
  * `record.withServingSize(servingSize, unit)` - Update serving size and unit
* Added `NutritionRecordIngredientUtils` for creating and manipulating ingredients:
  * `NutritionRecordIngredientUtils.create({...})` - Create a new nutrition record ingredient
  * `ingredient.withNutritionalField(nutritionalField, value)` - Set a nutritional field value
  * `ingredient.withoutNutritionalField(nutritionalField)` - Remove a nutritional field
  * `ingredient.withScaledServingSize(newServingSize)` - Scale serving size and nutritional values proportionally
* Nutrition AI methods now return `NutritionRecordAnalysisResult` instead of `NutritionRecord`.
  This separates processing metadata (status, failure reason) from the actual nutrition data.
  The following methods are affected:
  * `analyzeNutrition()` → returns `Future<NutritionRecordAnalysisResult>`
  * `getNutritionRecords()` → returns `Future<List<NutritionRecordAnalysisResult>>`
  * `getNutritionRecord()` → returns `Future<NutritionRecordAnalysisResult?>`
  * `updateNutritionRecordServingSize()` → returns `Future<NutritionRecordAnalysisResult>`
  * `createNutritionRecord()` → returns `Future<NutritionRecordAnalysisResult>`
  * `replaceNutritionRecord()` → returns `Future<NutritionRecordAnalysisResult>`
    The `NutritionRecordAnalysisResult` contains:
  * `recordId` - The record ID
  * `status` - Processing status (pending, processing, completed, failed, updated)
  * `failureReason` - Reason for failure (if status is failed)
  * `uploadedAt` - Upload timestamp
  * `nutritionRecord` - The actual `NutritionRecord` (null if status is not completed/updated)
* Update Android SDK to `4.3.122`
* Update iOS SDK to `4.3.141`
  * IMPORTANT! If after updating you get errors while building iOS app please do following:
    1. `rm -rf ios/Pods/ ios/Podfile.lock` - delete old pods
    2. `cd ios; pod install --repo-update` - install updated pods
    3. Open project in XCode 26 and do a full clean: `Product -> Clean build folder` or `Shift + Command + K`

## 4.3.144

* Added Nutrition AI features for analyzing food images. For more information please visit our [documentation](https://docs.spikeapi.com).
  * `analyzeNutrition(imageBase64, consumedAt, config)` - Analyze food image synchronously and wait for results
  * `submitNutritionForAnalysis(imageBase64, consumedAt, config)` - Analyze food image asynchronously, returns record ID
  * `getNutritionRecords(from, to)` - Retrieve nutrition records for a date range
  * `getNutritionRecord(id)` - Get a specific nutrition record by ID
  * `deleteNutritionRecord(id)` - Delete a nutrition record
  * `updateNutritionRecordServingSize(id, servingSize)` - Update serving size for a nutrition record
* Added new `Provider`:
  * luna
* Added new `ProviderSource` types:
  * fitbitSkinTemperatureSummary
  * garminWellnessSkinTemperatureSummary
  * lunaSleep
* Removed `ProviderSource` types:
  * fitbitUserActivitiesList
  * fitbitUserActivitiesDate
  * fitbitUserActivitiesHeartDate
  * fitbitUserActivitiesHeartDateInterday
  * withingsMeasureGetWorkouts
  * withingsMeasureGetActivity
  * withingsMeasureGetMeas
* Removed `ActivityTag`:
  * onBicycle
* Removed `Provider`:
  * wahoo

## 4.3.134

* Update Android SDK to `4.3.102`
  * Enable Health Connect integration in admin console right after enabling integration
  * Enable Samsung Health Data integration in admin console right after enabling integration
* Update iOS SDK to `4.3.121`
  * Enable HealthKit integration in admin console right after requesting permissions

## 4.3.124

* Added ability to read mindfulness activities:

```
spikeConnection.getActivities(
    config: ActivityConfig(activityCategories: {ActivityCategory.mindfulness})
    from: dateFrom,
    to: dateTo
)
```

* Added ability to check Android Health Connect features availability:

```
const isMindfulessAvailable = spikeConnection.isHealthConnectFeatureAvailable(HealthConnectFeature.FEATURE_MINDFULNESS_SESSION)
```

* Added new ActivityTag types:
  * mindfulness
* Added new ActivityType types:
  * ecgMeasurement
  * triathlon
  * biathlon
  * duathlon
  * rollerblading
  * skateboarding
  * skating
  * calisthenics
  * weightLifting
  * canoeing
  * floorball
  * jiuJitsu
  * diving
  * orienteering
  * bootcamp
  * motorsports
  * horseriding
  * paragliding
  * multisport
  * bloodTest
  * mindfulnessSession
* Added new ProviderSource types:
  * appleHealthkitMindfulness
  * healthConnectMindfulnessSession
* Added a new ActivityCategory type:
  * mindfulness
* Updated Android SDK to `4.3.92`
  * Updated Health connect to `1.1.0-rc03`
  * Updated compileSdk to `36`
  * Updated gradle to `8.13`
  * `android.permission.health.READ_MINDFULNESS` user permission should be added to `AndroidManifest.xml` file
* Updated iOS SDK to `4.3.111`

## 4.3.114

* Updated Android SDK to `4.3.82`:
  * Workaround for the Android 15 bug to make background delivery more resilient
  * More efficient pushes to Spike API

## 4.3.104

* Updated Android SDK to `4.3.72`:
  * Allow reading `SPO2` and `SWIMMING_LENGTHS` in `getActivities`
  * Allow reading `SPO2` and `SKIN_TEMPERATURE` in `getSleeps`
* Updated iOS SDK to `4.3.101`:
  * Improved how sleep data is read for sleep score

## 4.3.94

* Updated Android SDK to `4.3.62`:
  * Optimized background delivery

## 4.3.84

* Added `.coros` `Provider`
* Updated `ProviderSource` enum
* Added statistics: `stressScore`, `recoveryScore`, `activityScore`
* Updated Android SDK to `4.3.52`:
  * Added `Provider.COROS`
  * Updated `ProviderSource` enum
  * Added new Statistic types:
    * STRESS\_SCORE
    * RECOVERY\_SCORE
    * ACTIVITY\_SCORE
  * Added new Metric types for `getSleep` request:
    * SLEEP\_DURATION
    * SLEEP\_DURATION\_AWAKE
    * SLEEP\_DURATION\_DEEP
    * SLEEP\_DURATION\_LIGHT
    * SLEEP\_DURATION\_NAP
    * SLEEP\_DURATION\_REM
    * SLEEP\_EFFICIENCY
    * SLEEP\_INTERRUPTIONS
    * SLEEP\_LATENCY
    * SLEEP\_SCORE
* Updated iOS SDK to `4.3.91`:
  * Added `.coros` `Provider`
  * Updated `ProviderSource` enum
  * Improved the way data is sent to API to reduce the size and speed of calls to Spike
  * Added new Statistic types:
    * stressScore
    * recoveryScore
    * activityScore
  * Added new Metric types for `getSleep` request:
    * sleepDuration
    * sleepDurationAwake
    * sleepDurationDeep
    * sleepDurationLight
    * sleepDurationNap
    * sleepDurationRem
    * sleepEfficiency
    * sleepInterruptions
    * sleepLatency
    * sleepScore
  * Better keychain compatibility
    NOTE: If you use the keychain in your app with a service name equal to your bundle
    identifier, please check if it contains key named `spikeApiToken` and delete it.

## 4.3.74

* Added new `SpikeSDKV3.setLogCallback()` method to receive logs from the native SDK.
  Example usage:
  ```dart theme={null}
  await SpikeSDKV3.setLogCallback(
    callback: (level, message) {
      print("[SpikeSDK.${level.toJson()}] $message");
    },
  );
  ```
* Added a new metric type:
  * `glucose`
* Updated Android SDK to `4.3.42`:
  * New `MetricType.GLUCOSE` available in both Health Connect and Samsung Health
  * Update Samsung Health Data SDK to version 1.0.0 (available only on Android 29+)
* Updated iOS SDK to `4.3.81`:
  * Added `MetricType`: `.glucose`

## 4.3.64

* Updated Android SDK to `4.3.93`:
  * Deprecated the old Spike `SpikeSDK`
  * Switch to protobuf java-lite 3.25.5 for better compatibility with firebase
* Updated iOS SDK to `4.3.71`:
  * Deprecated the old Spike `SpikeSDK`
  * Added `disableHealthKitIntegration` and `isHealthKitIntegrationEnabled` functions in spike connection

## 4.3.54

* Added new providers added: dexcom, freestyleLibre, huawei, strava
* Added .distanceSwimming into the list of metrics available in activities
* Updated native iOS SDK Version to `4.3.61`
* Updated native Android SDK Version to `4.3.22`

## 4.3.44

* Added Samsung Health Integration on Android
* Updated native Android SDK Version to `4.3.12`:
  * New statistics for Health Connect:
  * HEARTRATE
  * HEARTRATE\_MAX
  * HEARTRATE\_MIN
  * New metrics for Health Connect:
  * HEARTRATE
  * HEARTRATE\_MAX
  * HEARTRATE\_MIN
  * Improved transport protocol for even faster requests to Spike API
  * Added Samsung Health Integration for:
  * `StatisticType`s:
    * STEPS
    * DISTANCE\_TOTAL
    * CALORIES\_BURNED\_ACTIVE
    * CALORIES\_BURNED\_TOTAL
    * CALORIES\_BURNED\_BASAL
  * Added new `Provider`:
  * SAMSUNG\_HEALTH\_DATA
  * Added new `ProviderSource`:
  * SAMSUNG\_HEALTH\_DATA\_AGGREGATION
  * Renamed `MetricType`s:
  * SLEEP\_BREATHING\_RATE to BREATHING\_RATE
  * SLEEP\_BREATHING\_RATE\_MIN to BREATHING\_RATE\_MIN
  * SLEEP\_BREATHING\_RATE\_MAX to BREATHING\_RATE\_MAX
* Updated native iOS SDK Version to `4.3.51`:
  * Added new `Provider`:
  * samsungHealthData
  * Added new `ProviderSource`:
  * samsungHealthDataAggregation
  * Renamed `MetricTypes`:
  * `sleepBreathingRate` to `breathingRate`
  * `sleepBreathingRateMin` to `breathingRateMin`
  * `sleepBreathingRateMax` to `breathingRateMax`

## 4.3.34

* Updated native iOS SDK Version to `4.3.41`
  * IntegrationInitConfig is now codable
  * Additional check in `getIntegrationInitUrl` for email in ultrahuman integration
* Updated native Android SDK Version to `4.2.82`
  * Added `IntegrationInitConfigUtils` for usage in Flutter and React Native libraries
  * Additional check in `getIntegrationInitUrl` for email in ultrahuman integration
* New provider: `ultrahuman`
  When integrating with Ultrahuman, you have to provide ultrahuman user email in `IntegrationInitConfig.providerUserIdentifier`. Example:
  ```
  spikeConnection.getIntegrationInitUrl(provider: .ultrahuman, config: IntegrationInitConfig(providerUserIdentifier: "user@mail.com"))
  ```

## 4.3.24

* Updated native iOS SDK Version to `4.3.31`
  * Improve how statistics are read from HealthKit
  * New metric types:
    * bodyFat
    * bodyFatMax
    * bodyFatMin
    * bodyBoneMass
    * bodyMassIndex
    * bloodPressureSystolic
    * bloodPressureSystolicMax
    * bloodPressureSystolicMin
    * bloodPressureDiastolic
    * bloodPressureDiastolicMax
    * bloodPressureDiastolicMin
  * New fields in `UserProperties`:
    * bodyBoneMass
    * bodyFat
    * bodyMassIndex
  * Updated `getIntegrationInitUrl`. Now it accepts `IntegrationInitConfig` config object where you can pass:
    * `redirectUri`: will override the one set in admin console
    * `state`: when the authorization server redirects back to the client, it includes the `state` value originally sent
    * `providerUserIdentifier`: at the moment used (and required) only when integrating with ultrahuman
  * New provider: `ultrahuman`
    When integrating with Ultrahuman, you have to provide ultrahuman user email in `IntegrationInitConfig.providerUserIdentifier`. Example:
    ```
    spikeConnection.getIntegrationInitUrl(provider: .ultrahuman, config: IntegrationInitConfig(providerUserIdentifier: "user@mail.com"))
    ```
  * Improved transport protocol for background delivery
* Updated native Android SDK Version to `4.2.72`
  * Added new `MetricType`s:
    * BODY\_FAT
    * BODY\_FAT\_MAX
    * BODY\_FAT\_MIN
    * BODY\_BONE\_MASS
    * BODY\_MASS\_INDEX
    * BLOOD\_PRESSURE\_SYSTOLIC
    * BLOOD\_PRESSURE\_SYSTOLIC\_MIN
    * BLOOD\_PRESSURE\_SYSTOLIC\_MAX
    * BLOOD\_PRESSURE\_DIASTOLIC
    * BLOOD\_PRESSURE\_DIASTOLIC\_MIN
    * BLOOD\_PRESSURE\_DIASTOLIC\_MAX
    * New fields in `UserProperties`:
    * BODY\_FAT
    * BODY\_BONE\_MASS
    * BODY\_MASS\_INDEX
  * Updated `getIntegrationInitUrl`. Now it accepts `IntegrationInitConfig` config object where you can pass:
    * `redirectUri`: will override the one set in admin console
    * `state`: when the authorization server redirects back to the client, it includes the `state` value originally sent
    * `providerUserIdentifier`: at the moment used (and required) only when integrating with ultrahuman
  * Added new provider: `ultrahuman`
    When integrating with Ultrahuman, you have to provide Ultrahuman user email in `IntegrationInitConfig.providerUserIdentifier`. Example:
    ```
    spikeConnection.getIntegrationInitUrl(provider = Provider.ULTRAHUMAN, config = IntegrationInitConfig(providerUserIdentifier = "user@mail.com"))
    ```

## 4.3.14

* Updated native iOS SDK Version to `4.3.11`
  * Improved transport protocol for even faster requests to Spike API
  * Added new statistic metrics: heartrate, heartrateMax, heartrateMin, heartrateResting
* Updated native Android SDK Version to `4.2.62`
  * Added new statistic metrics:
    * HEARTRATE\_RESTING
    * SLEEP\_DURATION\_TOTAL
  * Added new statistic metrics (only from non-HealthConnect providers):
    * HEARTRATE
    * HEARTRATE\_MIN
    * HEARTRATE\_MAX
  * Metric types updates
  * Better proguard settings for uniqueness of generated class names
  * Fixed statistics when in different time zones
  * Added consumer proguard rules

## 4.2.74

* Removed outdated example. Please follow [Flutter SDK Usage Guide](/sdk-docs/flutter/usage-guide#step-3%3A-get-data).

## 4.2.64

* Updated readme file

## 4.2.54

* Updated native iOS SDK Version to iOS 4.2.41
  * Fixed the date format in JSON push

## 4.2.44

* Fixed JSON parsing of user info response

## 4.2.34

* Added new metrics:
  * spo2
  * bodyTemperature
  * skinTemperature (available only on getSleep())
  * sleepBreathingRate (available only on getSleep())
  * sleepBreathingRateMin (available only on getSleep())
  * sleepBreathingRateMax (available only on getSleep())
  * sleepBreathingRateAvg (available only on getSleep())
* Updated native iOS SDK Version to iOS 4.2.31
* Updated native Android SDK Version to 4.2.42
* Added sleepScore property in the Record type

## 4.2.24

* Added new metric: `VO2MAX` available in `getRecords` and `getActivities`
* Changed hrv metric names: `hrvRmssd`, `hrvSdnn`
* Added new statistic: `sleepScore`
* Updated native iOS SDK Version to iOS 4.2.21
  * Added new `getUserProperties` method for reading: weight, height, timezone, birthdate, gender
* Updated native Android SDK Version to 4.2.32
  * Added new `getUserProperties` method for reading: weight, height, timezone from Health Connect
  * Added new `getUserProperties` method for reading: birthdate, gender from other providers

## 4.2.14

* Updated native Android SDK Version to 4.2.12

* Updated native iOS SDK Version to 4.2.11

* 🔴 Breaking Change: Update to `SpikeSDKV3.createConnection`. The method

  `Spike.createConnectionAPIv3({appId:, authToken:, customerEndUserId:})` has been updated to:

  `SpikeSDKV3.createConnection(applicationId:, signature:, endUserId:)`

* The `applicationId` parameter must now be provided as an **`int`**.

* The `signature` parameter now requires an **`HMAC-SHA256` signed user ID**.

* ⚠️ **Security Notice:**
  * **Do not store your HMAC signing key within the application itself**, as this poses a security risk.
  * Instead, generate and provide the signature from your backend.

* **Legacy Support**: For **development purposes only**, the previous connection flow remains available under the renamed method:
  `SpikeSDKV3.createConnectionLegacy(appId:, authToken:, customerEndUserId:)`

## 4.1.14

* Background delivery for both iOS and Android
* Added triathlon activity type
* Better error messages in iOS SpikeSDK wrapper
* Updated native Android SDK Version to 4.1.12
  * Add background delivery (see documentation for more information)
  * Health Connect library updated to 1.1.0-alpha11
  * Compile SDK and target SDK updated to 35
  * Updated kotlin version to 1.9.25
  * Updated other dependencies
  * Updated gradle to 8.8.0
* Updated native iOS SDK Version to 4.1.11
  * Added background delivery
  * Implemented sending more sleep data

## 4.0.14

* Completely new SDK! Please see our official documentation for more details and usage instructions
* Updated native Android SDK Version to 4.0.22
* Updated native iOS SDK Version to 4.0.12
* Added getIntegrationInitUrl method to SpikeConnectionV3: generates integration url for the given provider

## 1.3.3

* Android: Fixed build issue on AGP8+

## 1.3.2

* Updated native Android SDK Version to 3.1.4
  * Added more raw data to calories request

## 1.3.1

* Updated native iOS SDK Version to 2.4.2:
  * Added customer user id validation
* Updated native Android SDK Version to 3.1.1:
  * Better way to authenticate with API
  * Added saved session validation before the connection is established
  * Added customer user id validation

## 1.3.0

* Added ECG handling in iOS.
* Added empty results when ECG is asked for on an Android device.
* Made connections array in iOS thread-safe.
* Updated structure of `SpikeSource` data model.
* README updated with ECG data type.
* Updated native iOS SDK Version to 2.4.1:
  * Fix the timezone in case it changes while the app is running.
  * Better way to authenticate with API.
  * ECG support.
  * Add trigger property to extractAndPostData request.
  * Add cycling parameters to Activities stream data request.

## 1.2.10

* Updated native Android SDK Version.
* Updated native iOS SDK Version.
* README updated.

## 1.2.9

* Updated native iOS SDK Version.

## 1.2.8

* Updated native Android SDK Version.
* Updated native iOS SDK Version.
* PROD/DEV environments separation added.
* Background delivery handling is documented for the iOS.
* Method to disable background delivery introduced.
* setEnvironment method removed as environment must be set when creating the connection.

## 1.2.7

* Updated native Android SDK Version.
* Updated native iOS SDK Version.

## 1.2.6

* Updated native Android SDK Version.
* Updated native iOS SDK Version.

## 1.2.5

* SpikeStepData class name renamed into SpikeStepsData to keep aligned with Dart coding conventions.
* Intraday steps data introduced.

## 1.2.4

* Updated native Android SDK Version.

## 1.2.3

* Updated native Android SDK Version.

## 1.2.2

* Updated native Android SDK Version

## 1.2.1

* Updated native Android SDK Version

## 1.2.0

* Updated README with Android 14 set-up guide
* Ensured permissions are checked and requested when the user tries to extract the data
* Introduced ensurePermissionsAreGrantedV2 method, so it would become possible to get more information about what happened when requesting for permissions, which might be useful for Flutter Android apps
* Improved processing of the Health Connect permissions when a user cancels giving permissions, gives them partially, or performs some other unexpected behavior
* Updated native iOS SDK Version

## 1.1.1

* Android Native SDK version updated

## 1.1.0

* Updated iOS Native SDK version
* Updated Android Native SDK version
* Recreated Android Native SDK permissions handling

## 1.0.27

* Updated iOS Native SDK version

## 1.0.26

* Updated iOS Native SDK version

## 1.0.25

* Updated iOS Native SDK version
* Updated Android Native SDK version
* Added the method `isPackageInstalled` to Android

## 1.0.24

* Updated iOS Native SDK version

## 1.0.23

* Updated iOS Native SDK version
* Updated Android Native SDK version
* Added more information on exceptions thrown in the README

## 1.0.22

* Updated iOS Native SDK version

## 1.0.21

* Updated iOS Native SDK version

## 1.0.20

* Updated native Android SDK version usage
* Made it possible to set the environment when using Android SDK

## 1.0.19

* Added the method `getSpikeEndUserId` into the `SpikeConnection`

## 1.0.18

* Updated Android SDK integration

## 1.0.17

* Removed pack, unpack, since it is clients who need to manage their state
* Integrated web hook connections into `SpikeConnection`
* Reduced minimum SDK version to 28
* Reduced compile an SDK version to 33
* Updated examples
* Updated README
* Fully changed the integration with Android SDK

## 1.0.16

* Implemented returning boolean after requesting permissions.

## 1.0.15

* Native wrapping with native Android SDK release build issues resolved
* Resolved requesting permissions issues using native Android SDK
* Updated README
* Updated examples

## 1.0.14

* Native wrapping with native Android SDK finalized

## 1.0.13

* Introduced native wrapping with native Android SDK
* Introduced native wrapping with native iOS SDK

## 1.0.12

* Min iOS version reduced for the sleep data

## 1.0.11

* Updated README
* Updated examples

## 1.0.10

* Updated README
* Ensured dart doc is working

## 1.0.9

* Updated README
* Made sure that casting when using connection.extractData() is no longer needed

## 1.0.8

* Updated README
* Updated data keys expectations per changed backend

## 1.0.7

* iOS workouts reading problems resolved
* Made sure floors are added from the iOS data
* Added functionality that allows configuration of the background delivery tasks
* Added debouncing for the background delivery tasks of five seconds, so they would not trigger unnecessary sending to the backend
* Fixed an issue of reading sleep data. Ensured user is requested for additional permissions that are required to collect the statistics needed regarding sleep
* Made sure that in sleep statistics zeroes would be changed into null when no data is read
* Updated README with the background delivery example information

## 1.0.6

* Breathing data issues resolved
* Workouts reading issues resolved
* Updated README
* Updated SpikeSDK so that SpikeSDK.initialize() would not be needed as per documentation

## 1.0.5

* Better background delivery configuration into SpikeSDK added

## 1.0.4

* Improved logging
* Improved sending data to the backend
* Android Health Connect Core recreated using direct API for the Health Connect due to the failure of the Flutter package to properly convert data under the release mode

## 1.0.3

* Added more logging
* Fixed IDs usage

## 1.0.2

* Improved logging

## 1.0.1

* Fully rewritten of the communication with the backend
* Introduced reading the body data
* Improved calculation of time
* Added more logging

## 1.0.0

* Complete rewrite of the library to follow the Spike standards required

## 0.0.10

* Sleep data reading and sending support introduced

## 0.0.9

* Activity groups support introduced

## 0.0.8

* Removed some data for summary
* Workouts data times rounding added, so conversions would not fail

## 0.0.7

* Updated examples
* Summary data reading improved even further
* Added the way to send separate identifier data
* Updated README

## 0.0.6

* Introduced workout data reading
* Improved reading of summary data, and now all the summary data can be read

## 0.0.5

* Background delivery now takes the last three days for the data to be sent
* Removed calories, and basal energy burned introduced instead

## 0.0.4

* Background delivery support introduced
* Better code organization regarding storing some configured data in the storage
* Background delivery interval support introduced
* Improvements regarding date and time resolution when resolving or sending the data

## 0.0.3

* Made sure background tasks would take correct intervals to send the data
* Added more information to logging
* Made sure events logged would be sorted by the date in ascending order

## 0.0.2

* Improved handling of the background tasks registration
* Support to set custom task ID introduced to check if background tasks actually work
* Support for event tracking introduced. Tracking can be enabled or disabled

## 0.0.1

* Apple HealthKit data reading functionality with the ability to send this data to the server of your choice
