---
title: "Mobile SDK Release - 10112022"
canonical: "https://help.validic.com/space/VRN/blog/3372908545/Mobile%20SDK%20Release%20-%2010112022"
format: markdown
---
## Android Native Libraries Released - October 11, 2022

- Android Full Library v1.14.5
- Android Aggregator Library v1.14.5
- Android LifeScan OneTouch Library v1.14.5

## Android Native Changes

**Google Fit**

- The SDK now reads only the Summary/Routine data from `DataTypes` that the user has granted permission to.
- Google Fit Mini App updated to fetch 30 days of historical step data after requesting permissions for the first time.

Also, review the [changes from Android v1.14.4](https://help.validic.com/space/VRN/blog/3359571971/Mobile+SDK+Release+-+09282022), which include Android 13 support.

---

## React Native Wrappers Released - October 11, 2022

- React Native Android/iOS Aggregator Wrapper v1.4.1

## React Native Changes

**General**

- Bundled native SDKs upgraded to:
  - iOS v1.14.1
  - Android 1.14.5
- Module libraries built with XCode 14 and the iOS 16 SDK and tested against an iPhone running iOS 16

**Healthkit**

- React Native wrapper now supports iOS 15 and up
- Added support for HealthKit workout types added in iOS 13 - 16.

**Google Fit**

- Now only reads Summary/Routine data from `DataTypes` that have been granted permission

**Samsung Health**

- Switched to using static ID for Android SHealth notification channel name to avoid multiple channels showing up in notification settings

---

## Cordova Wrappers Released - October 11, 2022

- Cordova Android/iOS Full Wrapper v1.14.1
- Cordova Android/iOS Aggregator Wrapper v1.14.1

## Cordova Changes

**General**

- Bundled native SDKs upgraded to:
  - iOS v1.14.1
  - Android 1.14.5
- Rename iOS dictionary key from "recordType" to "record_type"

**Core**

- VLDUser credentials (validicUserID, organizationID, accessToken) must now be non-empty strings. If an empty string (or nil) is used for any of those properties, `-startSessionWithUser:` will throw an exception. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit, and Samsung Health reads and passive Bluetooth reads.
  - Implemented user validation against the Validic API. User credentials are checked when `-startSessionWithUser:` is called, and any user session started with invalid or unknown credentials will trigger a call to `[[VLDSession sharedSession] endSession]`.
  - Any 401 Unauthorized response from the Validic API will automatically trigger a call to `[[VLDSession sharedSession] endSession]`.
  - Added a default user session. Accessible via `[VLDUser defaultUser]`, this user session can be initialized to perform foreground Bluetooth and VitalSnap reads only while the app is offline. This feature is intended to be used with the Full SDK package when valid Validic user session credentials are unavailable/unknown.
    - **If your app always has access to a valid set of user credentials and always initializes the SDK with a valid set of user credentials, then no changes are needed.**
    - The recommended SDK implementation is to always provision users on the Validic server then initialize the SDK with valid session credentials for the user. Therefore, use of the default user is not common and its use should be limited to instances where you are unable to retrieve valid session credentials and you need to perform a foreground operation (Bluetooth pair, Bluetooth foreground read, or VitalSnap read).
    - Some operations will not function with the default user. SDK operations that require a server-side user will not function while the SDK is initialized with the default user. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit, and Samsung Health reads and passive Bluetooth reads.
    - If you need assistance adjusting your implementation of the SDK to account for these changes, please reach out to the Validic support team at [ support@validic.com](mailto:support@validic.com).
  - Deprecated the `VLDLogging` class log property used for masking debug log output. Please use `logMask` instead.
  - Set timeout for requests to 10 seconds.

**Bluetooth**

- Added generic support for pulse oximeters that follow the Bluetooth standard for Spot Check measurements.
- Added support for ChoiceMMed pulse oximeter MD300CI218 (peripheral 45).
- Added `InvalidUserException` as the `cause` for a `ValidicBluetoothException` when attempting to execute an operation with a `null` user or a user with credentials that cannot be used when performing an API request.
- `BluetoothPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`

**OCR**

- `OCRPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`

**Healthkit**

- Cordova wrapper now supports iOS 15 and up
- Added support for HealthKit workout types added in iOS 13 - 16.

**Google Fit**

- Now only reads Summary/Routine data from `DataTypes` that have been granted permission

**Samsung Health**

- Switched to using static ID for Android SHealth notification channel name to avoid multiple channels showing up in notification settings

---

## Xamarin.iOS Wrappers Released - October 11, 2022

- Xamarin iOS Full Wrapper v1.14.1
- Xamarin iOS Aggregator Wrapper v1.14.1

## Xamarin.iOS Changes

**General**

- Bundled native SDKs upgraded to:
  - iOS v1.14.1
- Rename iOS dictionary key from "recordType" to "record_type"

**Core**

- VLDUser credentials (validicUserID, organizationID, accessToken) must now be non-empty strings. If an empty string (or nil) is used for any of those properties, `-startSessionWithUser:` will throw an exception. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit, and Samsung Health reads and passive Bluetooth reads.
- Implemented user validation against the Validic API. User credentials are checked when `-startSessionWithUser:` is called, and any user session started with invalid or unknown credentials will trigger a call to `[[VLDSession sharedSession] endSession]`.
- Any 401 Unauthorized response from the Validic API will automatically trigger a call to `[[VLDSession sharedSession] endSession]`.
- Added a default user session. Accessible via `[VLDUser defaultUser]`, this user session can be initialized to perform foreground Bluetooth and VitalSnap reads only while the app is offline. This feature is intended to be used with the Full SDK package when valid Validic user session credentials are unavailable/unknown.
  - **If your app always has access to a valid set of user credentials and always initializes the SDK with a valid set of user credentials, then no changes are needed.**
  - The recommended SDK implementation is to always provision users on the Validic server then initialize the SDK with valid session credentials for the user. Therefore, use of the default user is not common and its use should be limited to instances where you are unable to retrieve valid session credentials and you need to perform a foreground operation (Bluetooth pair, Bluetooth foreground read, or VitalSnap read).
  - Some operations will not function with the default user. SDK operations that require a server-side user will not function while the SDK is initialized with the default user. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit, and Samsung Health reads and passive Bluetooth reads.
  - If you need assistance adjusting your implementation of the SDK to account for these changes, please reach out to the Validic support team at [ support@validic.com](mailto:support@validic.com).
- Deprecated the `VLDLogging` class log property used for masking debug log output. Please use `logMask` instead.
- Set timeout for requests to 10 seconds.

**Bluetooth**

- Added generic support for pulse oximeters that follow the Bluetooth standard for Spot Check measurements.
- Added support for ChoiceMMed pulse oximeter MD300CI218 (peripheral 45).
- `BluetoothPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`

**OCR**

- `OCRPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`

**Healthkit**

- Xamarin iOS wrapper now supports iOS 15 and up
- Added support for HealthKit workout types added in iOS 13 - 16.

---

## Xamarin.Android Wrappers Released - October 11, 2022

- Xamarin Android Full Wrapper v1.14.5
- Xamarin Android Aggregator Wrapper v1.14.5

## Xamarin.Android Changes

**General**

- Bundled native SDKs upgraded to:
  - Android 1.14.5

**Shared**

- User credentials (validicUserID, organizationID, accessToken) must now be non-empty strings. If an empty string (or nil) is used for any of those properties, `Session.startSessionWithUser` will throw an exception. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit and Samsung Health reads; passive Bluetooth reads.
- Implemented user validation against the Validic API. User credentials are checked when `Session.startSessionWithUser` is called, and any user session started with invalid or unknown credentials will trigger a call to `SessionConnectionListener.onSessionEnded(User, unsentRecords)`.
- Any 401 Unauthorized response from the Validic API will automatically trigger a call to `SessionConnectionListener.onSessionEnded(User, unsentRecords)`.
- Added a default user session. Accessible via `User.DEFAULT_USER`, this user session can be initialized to perform foreground Bluetooth and VitalSnap reads only while the app is offline. This feature is intended to be used with the Full SDK package when valid Validic user session credentials are unavailable/unknown.
  - **If your app always has access to a valid set of user credentials and always initializes the SDK with a valid set of user credentials, then no changes are needed.**
  - The recommended SDK implementation is to always provision users on the Validic server then initialize the SDK with valid session credentials for the user. Therefore, use of the default user is <u>not common</u> and its use should be limited to instances where you are unable to retrieve valid session credentials and you need to perform a foreground operation (Bluetooth pair, Bluetooth foreground read, or VitalSnap read).
  - Some operations will not function with the default user. SDK operations that require a server-side user will not function while the SDK is initialized with the default user. You must initialize the SDK with a valid user session in order for the following functions to work: Apple Health, Google Fit, and Samsung Health reads and passive Bluetooth reads.
  - If you need assistance adjusting your implementation of the SDK to account for these changes, please reach out to the Validic support team at [ support@validic.com](mailto:support@validic.com).

**Bluetooth**

- Added generic support for pulse oximeters that follow the Bluetooth standard for Spot Check measurements.
- Added support for ChoiceMMed pulse oximeter MD300CI218 (peripheral 45).
- Added `InvalidUserException` as the `cause` for a `ValidicBluetoothException` when attempting to execute an operation with a `null` user or a user with credentials that cannot be used when performing an API request.
- `BluetoothPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`
- Bond with OS before connecting to peripherals
- Fix updating time on Omron devices

**OCR**

- `OCRPeripheral` properties returned from `getPeripheral` are now `camelCase` instead of `PascalCase`

**Google Fit**

- Now only reads Summary/Routine data from `DataTypes` that have been granted permission

**Samsung Health**

- Switched to using static ID for Android SHealth notification channel name to avoid multiple channels showing up in notification settings

---

Release completed October 12, 2022