Skip to main content

Changelog V1

Changelog for 1.X.X releases.

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.
rook-sdk supports background reads

However you will need to update your project to Android 15 (SDK 35) for this reason we are dividing the rook-sdk into 2 branches; 1.X.X will contain releases without any background functionality and 2.0.0-alpha-XX will be the branch with background functionality.

Please note that when the 2.0.0 branch goes out of ALPHA, the 1.X.X branch won't be updated anymore, until then, both branches will be on pair in terms of bug fixes and new features.

1.8.0

What's new since 1.7.0

  • Improvements
    • Added current day Steps and Activity events to rookYesterdaySync and RookContinuousUploadManager
    • rookYesterdaySync no longer requires you provide your credentials and environment. It will use the last used credentials and environment.
  • RookContinuousUploadManager
    • Added RookContinuousUploadManager to launch on demand 29 days historic health data synchronizations. Please note that this MUST NOT be used if you are already using the rookYesterdaySync delegate. Learn more about this in the Continuous Upload section.
  • Permissions Revocation
    • Added revokeHealthConnectPermissions to RookPermissionsManager (Instance and Companion) to reset all granted Health Connect permissions. Learn more about this in the Revoke permissions section.
  • RookStepsManager
    • Added isBackgroundAndroidStepsActive to the Companion object of RookStepsManager.
    • Added enableBackgroundAndroidSteps to the Companion object of RookStepsManager.
    • Added disableBackgroundAndroidSteps to the Companion object of RookStepsManager.
    • Added syncTodayAndroidStepsCount to the Companion object of RookStepsManager.
  • RookDataSources
    • Added getAvailableDataSources to the Companion object of RookDataSources.
    • Added revokeDataSource to the Companion object of RookDataSources.
    • Added presentDataSourceView to the Companion object of RookDataSources.

1.7.0

What's new since 1.6.0

  • Breaking changes
    • Parameter onFinished of RookPermissionsManager.registerPermissionsRequestLauncher is now required.
    • Parameter onFinished of RookPermissionsManager.registerPermissionsRequestLauncher lambda now returns a HealthConnectPermissionsSummary instead of a Boolean.
    • HealthConnectPermissionsSummary will be nullable for the fragment variant of registerPermissionsRequestLauncher a null value will be returned if the fragment is not associated with a context.
    • RookPermissionsManager.launchPermissionsRequest now requires a context.
    • RookPermissionsManager.launchPermissionsRequest was converted into a suspend function.
  • Improvements
    • Greatly reduced the recovery time that automatic syncs will wait before syncing again when Health Connect rate limit is exceeded.
    • Improved Health Connect permissions requests behavior.
    • Added EXTRA_HEALTH_CONNECT_PERMISSIONS_PARTIALLY_GRANTED to check if at least one permission was granted by the user. This extra will always be included in the ACTION_HEALTH_CONNECT_PERMISSIONS action.
    • Added checkHealthConnectPermissionsPartially to RookPermissionsManager (Instance and Companion) to check if at least one Health Connect permission is granted.
    • Optimized yesterdaySync data extraction procedure.
    • Added Vo2Max granular data to oxygenation events.
  • Bug fixes
    • Fixed Samsung Health steps count -1 (the SDK will always add +1 to steps count from Samsung).
  • 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.

1.7.0-alpha01

  • Breaking changes
    • Parameter onFinished of RookPermissionsManager.registerPermissionsRequestLauncher is now required.
    • Parameter onFinished of RookPermissionsManager.registerPermissionsRequestLauncher lambda now returns a HealthConnectPermissionsSummary instead of a Boolean.
    • HealthConnectPermissionsSummary will be nullable for the fragment variant of registerPermissionsRequestLauncher a null value will be returned if the fragment is not associated with a context.
    • RookPermissionsManager.launchPermissionsRequest now requires a context.
    • RookPermissionsManager.launchPermissionsRequest was converted into a suspend function.
  • Improvements
    • Greatly reduced the recovery time that automatic syncs will wait before syncing again when Health Connect rate limit is exceeded.
    • Improved Health Connect permissions requests behavior.
    • Added EXTRA_HEALTH_CONNECT_PERMISSIONS_PARTIALLY_GRANTED to check if at least one permission was granted by the user. This extra will always be included in the ACTION_HEALTH_CONNECT_PERMISSIONS action.
    • Added checkHealthConnectPermissionsPartially to RookPermissionsManager (Instance and Companion) to check if at least one Health Connect permission is granted.
    • Optimized yesterdaySync data extraction procedure.
  • 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.

1.6.0

What's new since 1.5.0

  • Breaking changes
    • RookConfiguration.getUserID() was converted into a suspend function.
  • Improvements
    • Improved sleep summary extraction to prevent bad Samsung Health behavior.
  • Bugfixes
    • Added a proguard rule to avoid obfuscation of RookStepsManager.Companion.
    • 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
    • RookHelpers.shouldSyncFor is deprecated, you no longer need to use this function since RookEventManager and RookSummaryManager already performs all shouldSyncFor checks.
  • DataSources
    • Added revokeDataSource to RookDataSources this will allow you to disconnect a user from the provided DataSourceType.
    • Deprecated property image in DataSource, replace with imageUrl.

Dependency updates

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

1.6.0-alpha02

  • Improvements
    • Improved sleep summary extraction to prevent bad Samsung Health behaviour.

1.6.0-alpha01

  • Breaking changes
    • RookConfiguration.getUserID() was converted to a suspend function.
  • Bugfixes
    • Added a proguard rule to avoid obfuscation of RookStepsManager.Companion.
    • 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.
  • DataSources
    • Added revokeDataSource to RookDataSources this will allow you to disconnect a user from the provided DataSourceType.
    • Deprecated property image in DataSource, replace with imageUrl.

Dependency updates

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

1.5.0

What's new since 1.4.0

  • New Permissions class
    • The new RookPermissionsManager class will contain an improved version of all permissions functions, follow the single permission class migration guide to successfully migrate all deprecated functions to its new implementation.
    • Permissions classes deprecations
      • RookStepsPermissions and all its functions were deprecated.
      • RookYesterdaySyncPermissions and all its functions were deprecated.
      • RookHealthPermissionsManager and all its functions were deprecated.
      • RookStepsPermissions.isAvailable(context) was deprecated.
    • The functions requestHealthConnectPermissions and requestAndroidPermissions will return a RequestPermissionsStatus.
    • Added broadcast Health Connect permissions, register a broadcast receiver with ACTION_HEALTH_CONNECT_PERMISSIONS and use EXTRA_HEALTH_CONNECT_PERMISSIONS_GRANTED to receive granted/denied status every time requestHealthConnectPermissions is called.
    • Added broadcast Android permissions, register a broadcast receiver with ACTION_ANDROID_PERMISSIONS and use EXTRA_ANDROID_PERMISSIONS_GRANTED to receive granted/denied status every time requestHealthConnectPermissions is called.
  • Yesterday Sync
    • rookYesterdaySync no longer requires the doOnEnd parameter.
    • scheduleYesterdaySync no longer requires the doOnEnd parameter.
    • RookYesterdaySyncLazy no longer requires the doOnEnd parameter.
  • Exceptions
    • Removed unused exception InternalAndroidException
    • Renamed MissingPermissionsException to MissingHealthConnectPermissionsException
    • New Exceptions
      • BadUserTimeZoneException
      • UserNotDeletedException
      • UserNotRegisteredException
  • Other
    • Fixed documentation typos

1.5.0-alpha03

  • Fixed shouldRequestAndroidPermissions returning false when there is 1 missing permission.
  • Fixed requestHealthConnectPermissions overriding the value of registerPermissionsRequestLauncher.
  • Added EXTRA_ANDROID_PERMISSIONS_DIALOG_DISPLAYED to ACTION_ANDROID_PERMISSIONS broadcast, this field contains whether the permissions dialog was displayed or not.

1.5.0-alpha02

  • Exceptions
    • Removed unused exception InternalAndroidException
    • Renamed MissingPermissionsException to MissingHealthConnectPermissionsException
    • New Exceptions
      • BadUserTimeZoneException
      • UserNotDeletedException
      • UserNotRegisteredException
  • Fixed documentation typos

1.5.0-alpha01

  • New Permissions class
    • The new RookPermissionsManager class will contain an improved version of all permissions functions, follow the single permission class migration guide to successfully migrate all deprecated functions to its new implementation.
    • Deprecations
      • RookStepsPermissions and all its functions were deprecated.
      • RookYesterdaySyncPermissions and all its functions were deprecated.
      • RookHealthPermissionsManager and all its functions were deprecated.
      • RookStepsPermissions.isAvailable(context) was deprecated.
    • The functions requestHealthConnectPermissions and requestAndroidPermissions will return a RequestPermissionsStatus.
    • Added broadcast Health Connect permissions, register a broadcast receiver with ACTION_HEALTH_CONNECT_PERMISSIONS and use EXTRA_HEALTH_CONNECT_PERMISSIONS_GRANTED to receive granted/denied status every time requestHealthConnectPermissions is called.
    • Added broadcast Android permissions, register a broadcast receiver with ACTION_ANDROID_PERMISSIONS and use EXTRA_ANDROID_PERMISSIONS_GRANTED to receive granted/denied status every time requestHealthConnectPermissions is called.

1.4.0

What's new since 1.3.1

  • 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 RookDataSources class.
  • Logcat logging improvements.

1.4.0-alpha02

  • Logcat logging improvements.

1.4.0-alpha01

  • 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 RookDataSources class.

1.3.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.
  • Added RookYesterdaySyncPermissions.shouldRequestPermissions and RookStepsPermissions.shouldRequestPermissions to help you decide if you should call the request permissions functions, or navigate your users to your app's settings.
  • Fixed Android and HealthConnect steps events datetime

1.3.0

What's new since 1.2.5

  • Breaking changes
    • Removed deprecated enum HealthPermission and all it's usages.
    • Removed deprecated functions syncYesterdayEvents and syncYesterdaySummaries.
  • 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.
  • Health Connect
    • Added RookEventManager.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.
    • RookStepsManager.observeStepsOf was removed.
    • RookStepsManager.getTodaySteps was removed.
    • RookStepsManager.isActive was renamed to RookStepsManager.isBackgroundAndroidStepsActive.
    • RookStepsManager.start was renamed to RookStepsManager.enableBackgroundAndroidSteps.
    • RookStepsManager.stop was renamed to RookStepsManager.disableBackgroundAndroidSteps.
    • Added RookStepsManager.syncTodayAndroidStepsCount to sync the steps count of the current day, if successful it will return the number of steps taken.

1.3.0-alpha02

  • Optimizations
    • Optimized Sleep Summaries upload.
  • Bug fixes
    • Fixed a bug where the error response of uploading a Steps Event was not propagated and logged correctly.
  • Health Connect
    • RookEventManager.syncTodayStepsCount was renamed to RookEventManager.syncTodayHealthConnectStepsCount.
  • Android steps
    • RookStepsManager.getTodayStepsCount was removed.
    • Added RookStepsManager.syncTodayAndroidStepsCount to sync the steps count of the current day, if successful it will return the number of steps taken.

1.3.0-alpha01

  • Breaking changes
    • Removed deprecated enum HealthPermission and all it's usages.
    • Removed deprecated functions syncYesterdayEvents and syncYesterdaySummaries.
  • 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.
  • 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.
  • Health Connect
    • Added RookEventManager.syncTodayStepsCount 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.
    • RookStepsManager.observeStepsOf was removed.
    • RookStepsManager.isActive was renamed to RookStepsManager.isBackgroundAndroidStepsActive.
    • RookStepsManager.start was renamed to RookStepsManager.enableBackgroundAndroidSteps.
    • RookStepsManager.stop was renamed to RookStepsManager.disableBackgroundAndroidSteps.
    • RookStepsManager.getTodaySteps was renamed to RookStepsManager.getTodayStepsCount.

1.2.5

  • Health data extraction optimizations
  • Health data upload optimizations
  • Logging optimizations

1.2.4

  • The functions checkPermissions(healthPermission: HealthPermission) and launchPermissionsRequest(healthPermission: HealthPermission) have been deprecated in favor of checkPermissions() and launchPermissionsRequest(). These deprecated functions will be removed in a future major release (0.X.0).

1.2.3

  • Improved error response of getAvailableDataSources

Dependency updates

  • io.coil-kt:coil: 2.5.02.2.2

1.2.2

  • Sleep Summary sync improvements.

1.2.1

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

1.2.0

  • AvailabilityStatus was renamed to HealthConnectAvailability
  • Parameter permission of functions in RookHealthPermissionsManager was renamed to healthPermission
  • Minor bug fixes and performance improvements

Dependency updates

  • rook-transmission: 1.2.0REMOVED
  • rook-health-connect: 1.2.0REMOVED
  • rook-users: 1.1.0REMOVED

1.1.0

  • 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).
  • Added RookDataSources to help developers build a custom API data sources lists, more information in Data Sources

Dependency updates

  • rook-transmission: 1.1.01.2.0
  • rook-health-connect: 1.1.01.2.0

1.0.0

  • Moved SyncInstruction to com.rookmotion.rook.sdk.domain.enums.SyncInstruction
  • Replaced RookStepsTracker with RookStepsManager
  • RookStepsTracker's permissions and availability functions were moved to RookStepsPermissions.
  • Replaced experimental function RookStepsTracker.observeTodaySteps with RookStepsManager.observeStepsOf

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-users: 1.0.11.1.0
  • rook-transmission: 1.0.11.1.0
  • rook-health-connect: 1.0.01.1.0
  • security-crypto: 1.0.01.1.0-alpha01

0.8.1

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

Dependency updates

  • rook-users: 1.0.01.0.1
  • rook-transmission: 1.0.01.0.1

0.8.0

  • Major performance improvements
  • Added Physical events to rookYesterdaySync
  • Deprecated RookSummaryManager.syncYesterdaySummaries and RookEventManager.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-users: 0.7.21.0.0
  • rook-transmission: 0.10.01.0.0
  • rook-health-connect: 0.12.01.0.0

0.7.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.

0.7.0

0.6.1

  • Now you can configure the lifecycle state at which rookYesterdaySync is triggered using the state parameter.
  • KDoc fixes

0.6.0

  • Moved com.rookmotion.rook.sdk.domain.delegate.rookYesterdaySync to com.rookmotion.rook.sdk.framework.delegate.rookYesterdaySync
  • Moved com.rookmotion.rook.sdk.domain.delegate.RookYesterdaySyncLazy to com.rookmotion.rook.sdk.framework.delegate.RookYesterdaySyncLazy
  • Moved and renamed com.rookmotion.rook.tracker.StepsTracker to com.rookmotion.rook.sdk.RookStepsTracker
  • Moved com.rookmotion.rook.tracker.domain.annotation.Experimental to com.rookmotion.rook.sdk.domain.annotation.Experimental
  • Moved com.rookmotion.rook.tracker.domain.exception.MissingAndroidPermissionsException to com.rookmotion.rook.sdk.domain.exception.MissingAndroidPermissionsException
  • Sync functions of RookSummaryManager and RookEventManager now return Result<SyncStatus> instead of Result<Unit>
  • Rename parameter date to localDate of all functions of RookSummaryManager and RookEventManager.
  • shouldSyncSleepSummariesFor, shouldSyncPhysicalSummariesFor and shouldSyncBodySummariesFor have been replaced by RookHelpers.shouldSyncFor()
  • clearUserID now deletes the userID from preferences
  • Added RequestQuotaExceededException more information at Health Connect request quota
  • Added rookYesterdaySync, more information at Sync health data automatically

Dependency updates

  • rook-users: 0.7.10.7.2
  • rook-transmission: 0.9.10.10.0
  • rook-health-connect: 0.11.10.12.0

0.5.6

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

0.5.5

  • Improved syncYesterdaySummaries and syncYesterdayEvents performance.

0.5.4

  • Minor bug fixes

0.5.3

  • 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.5.2

  • Fixed logs when requesting StepTracker permissions.

0.5.1

  • Fixed bug: Timezone always fails to sync when calling updateUserID.
  • Fixed bug: Random crashes when using requestMissingPermissions.

0.5.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.
  • Added deleteUserFromRook, this function will remove a user from both server and preferences, see Removing registered users for more information.

0.4.4

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

0.4.0

The following functions from RookHealthPermissionsManager have been converted to static functions:

  • checkAvailability(context: Context)
  • registerPermissionsRequestLauncher(componentActivity: ComponentActivity)
  • registerPermissionsRequestLauncher(fragment: Fragment)
  • unregisterPermissionsRequestLauncher()
  • launchPermissionsRequest(permissions: HealthPermission)

0.3.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 functions have changed, see Check 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.

0.2.0

  • Changed setLocalLoggingLevel to enableLocalLogs, 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.
  • Removed NotAuthorizedException each rook SDK will throw a personalized message.

0.1.1

0.1.0

  • Initial release.