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.
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
andRookContinuousUploadManager
rookYesterdaySync
no longer requires you provide your credentials and environment. It will use the last used credentials and environment.
- Added current day Steps and Activity events to
- 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 therookYesterdaySync
delegate. Learn more about this in the Continuous Upload section.
- Added
- Permissions Revocation
- Added
revokeHealthConnectPermissions
toRookPermissionsManager
(Instance and Companion) to reset all granted Health Connect permissions. Learn more about this in the Revoke permissions section.
- Added
- RookStepsManager
- Added
isBackgroundAndroidStepsActive
to the Companion object ofRookStepsManager
. - Added
enableBackgroundAndroidSteps
to the Companion object ofRookStepsManager
. - Added
disableBackgroundAndroidSteps
to the Companion object ofRookStepsManager
. - Added
syncTodayAndroidStepsCount
to the Companion object ofRookStepsManager
.
- Added
- RookDataSources
- Added
getAvailableDataSources
to the Companion object ofRookDataSources
. - Added
revokeDataSource
to the Companion object ofRookDataSources
. - Added
presentDataSourceView
to the Companion object ofRookDataSources
.
- Added
1.7.0
What's new since 1.6.0
- Breaking changes
- Parameter
onFinished
ofRookPermissionsManager.registerPermissionsRequestLauncher
is now required. - Parameter
onFinished
ofRookPermissionsManager.registerPermissionsRequestLauncher
lambda now returns aHealthConnectPermissionsSummary
instead of a Boolean. HealthConnectPermissionsSummary
will be nullable for the fragment variant ofregisterPermissionsRequestLauncher
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.
- Parameter
- 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 theACTION_HEALTH_CONNECT_PERMISSIONS
action. - Added
checkHealthConnectPermissionsPartially
toRookPermissionsManager
(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
ofRookPermissionsManager.registerPermissionsRequestLauncher
is now required. - Parameter
onFinished
ofRookPermissionsManager.registerPermissionsRequestLauncher
lambda now returns aHealthConnectPermissionsSummary
instead of a Boolean. HealthConnectPermissionsSummary
will be nullable for the fragment variant ofregisterPermissionsRequestLauncher
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.
- Parameter
- 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 theACTION_HEALTH_CONNECT_PERMISSIONS
action. - Added
checkHealthConnectPermissionsPartially
toRookPermissionsManager
(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.
- Added a proguard rule to avoid obfuscation of
- 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 sinceRookEventManager
andRookSummaryManager
already performs allshouldSyncFor
checks.
- DataSources
- Added
revokeDataSource
toRookDataSources
this will allow you to disconnect a user from the providedDataSourceType
. - Deprecated property
image
inDataSource
, replace withimageUrl
.
- Added
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.
- Added a proguard rule to avoid obfuscation of
- 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
toRookDataSources
this will allow you to disconnect a user from the providedDataSourceType
. - Deprecated property
image
inDataSource
, replace withimageUrl
.
- Added
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
andrequestAndroidPermissions
will return aRequestPermissionsStatus
. - Added broadcast Health Connect permissions, register a broadcast receiver
with
ACTION_HEALTH_CONNECT_PERMISSIONS
and useEXTRA_HEALTH_CONNECT_PERMISSIONS_GRANTED
to receive granted/denied status every timerequestHealthConnectPermissions
is called. - Added broadcast Android permissions, register a broadcast receiver with
ACTION_ANDROID_PERMISSIONS
and useEXTRA_ANDROID_PERMISSIONS_GRANTED
to receive granted/denied status every timerequestHealthConnectPermissions
is called.
- The new
- Yesterday Sync
rookYesterdaySync
no longer requires thedoOnEnd
parameter.scheduleYesterdaySync
no longer requires thedoOnEnd
parameter.RookYesterdaySyncLazy
no longer requires thedoOnEnd
parameter.
- Exceptions
- Removed unused exception
InternalAndroidException
- Renamed
MissingPermissionsException
toMissingHealthConnectPermissionsException
- New Exceptions
- BadUserTimeZoneException
- UserNotDeletedException
- UserNotRegisteredException
- Removed unused exception
- Other
- Fixed documentation typos
1.5.0-alpha03
- Fixed
shouldRequestAndroidPermissions
returning false when there is 1 missing permission. - Fixed
requestHealthConnectPermissions
overriding the value ofregisterPermissionsRequestLauncher
. - Added
EXTRA_ANDROID_PERMISSIONS_DIALOG_DISPLAYED
toACTION_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
toMissingHealthConnectPermissionsException
- New Exceptions
- BadUserTimeZoneException
- UserNotDeletedException
- UserNotRegisteredException
- Removed unused exception
- 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
andrequestAndroidPermissions
will return aRequestPermissionsStatus
. - Added broadcast Health Connect permissions, register a broadcast receiver
with
ACTION_HEALTH_CONNECT_PERMISSIONS
and useEXTRA_HEALTH_CONNECT_PERMISSIONS_GRANTED
to receive granted/denied status every timerequestHealthConnectPermissions
is called. - Added broadcast Android permissions, register a broadcast receiver with
ACTION_ANDROID_PERMISSIONS
and useEXTRA_ANDROID_PERMISSIONS_GRANTED
to receive granted/denied status every timerequestHealthConnectPermissions
is called.
- The new
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
togetAvailableDataSources
andpresentDataSourceView
inRookDataSources
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
togetAvailableDataSources
andpresentDataSourceView
inRookDataSources
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
andRookStepsPermissions.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
andsyncYesterdaySummaries
.
- Removed deprecated enum
- 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.
- When calling
- 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. UsinggetUserID
you can verify the current status of the userID, more information in update userID.
- 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
- Health Connect
- Added
RookEventManager.syncTodayHealthConnectStepsCount
to sync the steps count of the current day, if successful it will return aSyncStatusWithData.Synced
object with the steps information that was uploaded orSyncStatusWithData.RecordsNotFound
if the SDK could not find any steps records.
- Added
- 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 toRookStepsManager.isBackgroundAndroidStepsActive
.RookStepsManager.start
was renamed toRookStepsManager.enableBackgroundAndroidSteps
.RookStepsManager.stop
was renamed toRookStepsManager.disableBackgroundAndroidSteps
.- Added
RookStepsManager.syncTodayAndroidStepsCount
to sync the steps count of the current day, if successful it will return the number of steps taken.
- The background steps feature will require individual authorization, if you encounter the
exception
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 toRookEventManager.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
andsyncYesterdaySummaries
.
- Removed deprecated enum
- 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.
- When calling
- 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. UsinggetUserID
you can verify the current status of the userID, more information in update userID.
- 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
- Health Connect
- Added
RookEventManager.syncTodayStepsCount
to sync the steps count of the current day, if successful it will return aSyncStatusWithData.Synced
object with the steps information that was uploaded orSyncStatusWithData.RecordsNotFound
if the SDK could not find any steps records.
- Added
- 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 toRookStepsManager.isBackgroundAndroidStepsActive
.RookStepsManager.start
was renamed toRookStepsManager.enableBackgroundAndroidSteps
.RookStepsManager.stop
was renamed toRookStepsManager.disableBackgroundAndroidSteps
.RookStepsManager.getTodaySteps
was renamed toRookStepsManager.getTodayStepsCount
.
- The background steps feature will require individual authorization, if you encounter the
exception
1.2.5
- Health data extraction optimizations
- Health data upload optimizations
- Logging optimizations
1.2.4
- The functions
checkPermissions(healthPermission: HealthPermission)
andlaunchPermissionsRequest(healthPermission: HealthPermission)
have been deprecated in favor ofcheckPermissions()
andlaunchPermissionsRequest()
. 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.0 → 2.2.2
1.2.2
- Sleep Summary sync improvements.
1.2.1
- Added
presentDataSourceView
to show a pre-built connections page.
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 toHealthConnectAvailability
- Parameter
permission
of functions inRookHealthPermissionsManager
was renamed tohealthPermission
- Minor bug fixes and performance improvements
Dependency updates
- rook-transmission: 1.2.0 → REMOVED
- rook-health-connect: 1.2.0 → REMOVED
- rook-users: 1.1.0 → REMOVED
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.0 → 1.2.0
- rook-health-connect: 1.1.0 → 1.2.0
1.0.0
- Moved
SyncInstruction
tocom.rookmotion.rook.sdk.domain.enums.SyncInstruction
- Replaced
RookStepsTracker
withRookStepsManager
- RookStepsTracker's permissions and availability functions were moved to
RookStepsPermissions
. - Replaced experimental function
RookStepsTracker.observeTodaySteps
withRookStepsManager.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.1 → 1.1.0
- rook-transmission: 1.0.1 → 1.1.0
- rook-health-connect: 1.0.0 → 1.1.0
- security-crypto: 1.0.0 → 1.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.0 → 1.0.1
- rook-transmission: 1.0.0 → 1.0.1
0.8.0
- Major performance improvements
- Added Physical events to
rookYesterdaySync
- Deprecated
RookSummaryManager.syncYesterdaySummaries
andRookEventManager.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.2 → 1.0.0
- rook-transmission: 0.10.0 → 1.0.0
- rook-health-connect: 0.12.0 → 1.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
- Renamed
SyncInstruction
supported values toNOTHING
,SYNC_OLDEST
andSYNC_LATEST
, more information at Sync health data automatically
0.6.1
- Now you can configure the lifecycle state at which
rookYesterdaySync
is triggered using thestate
parameter. - KDoc fixes
0.6.0
- Moved
com.rookmotion.rook.sdk.domain.delegate.rookYesterdaySync
tocom.rookmotion.rook.sdk.framework.delegate.rookYesterdaySync
- Moved
com.rookmotion.rook.sdk.domain.delegate.RookYesterdaySyncLazy
tocom.rookmotion.rook.sdk.framework.delegate.RookYesterdaySyncLazy
- Moved and renamed
com.rookmotion.rook.tracker.StepsTracker
tocom.rookmotion.rook.sdk.RookStepsTracker
- Moved
com.rookmotion.rook.tracker.domain.annotation.Experimental
tocom.rookmotion.rook.sdk.domain.annotation.Experimental
- Moved
com.rookmotion.rook.tracker.domain.exception.MissingAndroidPermissionsException
tocom.rookmotion.rook.sdk.domain.exception.MissingAndroidPermissionsException
- Sync functions of
RookSummaryManager
andRookEventManager
now returnResult<SyncStatus>
instead ofResult<Unit>
- Rename parameter
date
tolocalDate
of all functions ofRookSummaryManager
andRookEventManager
. shouldSyncSleepSummariesFor
,shouldSyncPhysicalSummariesFor
andshouldSyncBodySummariesFor
have been replaced byRookHelpers.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.1 → 0.7.2
- rook-transmission: 0.9.1 → 0.10.0
- rook-health-connect: 0.11.1 → 0.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
andsyncYesterdayEvents
performance.
0.5.4
- Minor bug fixes
0.5.3
- Added
syncYesterdaySummaries
andsyncYesterdayEvents
. - 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 tosecretKey
. - 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
- Update your gradle version to 8.1.2
- Update your
compileSdk
andtargetSdk
to 34 - Update your
sourceCompatibility
,targetCompatibility
andjvmTarget
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
toenableLocalLogs
, 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
- Added Time Zone sync, see Update userID for more information.
0.1.0
- Initial release.