Skip to main content

Changelog

Versioning definitions:

Given a version number VERSION.MAJOR.MINOR:

  • VERSION: Incompatible API changes
  • MAJOR: New functionality in an incompatible manner, Major bug fixes. Security fixes
  • MINOR: New functionality in a backward compatible manner, Minor bug fixes, Performance improvements.

2.5.0

  • Customizable permissions
    • Now the permissions that you remove from the AndroidManifest will affect the behavior of requesting/checking permissions functions, learn more about this in the customizing permissions section.
  • Permissions Revocation
    • Added revokeHealthConnectPermissions to HCRookHealthPermissionsManager to reset all granted Health Connect permissions. Learn more about this in the Revoke permissions section
  • Improvements
    • Greatly reduced the recovery time that automatic syncs will wait before syncing again when Health Connect rate limit is exceeded to 60 minutes.
    • Improved Health Connect permissions requests behavior.
    • Optimized HCRookYesterdaySyncManager data extraction procedure.
    • Added Vo2Max granular data to oxygenation events.
    • Added current day Steps and Activity events to HCRookYesterdaySyncManager.
    • Added checkHealthConnectPermissionsPartially to HCRookHealthPermissionsManager to check if at least one Health Connect permission is granted.
  • Bug fixes
    • Fixed Samsung Health steps count -1 (the SDK will always add +1 to steps count from Samsung).
  • Breaking changes
    • HCRookHealthPermissionsManager.requestHealthConnectPermissionsUpdates now returns a HealthConnectPermissionsSummary instead of a Bool.
    • HCRookHealthPermissionsManager.requestAndroidPermissionsUpdates now returns a AndroidPermissionsSummary instead of a Bool.
    • HCRookYesterdaySyncManager.scheduleYesterdaySync no longer requires you provide your credentials and environment. It will use the last used credentials and environment.
  • Other
    • Removed unused class HCSyncInstruction

Dependency updates

  • rook-sdk (Gradle): 1.6.01.8.0
  • com.google.protobuf:protobuf-java (Gradle): 4.28.1 → Removed
  • com.google.protobuf:protobuf-javalite (Gradle): New → 4.28.3

2.4.0

  • Improvements
    • Improved sleep summary extraction to prevent bad Samsung Health behaviour.
  • Bugfixes
    • Fixed error when trying to delete a user that no longer exists using RookConfiguration.deleteUserFromRook, in this case the function will return success.
    • Fixed preferences being restored by Google backup.
  • Secure storage
    • Now you can set the file name and password of the storage that this SDK will use to save sensitive information, read more about this in the security section of the documentation. Please note that this is an optional configuration the SDK will use a default file name and auto-generate a password if you don't set one.
  • RookHelpers
    • HCRookHelpers.shouldSyncFor is deprecated, you no longer need to use this function since HCRookEventManager and HCRookSummaryManager already performs all shouldSyncFor checks.
  • DataSources
    • Added revokeDataSource to HCRookDataSources this will allow you to disconnect a user from the provided DataSourceType.

Dependency updates

  • rook_sdk_core: 0.4.00.4.3
  • rook-sdk (Gradle): 1.5.01.6.0
  • com.google.crypto.tink:tink-android (Gradle): New → 1.4.0-rc2
  • androidx.security:security-crypto (Gradle): 1.1.0-alpha01 → Removed
  • org.jetbrains.kotlinx:kotlinx-serialization-json (Gradle): New → 1.5.0
  • net.zetetic:sqlcipher-android (Gradle): New → 4.6.0@aar
  • androidx.sqlite:sqlite (Gradle): New → 2.3.1

2.3.0

  • New Permissions methods
    • The HCRookHealthPermissionsManager class will contain an improved version of all permissions methods, follow the single permission class migration guide to successfully migrate all deprecated methods to its new implementation.
    • Permissions classes deprecations
      • AndroidStepsManager permissions methods were deprecated.
      • HCRookYesterdaySyncPermissions and all its methods were deprecated.
      • HCRookHealthPermissionsManager.checkAvailability was deprecated.
      • HCRookHealthPermissionsManager.checkPermissions was deprecated.
      • HCRookHealthPermissionsManager.requestPermissions was deprecated.
    • The methods requestHealthConnectPermissions and requestAndroidPermissions will return a RequestPermissionsStatus.
    • Added a stream for Health Connect permissions, listen to requestHealthConnectPermissionsUpdates to receive granted/denied status every time requestHealthConnectPermissions is called.
    • Added a stream for Android permissions, listen to requestAndroidPermissionsUpdates to receive granted/denied status every time requestAndroidPermissions is called.
  • HCRookYesterdaySyncManager
    • scheduleYesterdaySync no longer requires the doOnEnd parameter.
  • Exceptions
    • RequestQuotaExceededException will require the next import package:rook_sdk_core/rook_sdk_core.dart.
    • MissingAndroidPermissionsException will require the next import package:rook_sdk_core/rook_sdk_core.dart.
    • HealthConnectNotInstalledException will require the next import package:rook_sdk_core/rook_sdk_core.dart.
    • DeviceNotSupportedException will require the next import package:rook_sdk_core/rook_sdk_core.dart.
  • Other
    • Fixed documentation typos

Dependency updates

  • rook-sdk (Gradle): 1.4.01.5.0
  • rook_sdk_core: 0.2.10.4.0

2.2.0

  • Added enableBackgroundSync to RookConfiguration.
  • RookConfiguration parameters were changed to required named parameters.
  • When enableBackgroundSync is true yesterday sync and steps tracking will start when initRook is called.
  • Improved rookYesterdaySync behaviour when switching users.
  • Improved user storage, please verify that you are following the recommended user update procedure.
  • Added optional parameter redirectUrl to getAvailableDataSources and presentDataSourceView in HCRookDataSources class.
  • Logcat logging improvements.

Dependency updates

  • rook-sdk (Gradle): 1.3.11.4.0

2.1.1

  • Optimized all data types upload process
  • If a data type is not authorized, it will be counted as empty to extract only the authorized data types.
  • Fixed Android and HealthConnect steps events datetime

Dependency updates

  • rook-sdk (Gradle): 1.3.01.3.1

2.1.0

  • Breaking changes
    • SyncStatus will require the next import package:rook_sdk_core/rook_sdk_core.dart.
  • Optimizations
    • When calling deleteUserFromRook all pending syncs will be deleted.
    • Modified the internal user creation process to only succeed if all data sources are registered correctly.
    • Optimized Sleep Summaries upload.
  • Bug fixes
    • Fixed a bug where the data sources Health Connect and Android could have different user ids assigned, from this version all data sources will be checked after initialization and if their user ids don't match they will be deleted (locally) and you will have to call updateUserID to assign the correct userID. Using getUserID you can verify the current status of the userID, more information in update userID.
    • Fixed a bug that caused NullPointerException when trying to get the Exception message in native.
  • Health Connect
    • Added HCRookEventManager.syncTodayHealthConnectStepsCount to sync the steps count of the current day, if successful it will return a SyncStatusWithData.Synced object with the steps information that was uploaded or SyncStatusWithData.RecordsNotFound if the SDK could not find any steps records.
  • Android steps
    • The background steps feature will require individual authorization, if you encounter the exception SDKNotAuthorizedException please contact ROOK support.
    • The background steps feature will send a Steps Event every hour instead of a summary every 12 hours.
    • AndroidStepsManager.getTodaySteps was removed.
    • AndroidStepsManager.isActive was renamed to AndroidStepsManager.isBackgroundAndroidStepsActive.
    • AndroidStepsManager.start was renamed to AndroidStepsManager.enableBackgroundAndroidSteps.
    • AndroidStepsManager.stop was renamed to AndroidStepsManager.disableBackgroundAndroidSteps.
    • Added AndroidStepsManager.syncTodayAndroidStepsCount to sync the steps count of the current day, if successful it will return the number of steps taken.

Dependency updates

  • rook-sdk (Gradle): 1.2.41.3.0
  • rook_sdk_core: 0.1.20.2.1

2.0.0

  • Breaking changes
    • All classes were converted to "static" classes, meaning that you won't need to create an instance to use its methods, also, to avoid instance creation all constructors access have been changed to private.

1.2.0

  • Removed deprecated methods syncYesterdaySummaries and syncYesterdayEvents
  • Breaking changes
    • The methods checkPermissions(HCHealthPermission hcHealthPermission) and requestPermissions(HCHealthPermission hcHealthPermission) have been replaced by of checkPermissions() and requestPermissions().

Dependency updates

  • rook-sdk (Gradle): 1.2.31.2.4

1.1.1

  • Fixed missing Proto files error

Dependency updates

  • rook-sdk (Gradle): 1.2.21.2.3

1.1.0

  • Added RookDataSources to help developers build a custom API data sources lists, more information in Data Sources
  • Added presentDataSourceView to show a pre-built connections page.
  • Sleep Summary sync improvements.

New dependencies:

  • androidx.lifecycle:lifecycle-viewmodel-ktx → 2.6.2
  • androidx.activity:activity-ktx → 1.8.2
  • androidx.swiperefreshlayout:swiperefreshlayout → 1.1.0
  • androidx.constraintlayout:constraintlayout → 2.1.4
  • com.google.android.material:material → 1.10.0
  • io.coil-kt:coil → 2.5.0

Dependency updates

  • rook-sdk (Gradle): 1.2.01.2.2
  • rook_sdk_core: 0.1.00.1.2

1.0.1

Yesterday sync manager

Added a new class HCRookYesterdaySyncManager, to schedule an immediate health data synchronization, see Sync health data automatically for more information.

HCRookYesterdaySyncManager is the equivalent of rookYesterdaySync but focused on hybrid environments like flutter. If you are already using the rookYesterdaySync in the native side we strongly recommend you to migrate to this new feature, but beware that you MUST NOT use rookYesterdaySync and HCRookYesterdaySyncManager at the same time as it can provoke unexpected behavior.

Dependency updates

  • rook-sdk (Gradle): 1.1.01.2.0

1.0.0

  • Replaced AndroidStepsTracker with AndroidStepsManager
  • If multiple sleep sessions are found when calling RookSummaryManager.syncSleepSummary all sessions will be synced individually.
  • Migrated to new ROOK SDKs api (This change is internal and does not require any change in your code).

Background steps re-work

The steps feature was re-worked and is now named as "Background steps"

The background steps feature now uploads summaries of daily total steps to ROOK servers, go to Background steps documentation to see the new implementation steps.

Dependency updates

  • rook-sdk (Gradle): 0.8.11.1.0
  • security-crypto (Gradle): 1.0.01.1.0-alpha01

0.5.1

  • Fixed crash on Android 13 or lower devices when using rookYesterdaySync without having health connect installed.

If you are using rookYesterdaySync you also MUST update the native rook-sdk dependency in your app module build.gradle to 0.8.1

Dependency updates

  • rook-sdk (Gradle): 0.8.00.8.1

0.5.0

  • Major performance improvements
  • Added Physical events to rookYesterdaySync
  • Deprecated HCRookSummaryManager.syncYesterdaySummaries and HCRookEventManager.syncYesterdayEvents.

Automatic Sync

The following data types were added to rookYesterdaySync:

  • Physical Event

If you have already implemented rookYesterdaySync this change won't require any other change in your end, after updating to this version you will start to notice Physical events extraction and upload logs.

Dependency updates

  • rook-sdk (Gradle): 0.7.10.8.0

0.4.1

  • Fixed rookYesterdaySync crash on Android 10

  • Added Permissions and Query declarations to this SDK manifest, adding these declarations to your own manifest is optional as they will be included in the merged manifest.

  • rook-sdk (Gradle): 0.7.00.7.1

0.4.0

  • Renamed HealthPermission to HCHealthPermission.
  • Added HCRookYesterdaySyncPermissions
  • Added Sync health data automatically tutorial.
  • Sync methods of HCRookSummaryManager and HCRookEventManager now return Future<SyncStatus> instead of Future<void>

Dependency updates

  • protobuf: ">=2.0.0 <3.0.0"">=3.0.0 <4.0.0"
  • protobuf (Gradle): 3.24.43.25.3
  • rook-sdk (Gradle): 0.5.60.7.0

0.3.4

  • Updated rook-transmission module:
    • All data types date and datetime properties will be converted to the device timezone before uploading.

0.3.3

  • Improved syncYesterdaySummaries and syncYesterdayEvents performance.

0.3.2

  • Added syncYesterdaySummaries and syncYesterdayEvents
  • When initializing with initRook an attempt to autoconfigure the userID (using a previously saved userID) will be made, more information in Update userID

0.3.1

  • Added deleteUserFromRook, this function will remove a user from both server and preferences, see Removing registered users for more information.

0.3.0

  • Added StepsTracker to extract steps from phones, more information in the Steps Tracker Documentation
  • When registering a user the Health Connect data source status will be changed to active.
  • When requesting permissions the Health Connect data source status will be changed to active.
  • Changed all clientPassword instances to secretKey.

0.2.1

  • Optimized the number of calls to Health Connect required to extract Temperature Events.

0.2.0

Android 14

This version will only compile against Android 14 (SDK 34). Please follow the steps to migrate

  1. Update your gradle version to 8.1.2
  2. Update your compileSdk and targetSdk to 34
  3. Update your sourceCompatibility, targetCompatibility and jvmTarget to Java 17

Changes

  • Permissions methods have changed, see Permissions for more information.
  • Privacy policy configuration has changed, see Privacy policy for more information.
  • Updated data access links, see Privacy policy for more information.
  • Added new obfuscation rules, see Obfuscation for more information.

Known issues

If you are using the flutter plugin receive_intent you may encounter some compilation errors, this is because receive_intent is not ready for java 17 and gradle 8+, this can be solved by editing the receive_intent build.gradle file, add the following inside the android block:

android {
namespace "com.bhikadia.receive_intent"

compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
}

0.1.0

  • Changed setLocalLoggingLevel to enableNativeLogs, see Logging for more information.
  • Added RookEnvironment to configure internal behaviour, see Environment for more information.
  • Changed RookConfiguration constructor parameters, see Initialize for more information.

0.0.2

0.0.1

  • Initial release.