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
revokeHealthConnectPermissionstoHCRookHealthPermissionsManagerto reset all granted Health Connect permissions. Learn more about this in the Revoke permissions section
- Added
- 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
HCRookYesterdaySyncManagerdata extraction procedure. - Added Vo2Max granular data to oxygenation events.
- Added current day Steps and Activity events to
HCRookYesterdaySyncManager. - Added
checkHealthConnectPermissionsPartiallytoHCRookHealthPermissionsManagerto 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.requestHealthConnectPermissionsUpdatesnow returns aHealthConnectPermissionsSummaryinstead of a Bool.HCRookHealthPermissionsManager.requestAndroidPermissionsUpdatesnow returns aAndroidPermissionsSummaryinstead of a Bool.HCRookYesterdaySyncManager.scheduleYesterdaySyncno longer requires you provide your credentials and environment. It will use the last used credentials and environment.
- Other
- Removed unused class
HCSyncInstruction
- Removed unused class
Dependency updates
- rook-sdk (Gradle): 1.6.0 → 1.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.
- Fixed error when trying to delete a user that no longer exists using
- 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.shouldSyncForis deprecated, you no longer need to use this function sinceHCRookEventManagerandHCRookSummaryManageralready performs allshouldSyncForchecks.
- DataSources
- Added
revokeDataSourcetoHCRookDataSourcesthis will allow you to disconnect a user from the providedDataSourceType.
- Added
Dependency updates
- rook_sdk_core: 0.4.0 → 0.4.3
- rook-sdk (Gradle): 1.5.0 → 1.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
HCRookHealthPermissionsManagerclass 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
AndroidStepsManagerpermissions methods were deprecated.HCRookYesterdaySyncPermissionsand all its methods were deprecated.HCRookHealthPermissionsManager.checkAvailabilitywas deprecated.HCRookHealthPermissionsManager.checkPermissionswas deprecated.HCRookHealthPermissionsManager.requestPermissionswas deprecated.
- The methods
requestHealthConnectPermissionsandrequestAndroidPermissionswill return aRequestPermissionsStatus. - Added a stream for Health Connect permissions, listen to
requestHealthConnectPermissionsUpdatesto receive granted/denied status every timerequestHealthConnectPermissionsis called. - Added a stream for Android permissions, listen to
requestAndroidPermissionsUpdatesto receive granted/denied status every timerequestAndroidPermissionsis called.
- The
- HCRookYesterdaySyncManager
scheduleYesterdaySyncno longer requires thedoOnEndparameter.
- Exceptions
RequestQuotaExceededExceptionwill require the next importpackage:rook_sdk_core/rook_sdk_core.dart.MissingAndroidPermissionsExceptionwill require the next importpackage:rook_sdk_core/rook_sdk_core.dart.HealthConnectNotInstalledExceptionwill require the next importpackage:rook_sdk_core/rook_sdk_core.dart.DeviceNotSupportedExceptionwill require the next importpackage:rook_sdk_core/rook_sdk_core.dart.
- Other
- Fixed documentation typos
Dependency updates
- rook-sdk (Gradle): 1.4.0 → 1.5.0
- rook_sdk_core: 0.2.1 → 0.4.0
2.2.0
- Added
enableBackgroundSynctoRookConfiguration. RookConfigurationparameters were changed to required named parameters.- When
enableBackgroundSyncis 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
redirectUrltogetAvailableDataSourcesandpresentDataSourceViewinHCRookDataSourcesclass. - Logcat logging improvements.
Dependency updates
- rook-sdk (Gradle): 1.3.1 → 1.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.0 → 1.3.1
2.1.0
- Breaking changes
SyncStatuswill require the next importpackage:rook_sdk_core/rook_sdk_core.dart.
- Optimizations
- When calling
deleteUserFromRookall 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
updateUserIDto assign the correct userID. UsinggetUserIDyou 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.
- 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
HCRookEventManager.syncTodayHealthConnectStepsCountto sync the steps count of the current day, if successful it will return aSyncStatusWithData.Syncedobject with the steps information that was uploaded orSyncStatusWithData.RecordsNotFoundif the SDK could not find any steps records.
- Added
- Android steps
- The background steps feature will require individual authorization, if you encounter the
exception
SDKNotAuthorizedExceptionplease contact ROOK support. - The background steps feature will send a Steps Event every hour instead of a summary every 12 hours.
AndroidStepsManager.getTodayStepswas removed.AndroidStepsManager.isActivewas renamed toAndroidStepsManager.isBackgroundAndroidStepsActive.AndroidStepsManager.startwas renamed toAndroidStepsManager.enableBackgroundAndroidSteps.AndroidStepsManager.stopwas renamed toAndroidStepsManager.disableBackgroundAndroidSteps.- Added
AndroidStepsManager.syncTodayAndroidStepsCountto 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
Dependency updates
- rook-sdk (Gradle): 1.2.4 → 1.3.0
- rook_sdk_core: 0.1.2 → 0.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
syncYesterdaySummariesandsyncYesterdayEvents - Breaking changes
- The methods
checkPermissions(HCHealthPermission hcHealthPermission)andrequestPermissions(HCHealthPermission hcHealthPermission)have been replaced by ofcheckPermissions()andrequestPermissions().
- The methods
Dependency updates
- rook-sdk (Gradle): 1.2.3 → 1.2.4
1.1.1
- Fixed missing Proto files error
Dependency updates
- rook-sdk (Gradle): 1.2.2 → 1.2.3
1.1.0
- Added
RookDataSourcesto help developers build a custom API data sources lists, more information in Data Sources - Added
presentDataSourceViewto 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.0 → 1.2.2
- rook_sdk_core: 0.1.0 → 0.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.0 → 1.2.0
1.0.0
- Replaced
AndroidStepsTrackerwithAndroidStepsManager - If multiple sleep sessions are found when calling
RookSummaryManager.syncSleepSummaryall 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.1 → 1.1.0
- security-crypto (Gradle): 1.0.0 → 1.1.0-alpha01
0.5.1
- Fixed crash on Android 13 or lower devices when using
rookYesterdaySyncwithout 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.0 → 0.8.1
0.5.0
- Major performance improvements
- Added Physical events to
rookYesterdaySync - Deprecated
HCRookSummaryManager.syncYesterdaySummariesandHCRookEventManager.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.1 → 0.8.0
0.4.1
Fixed
rookYesterdaySynccrash on Android 10Added 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.0 → 0.7.1
0.4.0
- Renamed
HealthPermissiontoHCHealthPermission. - Added
HCRookYesterdaySyncPermissions - Added Sync health data automatically tutorial.
- Sync methods of
HCRookSummaryManagerandHCRookEventManagernow returnFuture<SyncStatus>instead ofFuture<void>
Dependency updates
- protobuf: ">=2.0.0 <3.0.0" → ">=3.0.0 <4.0.0"
- protobuf (Gradle): 3.24.4 → 3.25.3
- rook-sdk (Gradle): 0.5.6 → 0.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
syncYesterdaySummariesandsyncYesterdayEventsperformance.
0.3.2
- Added
syncYesterdaySummariesandsyncYesterdayEvents - When initializing with
initRookan 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
clientPasswordinstances tosecretKey.
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
- Update your gradle version to 8.1.2
- Update your
compileSdkandtargetSdkto 34 - Update your
sourceCompatibility,targetCompatibilityandjvmTargetto 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
setLocalLoggingLeveltoenableNativeLogs, see Logging for more information. - Added
RookEnvironmentto configure internal behaviour, see Environment for more information. - Changed
RookConfigurationconstructor parameters, see Initialize for more information.
0.0.2
- Added Time Zone sync, see Update userID for more information.
0.0.1
- Initial release.