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
toHCRookHealthPermissionsManager
to 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
HCRookYesterdaySyncManager
data extraction procedure. - Added Vo2Max granular data to oxygenation events.
- Added current day Steps and Activity events to
HCRookYesterdaySyncManager
. - Added
checkHealthConnectPermissionsPartially
toHCRookHealthPermissionsManager
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 aHealthConnectPermissionsSummary
instead of a Bool.HCRookHealthPermissionsManager.requestAndroidPermissionsUpdates
now returns aAndroidPermissionsSummary
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
- 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.shouldSyncFor
is deprecated, you no longer need to use this function sinceHCRookEventManager
andHCRookSummaryManager
already performs allshouldSyncFor
checks.
- DataSources
- Added
revokeDataSource
toHCRookDataSources
this 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
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
andrequestAndroidPermissions
will return aRequestPermissionsStatus
. - Added a stream for Health Connect permissions, listen to
requestHealthConnectPermissionsUpdates
to receive granted/denied status every timerequestHealthConnectPermissions
is called. - Added a stream for Android permissions, listen to
requestAndroidPermissionsUpdates
to receive granted/denied status every timerequestAndroidPermissions
is called.
- The
- HCRookYesterdaySyncManager
scheduleYesterdaySync
no longer requires thedoOnEnd
parameter.
- Exceptions
RequestQuotaExceededException
will require the next importpackage:rook_sdk_core/rook_sdk_core.dart
.MissingAndroidPermissionsException
will require the next importpackage:rook_sdk_core/rook_sdk_core.dart
.HealthConnectNotInstalledException
will require the next importpackage:rook_sdk_core/rook_sdk_core.dart
.DeviceNotSupportedException
will 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
enableBackgroundSync
toRookConfiguration
. 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
togetAvailableDataSources
andpresentDataSourceView
inHCRookDataSources
class. - 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
SyncStatus
will require the next importpackage: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.
- 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 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.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.
AndroidStepsManager.getTodaySteps
was removed.AndroidStepsManager.isActive
was renamed toAndroidStepsManager.isBackgroundAndroidStepsActive
.AndroidStepsManager.start
was renamed toAndroidStepsManager.enableBackgroundAndroidSteps
.AndroidStepsManager.stop
was renamed toAndroidStepsManager.disableBackgroundAndroidSteps
.- Added
AndroidStepsManager.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
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
syncYesterdaySummaries
andsyncYesterdayEvents
- 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
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.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
AndroidStepsTracker
withAndroidStepsManager
- 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.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
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.0 → 0.8.1
0.5.0
- Major performance improvements
- Added Physical events to
rookYesterdaySync
- Deprecated
HCRookSummaryManager.syncYesterdaySummaries
andHCRookEventManager.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
rookYesterdaySync
crash 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
HealthPermission
toHCHealthPermission
. - Added
HCRookYesterdaySyncPermissions
- Added Sync health data automatically tutorial.
- Sync methods of
HCRookSummaryManager
andHCRookEventManager
now 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
syncYesterdaySummaries
andsyncYesterdayEvents
performance.
0.3.2
- 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.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 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
compileSdk
andtargetSdk
to 34 - Update your
sourceCompatibility
,targetCompatibility
andjvmTarget
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
toenableNativeLogs
, 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
- Added Time Zone sync, see Update userID for more information.
0.0.1
- Initial release.