# Versions

### 2.41.1 (April 21, 2026)

**Fixes:**

* Fix IllegalStateException / BadTokenException when showing Consent Dialog.

### 2.41.0 (April 20, 2026)

**Features:**

* IAB TCF: Apply April 2026 updates including SDK items and new `specialPurposes` and `optOut` fields for cookie disclosures.
* Update GPP library to use `@iabgpp/cmpapi` version `3.1.8` which adds support for `UsMn` section.

**Fixes:**

* Reset ready state so `isReady()` returns false during re-initialization.

### 2.40.0 (April 7, 2026)

**Features:**

* Add API events to monitor SDK initialization performance.

**Fixes:**

* GPP: Improve handling of GPP fields when user regulation changes.

### 2.39.0 (March 23, 2026)

**Features:**

* Update translations and embedded GVL version.
* GCM: Update privacy signals transmitted to `Firebase`, `AppsFlyer` and `Branch` integrations.

### 2.38.0 (March 9, 2026)

**Features:**

* Update translations and embedded GVL version.

**Fixes:**

* DCS and App V2: Improve status handling for vendors defined by Didomi.
* Android TV: Improve focus navigation from Preferences screens without accessibility enabled.
* App V2: Use legacy Web SDK when device WebView version does not support modern JavaScript features. Note: If GPP is enabled, these devices will fallback to App V1 UI.

### 2.37.0 (February 23, 2026)

**Features:**

* Update translations and embedded GVL version.

**Fixes:**

* Android TV: Wrong text-to-speech element focus on back from purpose or partner details.

### 2.36.2 (February 9, 2026)

**Fixes:**

* Prevent triggering onConsentChanged event after a call to `clearUser()`.
* Load bundle logo image from App v2 (WebView)

### 2.36.1 (January 28, 2026)

**Fixes:**

* Address conflicting use cases between `TCF 2.2` and `TCF 2.3`.

### 2.36.0 (January 26, 2026)

**Features:**

* TCF 2.3: Add value `IABTCF_DisclosedVendors` to shared preferences.
* Allow to safely exclude Zipline library when adding Didomi dependency. More information can be found in [Advanced setup & troubleshooting](https://developers.didomi.io/cmp/mobile-sdk/setup/advanced-setup-and-troubleshooting#zipline-library) page.

**Fixes:**

* Android TV - Accessibility: Update default focus from secondary screen for easier key event interception.

### 2.35.0 (January 12, 2026)

**Features:**

* Android TV: Make sure content can be scrolled when it is too big in some screens:
  * Purpose details
  * Additional data processing
  * Device storage disclosure
  * User information

**Fixes:**

* GCM: Make sure external SDKs are updated even when consent types are not specified in the configuration.
* Android TV: Fix focus on Purpose details screen.

### 2.34.0 (December 1, 2025)

**Features:**

* Android TV: Add support for the `preferences.enableAllButtons` configuration parameter.
* Add support for the `preferences.vendorsLayer.enabled` configuration parameter.
* GCM: Improve accuracy of privacy signals transmitted to `Firebase`, `AppsFlyer` and `Branch` integrations.

**Fixes:**

* Add the missing footer on the Additional Data Processing Details screen.
* Improve consent recollection behavior after GVL updates.
* Correct an issue affecting notices with DCS enabled, where IAB TCF String did not contain the purposes status.
* Android TV: Revert focus catcher on notice initialization when screen reader is enabled but notice. Description message will still be spelled first.

### 2.33.0 (November 6, 2025)

**Features:**

* Android TV: Improve navigation / focus management.
* Android TV: Accessibility improvements.

**Fixes:**

* GPP values were not correctly saved in SharedPreferences and were not returned in `CurrentUserStatus`.
* Android TV: Fix additional cases of incorrect padding rendering on preferences screens.

### 2.32.1 (January 28, 2026)

{% hint style="info" %}
This is the minimum required SDK version to fully support IAB TCF v2.3 consent notices on Android and Android TV.
{% endhint %}

**Fixes:**

* Address conflicting use cases between `TCF 2.2` and `TCF 2.3`.

### 2.32.0 (October 24, 2025)

**Features:**

* Handle new requirements for TCF 2.3 in the TC String:
  * TC String now contains the Disclosed Vendors segment.
  * When consent and legitimate interest purposes are all disabled, Vendors with consent or legitimate interest purposes are marked as disabled even if they present special purposes.
* Update GPP library version.

**Fixes:**

* AndroidTV: In some cases, padding was not rendered correctly on CTV preferences screens.

### 2.31.1 (October 7, 2025)

**Fixes:**

* Fix obfuscation issue for GCM integration event handler introduced in [2.31.0](#id-2.31.0-october-3-2025).
* Android TV: apply fix to prevent `lateinit property bindingPrimary has not been initialized`.

### 2.31.0 (October 3, 2025)

{% hint style="danger" %}
To use this SDK version, your app must target min API 21 or above.
{% endhint %}

**Features:**

* Remove support for min APIs 19 and 20.
* Improve accessibility descriptions for Android TV.
* Add alphabetical headers to the list of vendors.
* Add event handlers to GCM integrations.
* Support new US regulations:
  * Minnesota Consumer Data Privacy Act (`MCDPA`).
  * Maryland Online Data Privacy Act (`MODPA`).
  * Rhode Island Data Transparency and Privacy Protection Act (`RIDTPPA`).
  * Indiana Consumer Data Protection Act (`INCDPA`).
  * Kentucky Consumer Data Protection Act (`KCDPA`).
  * Nebraska Data Privacy Act (`NDPA`).
  * Tennessee Information Protection Act (`TIPA`).

**Fixes:**

* Android TV: Remove the focus transitions to prevent performances issues on some devices.
* Android TV: Focus was lost when exiting Privacy Policy Screen from the Notice.

### 2.30.0 (September 17, 2025)

{% hint style="warning" %}
To use this SDK version, your app must target at least Android API version 35.

Note: targeting API 35 is required to publish apps on the Play Store since August 31, 2025.
{% endhint %}

**Features:**

* Android TV: improve accessibility on `Notice`, `Purposes` and `Vendors` screens.
* Upgrade target and compile SDK versions to 35.

**Fixes:**

* Make sure Activity is resumed before trying to display Notice or Preferences to prevent crashes.
* Apply fix to prevent `kotlin.UninitializedPropertyAccessException: lateinit property component has not been initialized` on Android TV and App V2 (Webview)

### 2.29.0 (August 12, 2025)

**Features:**

* Android TV: update behaviour of toggles.

**Fixes:**

* App v2 (WebView): apply fix to prevent `UninitializedPropertyAccessException: lateinit property uiProvider has not been initialized`.

### 2.28.0 (August 1, 2025)

**Feature:**

* Add new `GCM` integration: Appsflyer.

**Fixes:**

* Accessibility: re-structured `Vendor Details` screen.
* Android TV: applied fix to prevent `IllegalStateException` in some specific focus change use cases.

### 2.27.0 (July 17, 2025)

**Features:**

* Add `GCM` support for `Firebase`, `AirBridge`, `Branch` and `Kochava`.
* Update dependencies:
  * Dagger from `2.55` to `2.56`.
  * Gson from `2.12.1` to `2.13.1`.

**Fixes:**

* The order of the Purposes list is now respected when a `Purpose` is declared as `Purpose Category`.
* Accessibility: Fix screen reader focus management from the *Storage Disclosures* screen.
* Remove embedded configurations for deprecated `TCF v2.1` .
* AndroidTV: Address crash report from `IllegalStateException` when requesting the activity from the fragments.

### 2.26.0 (June 20, 2025)

{% hint style="info" %}
This version includes support for App v2 (WebView) mode. You can enable this feature from the Console. More information is available [here](https://support.didomi.io/what-is-app-v2-webview).
{% endhint %}

**Features:**

* Add support for App v2 (WebView) mode.
* Accessibility: added missing heading roles in multiple screens.
* Accessibility: re-structured `User Information` screen.
* Accessibility: improved navigation on the `Device Storage Disclosure` screen within vendor details.

**Fixes:**

* In `CurrentUserStatus` object, `shouldUserStatusBeCollected()` method was not publicly accessible

### 2.25.1 (May 28, 2025)

**Features:**

* Add new languages support (Belarus, Bosnian, Basque, English Canada, Galician, Georgian, Maltese, Albanian, Tagalog, Welsh)

{% hint style="info" %}
New languages must be enabled from the Console once they are available.
{% endhint %}

**Fixes:**

* Update properties of the Facebook vendor provided by Didomi

### 2.24.1 (April 30, 2025)

Fixes:

* Revert serialized names for `CurrentUserStatus` object.

### 2.24.0 (April 25, 2025)

**Features:**

* Add boolean field to identify if `preferences.purposechanged` API event is triggered from a Purpose Category screen or not.

**Fixes:**

* Android TV: prevent Save button from updating vendor statuses.

### 2.23.0 (April 16, 2025)

**Features:**

* Update accessibility descriptions for Preferences screens.
* Update `Didomi Consent String` computation (*beta*).

Fixes:

* Add missing Header (logo or App name) from the Storage of your choices screen.
* Prevent navigation button to overlap if the label is too long from the Device Storage Disclosures screen.

### 2.22.0 (April 3, 2025)

**Features:**

* Update accessibility description for Preferences screens.
* When a vendor is not associated with legitimate interest purposes but has special purposes, always include it in IAB TCF Consent String legitimate interest vendors section (IAB TCF update).
* Trigger `SyncReady` event even when `Cross-Device` feature is disabled.
* Additional focus customization option for Android TV.
* Add new screen to display `User Information` for Android TV in order to match with mobile SDK.

### 2.21.0 (March 18, 2025)

**Features:**

* Add new features to `CurrentUserStatus` returned by [getCurrentUserStatus](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getcurrentuserstatus):
  * `gppString` field (*beta*).
  * Utility method `shouldUserStatusBeCollected()` .
* Modify the layout of the bottom bar buttons on the Preferences screen.
* Handle configuration parameter `preferences.enableAllButtons` .

### 2.20.0 (March 4, 2025)

**Features:**

* Replace checkboxes with switches for legitimate interest-based purposes on AndroidTV.
* Update status labels for buttons and switches from the Preferences screen on AndroidTV.
* Update GPP library version (*beta*).

Fixes:

* Set AndroidTV activities `exported` flag to `false` in manifest.

### 2.19.1 (February 11, 2025)

**Fixes:**

* Cross-device: Make sure remote consent expiration is checked before applying consent synchronization.

### 2.19.0 (January 30, 2025)

**Features:**

* Create new `setUser` function that accepts an instance of the new `DidomiUserParameters` (more information [here](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setuser)).
* Deprecate the other `setUser` functions (more information [here](https://developers.didomi.io/cmp/mobile-sdk/reference/api/deprecated#setuser)).

**Fixes:**

* Make sure the Purpose view is not shown before the Vendor view when the user requests the Vendor view from the Notice.
* Stop forcing capital letters from the Notice's action button.

### 2.18.0 (January 9, 2025)

**Features:**

* Use Java 11 to build the SDK (more information [here](https://developers.didomi.io/cmp/mobile-sdk/setup#add-the-sdk-to-your-project)).
* Created new applicableRegulation public API that provides a string value (`CPRA`, `GDPR`, `NONE`, etc.) containing the regulation being applied (more information [here](https://developers.didomi.io/cmp/mobile-sdk/reference/api#applicableregulation)).

**Fixes:**

* Optimize performance when updating the consent from the cross-device response.
* The Purpose list's bulk action subtitle was always the same despite being enabled or not from Android TV preferences.

### 2.17.1 (December 13, 2024)

**Features:**

* Add US regulation support for Utah: `ucpa`.

### 2.17.0 (December 11, 2024)

**Features:**

* Add support for `syncUserChanged` callback. See reference [here](https://developers.didomi.io/cmp/mobile-sdk/reference/events#syncuserchanged) for more information.
* Accessibility: Increase contrast in toggle buttons icons.
* Stop displaying Sensitive Personal Information in a separate screen.

**Fixes:**

* Fix `ConcurrentModificationException` related to SDK events.

### 2.16.2 (November 29, 2024)

**Fixes:**

* Fix a `ConcurrentModificationException` occurring sometimes when consent status is updated while `setUser` is called or status is retrieved asynchronously.
* Accessibility: Sticky notice buttons were not always enabled when using only TalkBack to read the notice text.

### 2.16.1 (November 19, 2024)

**Fixes:**

* Update translations and embedded GVL version.

### 2.16.0 (November 8, 2024)

{% hint style="info" %}
`DidomiEventListener` interface implementations need to override 2 new callbacks: `dcsSignatureReady` / `dcsSignatureError`. These callbacks implementation can be left empty as they should not be active in this SDK version.
{% endhint %}

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
@UiThread
override fun dcsSignatureError(event: DcsSignatureErrorEvent) = Unit

@UiThread
override fun dcsSignatureReady(event: DcsSignatureReadyEvent) = Unit
```

{% endtab %}

{% tab title="Java" %}

```java
@Override
public void dcsSignatureReady(@NonNull DcsSignatureReadyEvent event) {}

@Override
public void dcsSignatureError(@NonNull DcsSignatureErrorEvent event) {}
```

{% endtab %}
{% endtabs %}

**Fixes:**

* When overriding IAB vendors with custom vendors, prevent overriding vendor id with custom id.
* Prevent `ConcurrentModificationException` when setting and getting user status.

### 2.15.0 (October 24, 2024)

**Features:**

* Add new `organizationUserId` parameter for `SyncReady` event (see [documentation](https://developers.didomi.io/cmp/mobile-sdk/reference/events#syncready)).

**Fixes:**

* Get consent from server when `setUser` is called. If the user is new, you will need to call `setupUI` to display the notice. In order to display the notice automatically, you can call `setUser` and provide the `activity` (see [documentation](https://developers.didomi.io/cmp/share-consents-across-devices#multi-account)).
* Hide privacy policy button from AndroidTV's notice when the link is blank.
* Trim translations before displaying the purpose list.

### 2.14.0 (October 10, 2024)

**Features:**

* Update translations and embedded GVL version.

### 2.13.1 (October 8, 2024)

**Fixes:**

* Update embedded `QuickJS` library in order to support 16 KB page sizes (see [here](https://developer.android.com/guide/practices/page-sizes) for more information).
* Fix notice's description display when the text contains link and justification is enabled.
* Update Kotlin dependencies from `1.9.20` to `1.9.23`.
* Update Kotlin coroutines dependency from `1.8.1` to `1.9.0`.

### 2.13.0 (October 1, 2024)

**Fixes:**

* Update translations and embedded GVL version.

### 2.12.0 (September 13, 2024)

**Features:**

* Support Serbian latin language script
* Rename `IDPL` regulation to `ICDPA`

### 2.11.0 (August 22, 2024)

**Features:**

* Use **API 34** for compiling our SDK and update dependencies:
  * **Dagger** plugin and dependencies from `2.51.1` to `2.52`.
  * **Kotlin** plugin from `1.8.20` to `1.9.20`.
  * `com.google.code.gson:gson` from `2.10.1` to `2.11.0`.
  * `com.google.android.material:material` from `1.6.1` to `1.12.0`.

{% hint style="warning" %}
Your application **must target API 34** starting this version (required from Google Play Store starting August 31, 2024).
{% endhint %}

### 2.10.1 (August 20, 2024)

**Fixes:**

* Make sure `DidomiToggle` is not obfuscated.
* Make sure sticky buttons behave correctly when scrolling the content of the notice.

### 2.10.0 (July 30, 2024)

**Features:**

* Implement First Party Vendors support.
* Support Publisher TC segment from the Consent String.

**Fixes:**

* Merge duplicated Vendors declared from different sources (IAB, Didomi, Custom).

### 2.9.0 (July 15, 2024)

**Features:**

* Add support for TCF v2.2 amendments (implement new `Storage Disclosure` button and screen).

### 2.8.0 (June 21, 2024)

**Features:**

* Add support for new regulations: `dpdpa`, `fdbr`, `idpl`, `mcdpa`, `nhpa`, `njdpa`, `ocpa` and `tdpsa`.
* Set a minimum frequency for user synchronization process.
* Only rely on configuration obtained from Didomi to determine the user regulation.

{% hint style="warning" %}
From this version, local configuration fields `gdprAppliesGlobally` and `gdprAppliesWhenUnknown` are ignored. To adapt notice behavior to user country, it is now mandatory to use remote configuration. See [here](https://developers.didomi.io/cmp/mobile-sdk/setup#from-the-console-recommended) for more information.
{% endhint %}

* Mark obsolete methods as `Deprecated`:

  * `isConsentRequired`
  * `isUserConsentStatusPartial`
  * `isUserLegitimateInterestStatusPartial`
  * `getUserStatus`

  See the complete list of currently deprecated methods [here](https://developers.didomi.io/cmp/mobile-sdk/android/reference/api/deprecated).
* Support for `IABTCF_EnabledAdvertiserConsentMode` for Google Consent Mode, through the configuration flag `integrations.vendors.gcm.enableTCFAdvertiserConsentMode`. See the [related documentation](https://developers.didomi.io/cmp/google-consent-mode#enabling-consent-modes-tcf-integration) for more information.

**Fixes:**

* Prevent SDK translations to be removed from compiled app when `shrinkMode` option is set to `strict`.
* On Android TV, bulk action buttons state was not consistent after scrolling.
* IAB purposes 1 or 2 could incorrectly appear in notice and consent string when using vendors with Special Features.
* Make sure a fallback is provided in case a translation is missing for an IAB element.
* Prevent thread safety issues when SDK listens to connectivity status.

### 2.7.0 (June 6, 2024)

**Features:**

* Update logic around setting the vendors' status based on purposes' status.

**Fixes:**

* Modify package name of IAB TCF encoder/decoder fork from `com.iabtcf.*` to `io.didomi.iabtcf.*` to prevent duplicate classes issue.

### 2.6.1 (May 30, 2024)

**Fixes:**

* Prevent external link icon to be stretched depending on the font size.
* Increase the margin between title and toggle from the Sensitive Personal Information item.
* Make the Sensitive Personal Information section title bold.

### 2.6.0 (May 10, 2024)

**Features:**

* Display an icon indicating when a link targets a page outside of the application.
* Add field `isIAB` in `Vendor` object to indicate if vendor is from the IAB Global Vendor List.

**Fixes:**

* Do not obfuscate parameters class of `setUser(...)` method.

### 2.5.1 (April 26, 2024)

**Features:**

* Add new parameters to `DidomiInitializeParameters` to override the user location determined by the SDK when getting the notice configuration:
  * `countryCode`: Force the user country used to get the notice configuration.
  * `regionCode` : Force the user region used to get the notice configuration.
* Add support for new `SyncReady` event. See the [event documentation](https://developers.didomi.io/cmp/mobile-sdk/reference/events#syncready) for more information.
* Deprecate `SyncDone` event.

### 2.5.0 (April 26, 2024)

{% hint style="warning" %}
This version has obfuscation issues and should not be used.
{% endhint %}

### 2.4.0 (April 10, 2024)

**Features:**

* Make sure that vendors removed from the GVL are not present in the notice or in the IAB Consent String when the IAB TCF framework is enabled.
* Increase contrast for secondary texts to improve readability.

**Fixes:**

* Add a proguard rule regarding `kotlinx.parcelize.Parcelize` to avoid issues in some projects configurations.

### 2.3.1 (March 28, 2024)

**Fixes:**

* Vendors status updates were ignored when using `openCurrentUserStatusTransaction` method.

### 2.3.0 (March 27, 2024)

**Features:**

* Deprecate CCPA regulation.
* Set values for `IABTCF_CmpSdkID`, `IABTCF_CmpSdkVersion`, `IABTCF_PolicyVersion` and `IABTCF_gdprApplies` even when GDPR does not apply.

**Fixes:**

* Rename incorrect `openCurrentUserTransaction` method to `openCurrentUserStatusTransaction`.

### 2.2.0 (March 18, 2024)

**Features:**

* Create new `openCurrentUserStatusTransaction` method which returns an instance of `CurrentUserStatusTransaction`. This class can be used to asynchronously enable and disable specific vendors and purposes. For more information, see the [documentation](https://developers.didomi.io/cmp/mobile-sdk/android/reference/api#opencurrentuserstatustransaction).
* Display Purpose Categories for Android TV.
* Update dependencies:
  * `com.google.zxing:core` from `3.5.2` to `3.5.3`
  * `org.jetbrains.kotlinx:kotlinx-coroutines-jdk8` from `1.7.3` to `1.8.0`
  * Dagger dependencies from `2.50` to `2.51`

**Fixes:**

* Stop exposing `GSON` library as a transitive dependency.
* Stop Exposing `IAB TCF Decoder` library as a transitive dependency.
* Update the `getCurrentUserStatus` method so it marks as enabled those purposes that are enabled by default on the UI when the regulation applied is opt-out or mixed (e.g.: CPRA) and the user hasn’t expressed any choices yet.

### 2.1.0 (March 6, 2024)

**Features:**

* Create new `addVendorStatusListener` and `removeVendorStatusListener` methods to observe changes in the status of individual Vendors (For more information, see the [documentation](https://developers.didomi.io/cmp/mobile-sdk/reference/api#addvendorstatuslistener)).

**Fixes:**

* Sort Device Storage Disclosure list by `identifier` and `type` in order to prevent random order from the Vendor details screen.
* Align the `Privacy Policy` link to the left of the Vendor details screen.

### 2.0.1 (February 23, 2024)

**Fixes:**

* Make sure public inner classes `Vendor.Namespaces` and `Vendor.Url` are not obfuscated in the released SDK.
* Prevent unwanted line breaks in the notice text when using Bold font and Justified alignment.

### 2.0.0 (February 15, 2024)

{% hint style="danger" %}
**Major update of the SDK**

This release will contain some breaking changes, described below.

**Migration steps:**

1. Update ***Didomi SDK*** to version `1.90.0` if it is not already the case.
2. Replace any deprecated usages that might appear with the alternatives suggested by *Android Studio* (lint). If *Android Studio* does not suggest any updates, it means no deprecated methods are being used.
3. Update ***Didomi SDK*** to version `2.0.0`.
   {% endhint %}

{% hint style="danger" %}
The `Purpose` class returned by `getPurpose` and `getRequiredPurposes`, and the `Vendor` class returned by `getVendor` and `getRequiredVendors` were modified. If you encounter an issue with these changes (such as a removed field), please reach out to **<support@didomi.io>**.

Important notes:

* `Vendor.id` is now the ID provided by Didomi, without prefix
* `Purpose.description` is deprecated and should be replaced by `Purpose.descriptionText`
  {% endhint %}

**Features:**

* Set the minimum supported API version (`minSdk`) to `19`.
* Remove deprecated functions listed below:

  *Deprecated as of v1.31.0*

  * `setUserConsentStatus`
  * `setUserConsentStatusFromObjects`

  [`setUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setuserstatus) or [`setCurrentUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setcurrentuserstatus) should be used instead.

  *Deprecated as of v1.42.0*

  * `(get)disabledPurposeIds`
  * `(get)disabledPurposes`
  * `(get)disabledVendorIds`
  * `(get)disabledVendors`
  * `(get)enabledPurposeIds`
  * `(get)enabledPurposes`
  * `(get)enabledVendorIds`
  * `(get)enabledVendors`

  [`(get)userStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getuserstatus) or [`(get)currentUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getcurrentuserstatus) should be used instead.

  * `initialize` (without `DidomiInitializeParameters`)

  *Deprecated as of v1.43.0*

  * `setUser` (with authentication parameters instead of `UserAuthParams`)

  *Deprecated as of v1.43.1*

  * `getUserConsentStatusForPurpose`
  * `getUserConsentStatusForVendor`
  * `getUserConsentStatusForVendorAndRequiredPurposes`
  * `getUserLegitimateInterestStatusForPurpose`
  * `getUserLegitimateInterestStatusForVendor`
  * `getUserLegitimateInterestStatusForVendorAndRequiredPurposes`
  * `getUserStatusForVendor`

  [`(get)userStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getuserstatus) or [`(get)currentUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getcurrentuserstatus) should be used instead.

  *Deprecated as of v1.45.0*

  * `setUserStatus` (with `sendAPIEvent` parameter)
  * `setUserStatusFromObjects`

  [`setUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setuserstatus) or [`setCurrentUserStatus`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setcurrentuserstatus) should be used instead.
* Update dependencies (`com.google.code.gson:gson` from `2.9.1` to `2.10.1` and `androidx.recyclerview:recyclerview` from `1.3.1` to `1.3.2`).
* Update Didomi brand logo for AndroidTV notices.
* Update `showPreferences` parameter for **Sensitive Personal Information** screen (see [showPreferences](https://developers.didomi.io/cmp/mobile-sdk/reference/api#showpreferences)) and prevent displaying this screen if there is no such purpose to display.
* Modified `Purpose` class returned by methods `getPurpose` and `getRequiredPurposes`. See details below:
  * `id` (*String*) the Purpose ID.
  * `name` (*String*) the Purpose name.
  * `descriptionText` (*String*) the Purpose description. This property replaces the previous `description` property.
  * Removed properties:
    * `iabId` (*String?*)
    * `descriptionLegal` (*String?*)
    * `illustrations` (*List\<String>?*)
    * `isConsent` (*Boolean*)
    * `isEssential` (*Boolean*)
    * `isLegitimateInterest` (*Boolean*)
    * `isSpecialFeature` (*Boolean*)
    * `type` (*String?*)
    * `iabConsentRequired` (*Boolean*)
    * `iabLiRequired` (*Boolean*)
    * `category` (*PurposeCategory?*)
    * `isConsentNotEssential()` (*Boolean*)
    * `isLegitimateInterestNotEssential()` (*Boolean*)
    * `isLegitimateInterestOnly()` (*Boolean*)
* Modified `Vendor` class returned by methods `getVendor` and `getRequiredVendors`. See details below:
  * `id` (*String*) the Vendor ID provided by Didomi without any prefix.
  * `name` (*String*) the Vendor name.
  * `namespaces` (*Namespaces?*) the Namespaces of the vendor (*IAB*, *num*) and their corresponding ids.
  * `policyUrl` (*String*) the privacy policy URL (replace `privacyPolicyUrl`).
  * `purposeIds` (*List\<String>*) the Purpose list with legal basis "consent".
  * `legIntPurposeIds` (*List\<String>*) the Purpose list with legal basis "legitimate interest".
  * `featureIds` (*List\<String>*) the ID list that represent features.
  * `flexiblePurposeIds` (*List\<String>*) the ID list that represent flexible purposes.
  * `specialFeatureIds` (*List\<String>*) the ID list that represent Special Features.
  * `specialPurposeIds` (*List\<String>*) the ID list that represent Special Purposes.
  * `urls` (*List\<Url>?*) the localized Privacy policy and LI disclaimer urls introduced in TCF v2.2.
  * Removed properties:
    * `namespace` (*String*)
    * `iabId` (*String?*)
    * `cookieMaxAgeSeconds` (*Long?*)
    * `usesNonCookieAccess` (*Boolean*)
    * `deviceStorageDisclosureUrl` (*String?*)
    * `dataDeclaration` (*Set\<String>*)
    * `dataRetention` (*DataRetention?*)
    * `didomiId` (*String?*)
    * `isIABVendor` (*Boolean*)
    * `isIabVendor` (*Boolean*)
    * `essentialPurposeIds` (*List\<String>*)
    * `deviceStorageDisclosures` (*DeviceStorageDisclosures?*)
    * `isDeviceStorageDisclosureComplete` (*Boolean*)
    * `hasLegIntClaim` (*Boolean*)

**Fixes:**

* Ensure that the focus cannot go back to the `SELECT` title from AndroidTV notice for APIs 27 and below.
* Stop filtering vendors if they don't have any purposes but data declaration.

### 1.90.0 (February 8, 2024)

**Features:**

* Hide `Sensitive Personal Information` button from the Notice and Preferences screens if there is no such purpose to display.
* Ensure that regulation `NONE` will behave as expected (no consent required, notice and preferences screens can't be displayed and all vendors and purposes are enabled).

### 1.89.0 (January 22, 2024)

**Features:**

* Use default country code then default language when custom translations are missing for selected language.
* Create new public function `setCurrentUserStatus()` (See [setCurrentUserStatus](https://developers.didomi.io/cmp/mobile-sdk/reference/api#setcurrentuserstatus) for more information).
* Create new public function `getCurrentUserStatus()` (See [getCurrentUserStatus](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getcurrentuserstatus) for more information).

**Fixes:**

* Fix typo in TCF 2.2 notice for Spanish translation.

### 1.88.0 (January 11, 2024)

**Features:**

* Update Didomi brand logo for preferences screens.
* Create new public function `isUserStatusPartial()` (See [isUserStatusPartial](https://developers.didomi.io/cmp/mobile-sdk/reference/api#isuserstatuspartial) for more information).
* Create new public function `shouldUserStatusBeCollected()` (See [shouldUserStatusBeCollected](https://developers.didomi.io/cmp/mobile-sdk/reference/api#shoulduserstatusbecollected) for more information).

**Fixes:**

* Serbian translation was containing some Latin labels instead of Cyrillic.
* The consent stored after the first launch of an application could contain some discrepancies.
* Wrong padding for the Purpose's Vendor list screen for some devices.

### 1.87.0 (December 12, 2023)

**Features:**

* Set TCF version 2.2 as default version (current TCF 2.1 notices will be treated as TCF 2.2 notices).

### 1.86.3 (December 6, 2023)

**Fixes:**

* Temporarily disable internal use of WebView component.

### 1.86.2 (December 4, 2023)

**Fixes:**

* Fix Hebrew and Indonesian translations not displayed correctly on some devices.
* Fix to ignore purposes and special features coming from Custom Vendors when creating the TCF Consent String.

### 1.86.1 (November 23, 2023)

**Fixes:**

* Setup Notice logo constraints. Maximum height is now set to `150dp`.
* Publisher restrictions now applies to `Facebook` vendor.
* Fix Polish translation for Partners count label on Notice screen.

### 1.86.0 (November 17, 2023)

**Features:**

* Update IAB policy links URLs to <https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/>.
* Add support for new language regions: Arabic (Jordan), Dutch (Belgium), English (New Zealand), English (United Kingdom), French (Belgium), French (Canada), German (Austria), German (Switzerland).
* Handle Regulation field (`user.regs`) in synchronization requests and API events.
* Specify "non-IAB partners" instead of just "partners" when presenting count of partners associated to a purpose.
* Update list of purposes associated to Facebook vendor.
* Handle `notice.enableBulkActionOnPurpose` config parameter, to allow to hide the `enable / disable all purposes` switch on preferences screen.
* Use Kotlin 1.8.20.

### 1.85.1 (November 7, 2023)

**Fixes:**

* Remove dependencies `androidx.javascriptengine:javascriptengine` and `com.google.guava:guava` to prevent compatibility issues.

### 1.85.0 (November 6, 2023)

{% hint style="info" %}
This is the minimum required sdk version to fully handle TCF v2.2 notices on Android and Android TV.
{% endhint %}

**Features:**

* Add methods to get vendors count: [`getTotalVendorCount()`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#gettotalvendorcount), [`getIabVendorCount()`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getiabvendorcount), [`getNonIabVendorCount()`](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getnoniabvendorcount)
* Enable non-transitive R class in the SDK (Didomi resources will not be present anymore in application `R` class, only in `io.didomi.sdk.R`)
* Deprecate `Vendor.isIABVendor` and add `Vendor.isIabVendor` to use instead

**Fixes:**

* Support IAB purpose 11 from TCF 2.2 (`Use limited data to select content`)
* Remove unwanted dependency `com.google.firebase:firebase-crashlytics-buildtools:2.9.9`
* Update exported proguard rules for `gson` as advised in R8 documentation.

### 1.84.1 (October 20, 2023)

**Fixes:**

* Handle translation of TCF v2.2 purposes even when there is no internet connection.
* Improve performance on vendors screen.
* Update proguard rules for `gson` as advised in R8 documentation.

### 1.84.0 (October 17, 2023)

{% hint style="info" %}
This version added support for TCF v2.2 notices on AndroidTV. However it does not correctly handle purpose 11 (`Use limited data to select content`), sdk version 1.85.0 or higher should be used instead.
{% endhint %}

**Features:**

* Full TCF v2.2 support for AndroidTV.
* Change label of "View our partners" notice button to "Manage our partners" .

**Fixes:**

* Improve loading time to display the list of vendors associated to a purpose.
* Incorrect UI layout for purposes illustrations, vendor details and the list of vendors associated to a purpose on tablet.

### 1.83.1 (October 5, 2023)

**Fixes:**

* Revert dependency `com.google.android.material:material` to version `1.6.1` to allow use of gradle versions < `7.3.3` (required for Unity).
* Trim names of some IAB vendors containing additional trailing space.

### 1.83.0 (October 4, 2023)

{% hint style="info" %}
This version added support for TCF v2.2 notices on Android devices. However it does not correctly handle purpose 11 (`Use limited data to select content`), sdk version 1.85.0 or higher should be used instead.
{% endhint %}

**Features:**

* TCF v2.2 support.
* Revert the design and label of the partners button displayed on the notice (underlined / "View our partners").
* Update Target SDK from 31 to 33.
* Add support for new macros (`numberOfPartners`, `numberOfIABPartners` and `numberOfNonIABPartners`) from the Preferences screens, see the full list [here](https://developers.didomi.io/web-sdk/consent-notice/preferences#macros).
* Remove support of `notice.content.viewOurPartners` configuration parameter from AndroidTV Notice (the same default label as mobile will be used).

**Fixes:**

* Prevent crash from notice when calling the `setUser` function multiple times.

### 1.82.0 (September 19, 2023)

**Features:**

* Better layouts (fonts, margins, etc...) for `Additional Data Processing`, `Purposes` and `Vendors` detail screens.

**Fixes:**

* Add missing IAB tag on `Vendor` detail screen.
* Prevent duplicated screens when user is clicking multiple times.
* Manage empty privacy policy url from `Custom Vendor` detail screen.

### 1.81.1 (August 17, 2023)

**Fixes:**

* Prevent crash if `Android System WebView` is not available.

### 1.81.0 (July 18, 2023)

**Features:**

* Change the "Learn More" link into button.

### 1.80.0 (July 7, 2023)

**Features:**

* In notice, modify design of "Manage our partners" and "Learn more" links
* In vendor details screen, move links to IAB and privacy policy outside of privacy policy disclaimer (improves accessibility)
* Mark `disableDidomiRemoteConfig` initialization parameter as deprecated.

{% hint style="info" %}
Didomi SDK configuration should be done through the console. In the future, local configuration file will no longer be supported.
{% endhint %}

**Fixes:**

* GDPR was not correctly applied for additional countries set in console.

### 1.79.1 (June 15, 2023)

**Fixes:**

* Modify code related to `synchronized` and `try` / `catch` to avoid `VerifyError` during initialization when using JaCoCo plugin (see error description [here](https://salesforce.stackexchange.com/a/402982))

### 1.79.0 (June 14, 2023)

{% hint style="info" %}
This version has build issues in some configurations, it should not be used.
{% endhint %}

### 1.78.1 (May 4, 2023)

**Fixes:**

* Fix crash with Android < 21.
* Compute opposite color from 3 digits color code (for Button theme).
* Prevent blank `Sensitive Personal Information` button from Preferences (*Purposes*) if the label is not provided by the configuration.

### 1.78.0 (April 20, 2023)

**Features:**

* Display message on Sensitive Personal Information screen when no Personal Data is present.
* Display IAB TCF tag for IAB Vendors on AndroidTV vendor screens.

### 1.77.0 (April 3, 2023)

**Features:**

* Enable **`CPRA`** regulation support.
* Create new `Sensitive Personal Information` screens.
* Create new Internal events for `Sensitive Personal Information` interactions (see [Events](https://developers.didomi.io/cmp/mobile-sdk/android/reference/events)).
* Update `Additional Data Processing` list from `Purpose` screen in order to improve accessibility.

**Fixes:**

* Notice underlined buttons were not underlined on APIs below 26.
* Fix padding issue for multiline label from Preferences screens `Save` / `Save and close` button.

### 1.76.0 (March 20, 2023)

**Features:**

* Add a link to `privacyPolicyURL` on preferences (Purpose) screen when the link is not present in text description.
* Remove link to `privacyPolicyURL` in embedded default preferences (Purpose) screen description.

**Fixes:**

* Throw exception when `clearUser()` is called before SDK initialization.
* Fix conflicting color resources.

### 1.75.2 (March 8, 2023)

**Fixes:**

* Improve accessibility description of Vendor bulk action.

### 1.75.1 (February 28, 2023)

**Fixes:**

* Fix line break from Notice description and Vendor header description.
* Update proguard consumer rules in order to prevent obfuscation of Didomi classes.

### 1.75.0 (February 22, 2023)

**Features:**

* Accessibility improvements in Purposes and Vendors screen.
* Call `onError` callback when invalid API key is passed to `Didomi.initialize`.

**Fixes:**

* Prevent duplicated publisher restriction from configuration.
* Fix accessibility description for Essential Purposes.

### 1.74.0 (February 8, 2023)

**Features:**

* Accessibility improvements in
  * Partners button on main notice
  * Purposes screen
  * Purpose details buttons
  * Vendors screen
  * Vendor details buttons
* New User Information button from the Vendor screen.

### 1.73.0 (January 25, 2023)

**Features:**

* Accessibility improvements on the Notice screen.
* Accessibility improvements on the Purpose screen.
* Update proguard consumer rules in order to keep class member only for the Didomi package.

**Fixes:**

* Add missing subtitle "*Select partners*" for Vendor screen.
* Some large title could overlap the close button in Preferences screens (Purpose and Vendor).
* Some configurations allowed the Purpose screen to be closed even when the parameter `preferences.canCloseWhenConsentIsMissing` was *false*.

### 1.72.1 (December 15, 2022)

**Fixes:**

* Rendering issue when preferences screen header text contained html lists.

### 1.72.0 (December 14, 2022)

**Features:**

* Allow font family to be applied to all UI elements on the screen (see [#custom-font-family](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#custom-font-family "mention") for more details).
* Cross-device: do not reset Didomi User ID by default, unless `clearUser` is called (see [#multi-account](https://developers.didomi.io/cmp/share-consents-across-devices#multi-account "mention") for more details).

### 1.71.0 (November 17, 2022)

**Features:**

* Remove TCF v1 support.
* Supporting url and resource name from `logoUrl` configuration parameter.

### 1.70.2 (October 27, 2022)

**Fixes:**

* SetupUI was not working properly with specific Android project configurations, throwing an exception.

```
AndroidJavaException: java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onStart(androidx.lifecycle.LifecycleOwner)"
```

### 1.70.1 (October 21, 2022)

**Fixes:**

* Fix Toggle colors not changing for older APIs (< 24).
* Fix Toggle state not updated on click when the view holder is recycled for older APIs (< 27).

### 1.70.0 (October 19, 2022)

**Features:**

* Optimize display of Purpose legal description.
* Update `kotlin` plugin from 1.5.31 to 1.7.20.
* Update `appcompat` library from 1.3.1 to 1.4.2.
* Update `material` library from 1.4.0 to 1.6.1.
* Improve AndroidTV performance.

**Fixes:**

* Prevent crash when Application is brought back from background and the Didomi SDK is not initialized from the Application class.
* Fix device language not correctly handled for Hebrew and Indonesian.

### 1.69.0 (September 16, 2022)

**Features:**

* Add ability to enable sticky buttons on the notice (see [#sticky-buttons](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#sticky-buttons "mention")).
* Disable location query from device GPS when the location permissions are granted (we now rely only on our API to get the user location and to provide the matching regulation).

**Fixes:**

* Update link to IAB TCF v2 from the vendor detail page.
* Prevent CCPA "Sell my data" toggle neutral state.

### 1.68.0 (September 13, 2022)

**Features**:

* Add support for [CCPA regulation](https://gitlab.com/didomi/developers-documentation/-/blob/main/docs/cmp/mobile-sdk/android/broken-reference/README.md)

{% hint style="info" %}
CCPA support is still in beta, please contact <support@didomi.io> if you are interested to participate
{% endhint %}

### 1.67.0 (September 8, 2022)

**Features:**

* Accessibility improvements on the vendors list
* Improved accessibility on buttons displayed on the notice.

**Fixes:**

* Consent asked events was using all required purposes as both consent and legitimate interest.
* Fix toggle buttons behaviour when using purpose categories

### 1.66.0 (August 26, 2022)

**Features:**

* Improve accessibility of close buttons and headings on Preferences screens.

**Fixes:**

* Fix missing button padding on some devices for AndroidTV.
* Fix a lifecycle issue causing not initialized properties errors (e.g. `Fatal Exception: kotlin.UninitializedPropertyAccessExceptionlateinit property themeProvider has not been initialized`).

### 1.65.0 (August 8, 2022)

**Features:**

* Add ability to enable fullscreen mode (see [#fullscreen-mode](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#fullscreen-mode "mention") for more details).
* Handle device storage disclosure as link (instead of json) from IAB vendor list.
* Improve accessibility of Preferences screen.

**Fixes:**

* Add missing bottom bar for Vendor details page.
* Fix crash when displaying details of vendor with an incorrect device storage disclosure URL (`java.lang.NullPointerException: Attempt to invoke virtual method 'boolean io.didomi.sdk.models.DeviceStorageDisclosure.isValid()' on a null object reference`)

### 1.64.0 (July 21, 2022)

**Features:**

* Query purposes for current language in order to always provide up-to-date translations.
* Add new events for language change (see [#languageupdated](https://developers.didomi.io/cmp/mobile-sdk/reference/events#languageupdated "mention") and [#languageupdatedfailed](https://developers.didomi.io/cmp/mobile-sdk/reference/events#languageupdatedfailed "mention") for more details).

{% hint style="info" %}
`updateSelectedLanguage` is now asynchronous.
{% endhint %}

{% hint style="info" %}
`setUser(null)` is no more available. The correct call is `clearUser()` (see [#clearuser](https://developers.didomi.io/cmp/mobile-sdk/reference/api#clearuser "mention") for more details).
{% endhint %}

**Fixes:**

* Fix layout on additional data processing page.
* Disable neutral state when controlled value is legitimate interest.

### 1.63.0 (June 27, 2022)

**Features:**

* Handle mutli-account for Cross-device feature (see [#multi-account](https://developers.didomi.io/cmp/share-consents-across-devices#multi-account "mention") for more details).
* Allow to customize font family of title and description in notice and preferences screen (see [#custom-font-family](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#custom-font-family "mention") for more details).
* Hide bulk action in purposes and vendors screens when there is only one item in the list.
* Allow to call `reset()` method while SDK is not initialized.

### 1.62.0 (June 10, 2022)

**Features:**

* Add an optional title field in notice (see [#texts](https://developers.didomi.io/cmp/consent-notice/customize-the-notice#texts "mention") for more details)
* Allow to customize font size, color and alignment of title and description in notice and preferences screen (see[#notice](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#notice "mention"), [#preferences](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#preferences "mention") for more details)

**Fixes:**

* Prevent notice text scrolling outside of pop-up window

### 1.61.1 (May 30, 2022)

**Fixes:**

* Fix possible crash when app and notice were restored after staying a very long time in the background.

### 1.61.0 (May 17, 2022)

**Features:**

* Handle custom background color (see [Customize the theme & UI](https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-theme#color) for more detail).

**Fixes:**

* When notice was displayed to the user but no choice was made yet, the IAB consent string contained an incorrect list of enabled legitimate interest purposes.
* Vendor device storage disclosure list was not displayed on devices below API 21.

### 1.60.0 (April 27, 2022)

**Features:**

* Update design for tablets.
* Add new languages support (Norwegian, Brazilian, Azerbaijani, Bengali, Filipino/Tagalog, Hebrew, Hindi, Indonesian, Macedonian, Swahili).

{% hint style="info" %}
New languages must be enabled from the Console once they are available.
{% endhint %}

**Bug fixes:**

* Remove Purpose and Vendor bulk action when only essential/required purposes are used.
* Incorrect toggles animation while scrolling
* Fix issues when legitimate interest purposes are set as essential
* Fix a crash on Android TV preferences screen when using essential purposes

### 1.59.1 (April 4, 2022)

**Features:**

* Migrate `Didomi` class to Kotlin
* Improve banner notice layout
* Add a default background color for secondary buttons

**Fixes:**

* Fix dependencies conflict with some libraries, producing the error `java.lang.VerifyError: Verifier rejected class`

### 1.59.0 (April 4, 2022)

{% hint style="info" %}
This version can produce crashes and should not be used
{% endhint %}

### 1.58.0 (March 18, 2022)

**Features:**

* Improve accessibility of User Information screen
* Update ConstraintLayout dependency from 2.1.2 to 2.1.3

**Fixes:**

* Prevent glitch during Preferences screen animation for tablets
* Revert toggle change animation for purposes screen
* Prevent invisible toggle track for some application themes

### 1.57.0 (March 11, 2022)

**Features:**

* Allow multiple initializations of the SDK.
* Use Support Library for vector drawables (no more bitmaps generated for older APIs).
* Toggle and Switch components were migrated to Kotlin.

**Fixes:**

* Keep white background for the notice on Dark Mode.
* Remove empty space on the top of the notice with some themes (disable Dialog Title).

### 1.56.0 (March 4, 2022)

**Features:**

* Remove unnecessary permission `ACCESS_WIFI_STATE`.
* Improve accessibility for purposes and partners screens.
* Layout optimisation for CTV Vendors detail screens (layout simplification, use selector for components colors).
* Improve alignment in purposes list with optional icon.

### 1.55.0 (February 7, 2022)

{% hint style="info" %}
From this version, the Didomi SDK does no longer require `jcenter()` in the project repositories list.
{% endhint %}

**Features:**

* `Vendor` model class was migrated to Kotlin
* Embed a library which was hosted on deprecated JCenter repository, so JCenter is no longer required for building app

**Fixes:**

* Added the `didomi_` prefix before all Didomi SDK resource ids (layouts, drawables, colors, dimensions...) to prevent conflicts with app or other libraries resources
* Fix possible crash related to application lifecycle (`lateinit property model has not been initialized`)

### 1.54.0 (January 2022)

**Features:**

* Support new IAB rules regarding timestamp: the timestamp stored in the GDPR consent string has now only day-level granularity. See <https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/pull/306/files#diff-99d4d9da93e17e584b04a239a04503a776d54503b0e2db52fc157b77fc950bbbR65>
* `Purpose` model class was migrated to Kotlin

**Bug fixes:**

* The user consent update date was not correctly updated
* `syncDone` event was not called if last synchronization was still recent

### 1.53.0 (January 2022)

**Features:**

* Improve accessibility for the notice and purposes screens
* Migrate Didomi event classes to Kotlin

**Bug fixes:**

* Code javadoc was not published with the release

### 1.52.0 (December 2021)

**Features:**

* Optimize focus management on Android TV

**Bug fixes:**

* Apply “save”, “agree to all”, “disagree to all” to Vendors on Android TV preferences screen
* Saving Consent without any action will keep the current state of Vendors and Purposes on Android TV
* Fix Notice and Preferences layouts to prevent cropped text on Android TV
* Update displayed user status when reopening preferences screen on Android TV

### 1.51.2 (December 2021)

**Bug fixes:**

* Keep package name for obfuscated classes in order to prevent conflicts with other obfuscated libraries.

### 1.51.1 (December 2021)

{% hint style="info" %}
This release may cause conflicts with other obfuscated libraries. Please update to 15.1.2.
{% endhint %}

**Bug fixes:**

* Add missing @Keep annotation and avoid obfuscation of some parameters name that are exposed to host app.

### 1.51.0 (December 2021)

{% hint style="info" %}
This release may cause conflicts with other obfuscated libraries. Please update to 15.1.2.
{% endhint %}

**Features:**

* Update fallback data for IAB TCF global vendors list.
* Use `@Keep` annotation for obfuscation (no need for proguard rules anymore).
* Layouts optimization for performance.

### 1.50.0 (November 2021)

**Features:**

* Implement `showPreferences` / `hidePreferences` events when the preferences screen is opened and closed.

**Bug fixes:**

* Allow to modify the save button label in the vendors view through `preferences.content.save` property.
* Convert bitmap resources to vectorized resources.
* The common screen header had a few wrong margins.

### 1.49.0 (November 2021)

**Features:**

* Added Legitimate Interest in TCF Consent String by default once the notice has been shown.

**Bug fixes:**

* User Info screen was not displaying in fullscreen mode.
* Avoid random ConcurrentModificationException while synchronizing after several calls to Didomi#setUser
* The Purposes screen had a few wrong margins.

### 1.48.0 (October 2021)

#### **Bug fixes:**

* Simultaneous API event calls were sometimes skipped.

### 1.47.1 (October 2021)

**Bug fixes:**

* Get content from the remote if the cache date is valid but the file is corrupted or missing.

### 1.47.0 (October 2021)

**Features:**

* Handle deny option as a cross in notice

**Bug fixes:**

* Disabled vendors with only legitimate interest purposes were not present in `getUserStatus().vendors.global.disabled`
* Vendors with no associated consent or legitimate interest purposes were not present in `getUserStatus().vendors.global.enabled`
* In vendors screen, in some situations, a switch was displayed next to vendors with no associated consent or legitimate interest purposes

### 1.46.2 (September 2021)

**Bug fixes:**

* Consent String retrieved by the sdk was not correctly updated after consent changes

### 1.46.1 (September 2021)

**Bug fixes:**

* Fix incorrect serialization of `UserStatus` object when using Gson library

### 1.46.0 (September 2021)

**Features:**

* Add salesforce vendor to global configuration
* Update dependencies: Kotlin from `1.5.21` to `1.5.30`, Gson from `2.8.6` to `2.8.8`, Coroutines from `1.4.X` to `1.5.2`.

**Bug fixes:**

* Better focus management on vendors detail page for CTV

### 1.45.0 (September 2021)

**Features:**

* Add a parameter to determine if user consent choice was set from Didomi UI or from a call to `Didomi.setUserStatus`.
* Handle non-TCF purposes in device storage disclosures.
* When publisher restrictions applies to all vendors, apply it to non-IAB vendors as well.

**Bug fixes:**

* Vendor device storage disclosures were not displayed in some configurations.

### 1.44.0 (August 2021)

**Features:**

* Change the default focus on CTV notice according to CNIL guidelines.

### 1.43.2 (July 2021)

**Bug fixes:**

* Fix `getUserStatus()` method by correcting `vendors.globalLegitimateInterest` and `vendors.globalConsent` values.
* Fix Vendors bulk action for some configurations. The `All` toggle behavior was not working properly.
* Update french translation for `required`.

### 1.43.1 (July 2021)

{% hint style="info" %}
This version fixes an issue which prevented generation of the IAB-TCF consent string in some cases
{% endhint %}

**Bug fixes:**

* Update IAB-TCF encoding library to fix invalid consent string for some configurations.\
  Issue: <https://github.com/InteractiveAdvertisingBureau/iabtcf-java/pull/126/commits/a80bc4ce0bfb38120aaf8984091f2c512743f713>
* Fix User Info screen by adding scrollbars and fixing a crash after clipboard action on older devices.
* Update dependencies: Kotlin from `1.5.10` to `1.5.21` and Android Material from `1.3.0` to `1.4.0`.

### 1.43.0 (July 2021)

**Features:**

* Refactor dependency management that which will allow improving the performance of the SDK.

### 1.42.0 (July 2021)

{% hint style="info" %}
Important changes for Android TV apps:

* By default, the sdk is now disabled when running on Android TV. To enable it, you have to use the new `initialize` method with `DidomiInitializeParameters` , and set `androidTvEnabled` to `true`(see [reference](https://developers.didomi.io/cmp/mobile-sdk/reference/api#initialize))
* To use a specific notice configuration, you must set the parameter `tvNoticeId` instead of `noticeId`.
  {% endhint %}

**Features:**

* Add a `getUserStatus` method, replacing the previous methods to get user consent status. See the [reference](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getuserstatus) for more information.
* Add a new initialization method with a `DidomiInitializeParameters` parameters object. This is the recommended way to initialize the sdk, the previous methods are now deprecated. See the [reference](https://developers.didomi.io/cmp/mobile-sdk/reference/api#initialize) for more information.
* Disable Android TV SDK by default, and add `androidTvEnabled` parameter to enable it. If you need to use the Android TV SDK, please reach out to your dedicated customer success manager.
* Add `tvNoticeId` parameter for Android TV SDK specific notice id.
* Ensure configuration is only loaded from Didomi on Android TV SDK.
* Add getDeviceType method to check the device determined by the SDK (see [reference](https://developers.didomi.io/cmp/mobile-sdk/reference/api#getdevicetype))
* Update androidx.appcompat dependency: `1.3.0`

**Bug fixes:**

* Fix Android TV preferences screen closing unexpectedly when switching from partners tab
* Fix material shadow under preferences screens buttons

### 1.41.3 (June 2021)

**Bug fixes:**

* `getRequiredVendorIds` method was only returning vendors with consent-based data processing instead of all the required vendors
* When reopening the preferences screen after setting user consent status programmatically (`setUserAgreeToAll` / `setUserDisagreeToAll` / `setUserStatus` methods), the displayed consent state was not correct

### 1.41.2 (June 2021)

**Features:**

* Removed separate internal vendors implementations, and turned `Vendor` interface into a class instead
* Prepare support for displaying device storage information for custom vendors

**Bug fixes:**

* Fix `hidePreferences` command when main preferences screen is not displayed
* Use density-independent pixels (dp) instead of raw pixels for theme buttons border and corner radius sizes. **In order to preserve existing configurations, this fix is under a feature flag**: set `sizesInDp` to `true` to use it (see [Customize the theme & UI](https://developers.didomi.io/cmp/consent-notice/customize-the-theme#buttons) for more information)
* Fix material shadow under notice "Agree" button

  �

### 1.41.1 (May 2021)

**Bug fixes:**

* Manage languages with specific script code from device
* Handle vendor with no consent or LI in `getUserStatusForVendor`

### 1.41.0 (May 2021)

**Features:**

* Add new languages support, see <https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-notice#supported-languages>
* Improve public methods documentation

### 1.40.2 (May 2021)

**Bug fixes:**

* Prevent incorrect buttons colors when using a non-Bridge `Theme.MaterialComponents.*` app theme

### 1.40.1 (May 2021)

**Features:**

* Improved header's layout and made bulk action sticky on the Vendors view

**Bug fixes:**

* Remove Lifecycle Observer after onResume was reached in setupUI

### 1.40.0 (April 2021)

**Features:**

* Allow to use Didomi SDK with simple `FragmentActivity` instead of `AppCompatActivity`
* Improve internal handling of Didomi fragments
* Remove internal use of some deprecated Android Framework features
* Added support for `app.deploymentId`.

**Bug fixes:**

* Fix a glitch of the "Agree to all" button in preferences screen

### 1.39.0 (April 2021)

{% hint style="warning" %}
We now use AndroidX instead of the support library. This means that your project must [enable AndroidX](https://developer.android.com/jetpack/androidx) to use this version.
{% endhint %}

{% hint style="warning" %}
Please note that this release replaces the Advertising ID provided by Google Ads Services for a random custom identifier.
{% endhint %}

**Features :**

* Allow users to see and copy their information (Consent Token and User Id)
* Remove ADID usage
* Use AndroidX (allowing you to disable jetifier in your project)

### 1.38.1 (April 2021)

**Features:**

* Support for denied consent duration (`app.deniedConsentDuration`)

**Bug fixes:**

* Fix possible crash when using some colors in configuration
* Choice buttons incorrectly displayed in essential purposes details screen
* Handle essentials purposes associated to vendor's legitimate interests

### 1.37.0 (March 2021)

**Features:**

* Support for Categories
* Change notice buttons order

**Bug fixes:**

* Fix Vendors with essential purposes that are disabled even when the user accepts all

### 1.36.0 (March 2021)

**Features:**

* Support for Android TV

**Bug fixes:**

* Do not raise Exception when calling `Didomi.updateSelectedLanguage` with an unavailable language code
* Fix custom purpose translations issues when language is not the default

### 1.35.1 (March 2021)

**Features:**

* Updated behaviour of `setUserDisagreeToAll` to be consistent with other platforms.
* Added support for the `denyAppliesToLI` feature in notice and preferences screen.
* Check if SDK is ready before using features `Didomi.updateSelectedLanguage`, `Didomi.getText`, `Didomi.getTranslatedText`.
* Sync user choices for cross-device. (This feature is currently in private beta. Please reach out to our Support team if you want to use it)

**Bugs fixes:**

* Rename conflicting `state` and `enabled` attributes.
* Fix custom essential purposes not displayed after language change.
* Modify SDK initialization logs from `info` to `verbose`.
* Prevent crash if the TCF Consent String is not present when syncing user choices with the Didomi API.

### 1.34.0 (March 2021)

{% hint style="info" %}
The Android Didomi SDK is now distributed through mavenCentral instead of deprecated JCenter. Make sure to update your build scripts: [Setup](https://developers.didomi.io/cmp/mobile-sdk/setup#add-the-sdk-to-your-project)
{% endhint %}

**Features:**

* Support for consent maximum duration (`app.consentDuration` , default is 12 months / 31,622,400 seconds)
* Distribute SDK through mavenCentral

**Fixes:**

* Fix an issue with some API events sample rate
* Prevent SDK from removing Camera permission
* Fix possible crash in vendor details screen

### 1.33.0 (February 2021)

**Features:**

* Added support to include Publisher Country Code into Consent String

**Bug fixes:**

* Fix vendor details screen behavior on scroll

### 1.32.0 (February 2021)

**Features:**

* Added ability to display "Continue without agreeing" link on the notice (`notice.denyAsLink = true`).

### 1.31.0 (January 2021)

**Features :**

* Show a Disagree button on consent notice by setting `notice.type = "optin"`
* Use primary button style for the disagree button by setting `notice.denyAsPrimary = true`
* Evolution of UI design
* Add new method `setUserStatus(purposesConsentStatus, purposesLIStatus, vendorsConsentStatus, vendorsLIStatus)` to set status globally
* Deprecate old method `setUserConsentStatus(enabledPurposeIds, disabledPurposeIds, enabledLegitimatePurposeIds, disabledLegitimatePurposeIds, enabledVendorIds, disabledVendorIds, enabledLegIntVendorIds, disabledLegIntVendorIds)` and replace it with a new method `setUserStatus` with the same signature

**Bug fixes :**

* Fix consent notice pop-up width too small on some devices

### 1.30.0 (January 2021)

**Features :**

* Indicate platform and SDK version when downloading notice configuration
* Added support for TCF v2.1

### 1.29.1 (January 2021)

**Bug fixes :**

* Fallback to English resources if requested locale was stripped by app bundles
* Fix incorrect or missing Google vendor after language change
* Prevent a crash when requesting notice display directly

### 1.29.0 (December 2020)

**Features :**

* Device storage usage information in the detailed view for each vendor
* Update texts provided by IAB

### 1.28.0 (December 2020)

{% hint style="warning" %}
Please note that this release includes the ability to download the GVL (Global Vendor List) file. If you don't want the SDK initialization to wait for this step, set the `app.vendors.iab.requireUpdatedGVL` flag to false as explained here : <https://developers.didomi.io/cmp/mobile-sdk/android/setup#download-global-vendor-list-gvl>
{% endhint %}

**Features :**

* Essential/Required purposes section in the detailed view for each vendor
* Download the GVL (Global Vendor List)

### 1.27.0 (November 2020)

**Features :**

* Send TCF and Additional Consent information in API events
* Optimize publisher restrictions encoding in Consent String
* Modify additional data processing links color in purposes screen

**Bug fixes :**

* Fix daysBeforeShowingAgain parameter preventing consents recollection unexpectedly

### 1.26.2 (November 2020)

**Bug fixes :**

* Fix pageview API event sent when app is still in background
* Update embedded proguard rules

### 1.26.1 (October 2020)

**Features :**

* GVL update
* Detailed additional data processing information
* Remove TCFv1 storage keys when TCFv2 is enabled

**Bug fixes :**

* Ensure that the legitimate interest status is correctly passed to Webviews in `getJavaScriptForWebView`

### 1.25.0 (October 2020)

**Features :**

* Support for publisher restrictions
* Improve SDK initialization time
* Update notice default texts
* Allow disabling TCF from config
* Export javadoc

**Bug fixes :**

* Dynamic buttons size in Preferences screen
* Potential crash in purpose details screen

### 1.24.2 (September 2020)

**Bug fixes :**

* After modifying purposes consent manually, it was not possible to save if a purpose was only available under legitimate interest.

### 1.24.0 (September 2020)

**Features :**

* Support for `user.ignoreConsentBefore` parameter in config file, to force recollecting consent after a certain date
* Added status accessors in `Didomi` class : `getUserLegitimateInterestStatusForVendor`, `getUserLegitimateInterestStatusForPurpose`, `getUserLegitimateInterestStatusForVendorAndRequiredPurposes`, `getUserStatusForVendor`

### 1.23.0 (September 2020)

**Features :**

* Support for organization user ID: `Didomi#setUser()`
* TCF v2: Do not display toggle for vendors with no consent or legitimate interest purpose
* Do not display vendors with no associated purpose

**Bug fixes :**

* Fix callback events `PreferencesClickPurposeAgreeEvent`, `PreferencesClickPurposeDisagreeEvent`, `PreferencesClickVendorAgreeEvent`, `PreferencesClickVendorDisagreeEvent` triggered several times when modifying purpose or vendor choices
* Increase notice pop-up width
* Do not display notice pop-up "Learn more" and "Accept" buttons on the same line if there is not enough space
* Fix notice bottom banner "Accept" button not displayed correctly

### 1.22.2 (September 2020)

**Bug fixes :**

* Prevent `ConcurrentModificationException` occurring from time to time when adding an EventListener

### 1.22.1 (September 2020)

**Bug fixes :**

* Impossible to modify consent choices in Preferences screen when essential purposes are defined

### 1.22.0 (August 2020)

**Features:**

* Updated IAB vendors list to 52.

### 1.21.1 (August 2020)

**Bug fixes :**

* Fix consent string and other properties not stored in Shared Preferences on devices running an Android version lower than 7.0

### 1.21.0 (August 2020)

**Features :**

* Added support for Google as a TCF vendor

**Bug fixes :**

* Fixed alignment of the banner notice buttons

### 1.20.3 (August 2020)

**Bug fixes :**

* Incorrect display of the notice buttons when texts are too long
* Preferences screen validation buttons enabled too soon
* Preferences screen "close" button displayed despite config parameters

### 1.20.2 (August 2020)

**Bug fixes :**

* Fix value for SharedPreference `"IABTCF_PolicyVersion"`

### 1.20.1 (July 2020)

**Bug fixes :**

* `getUserConsentStatusForVendorAndRequiredPurposes` was not returning the right status for `google` and other custom vendors.
* Add missing purposes for custom vendors

### 1.20.0 (July 2020)

**Features:**

* Additional data processing in Preferences

### 1.19.2 (July 2020)

**Features :**

* Link to open vendors page from notice

**Bug fixes :**

* Fix crash when using latest versions of play-services-ads
* Prevent memory leak in onReady / onError functions

### 1.19.1 (July 2020)

**Features :**

* "IAB TCF" tag on vendors list

**Bug fixes :**

* Export Proguard rules with library
* Consents were not sent in TCF v1 for vendors with only legitimate interest purposes

### 1.19.0 (July 2020)

**Features:**

* Notice configuration by ID

### 1.18.0 (July 2020)

**Features:**

* IAB TCF v2 initial support

### 1.17.1 (July 2020)

**Bug fixes:**

* Fix interface issue at build time with RMSwitch dependency

### 1.17.0 (June 2020)

**Features:**

* Pass consent to Webviews or Chrome Custom Tabs via query-string

### 1.16.0 (June 2020)

**Features:**

* Do not pre-check vendors in Preferences

### 1.15.0 (June 2020)

**Features:**

* Allow setting the log level through `setLogLevel`

### 1.14.1 (June 2020)

**Features:**

* `showPreferences` has been improved, requiring an AppCompactActivity and allowing to select which view should open (purposes or vendors)

### 1.13.0 (May 2020)

**Bug fixes:**

* Ensure that the SDK is never initialized more than once even if `Didomi.getInstance().initialize()` is called multiple times.
* Fixed a crash caused by a race condition that could happen when an activity is destroyed with `finishActivity` or `finishAffinity` and `setupUI` is called before the activity is fully destroyed by Android

### 1.12.1 (May 2020)

**Features:**

* Improved compatibility with dark themes.

### 1.11.0 (March 2020)

**Features:**

* Updated Global Vendor List to version 192.

### 1.10.11 (February 2020)

**Bug fixes:**

* Better protect Didomi SDK against null Fragment Managers

### 1.10.10 (February 2020)

**Bug fixes:**

* Background was displayed in a dark color on some views when device and app had dark mode enabled which made it difficult to read dark text.

### 1.10.9 (February 2020)

**Features:**

* Added `Didomi.notice.hide();` to the JavaScript code that gets returned by method `getJavaScriptForWebView`. This means that the notice view on the web app that's loaded on the native app will be hidden automatically when injecting the JavaScript code returned by this method.

### 1.10.7 (January 2020)

**Bug fixes:**

* The privacy policy link for each vendor on the Vendors view was picking up the color from the app theme which in some cases could result in white text displayed on a white background.

### 1.10.5 (January 2020)

**Features:**

* Updated Spanish and Lithuanian translations.

**Bug fixes:**

* The `Learn more` button did not have the right padding.
* The description texts for each purpose and vendor were picking up the color from the app theme which in some cases could result in white text displayed on a white background.

### 1.10.1 (Dec 2019)

**Features:**

* Updated `getTranslatedText` method to get translated text from multiple sources <https://developers.didomi.io/cmp/mobile-sdk/reference-android#gettranslatedtext>
* Created new method `updateSelectedLanguage` method that allows app developers to change the language of the Didomi SDK.
* Added the ability to pass a language code when calling the `initialize` method. This language code will be used to set the selected language.

**Bug fixes:**

* The `save` button in the purposes view was not being enabled property in some cases when the user had previously saved their preferences using an old list of purposes.

### 1.9.0 (Nov 2019)

**Bug fixes:**

* LeakCanary was reporting a memory leak related to Fragment Managers which was potentially caused by a race condition between the Garbage Collector and LeakCanary (potentially a false positive).

### 1.8.12 (Nov 2019)

**Feature:**

* Updated the way API events are sampled to be based on user ID rather than on a random number.

### 1.8.11 (Oct 2019)

**Feature:**

* Introduced `ui.action` type for events sent to the API for tracking the interactions of the user with the consent UI. Actions added: `preferences.shownpurposes`, `preferences.shownvendors`, `preferences.purposechanged` and `preferences.vendorchanged`.

### 1.8.10 (Oct 2019)

**Bug fixes:**

* When displayed as a banner, the consent notice was hiding in landscape orientation. The user would have to swipe up to bring back the notice.

### 1.8.9 (Oct 2019)

**Bug fixes:**

* When the `colorControlHighlight` property was being set in the app theme, the purpose switches were taking that color as their background color.

### 1.8.8 (Oct 2019)

**Bug fixes:**

* When the notice was displayed as a banner and the text was long, the bottom buttons wouldn't display on small screens.

### 1.8.7 (Jul 2019)

**Bug fixes:**

* Some mapping keys related to the getText and getTranslatedText methods were not matching the JSON properties of the preferences and notice properties.

### 1.8.6 (Jul 2019)

**Features:**

* Updated IAB vendors list to 155.
* Added the ability to provide translatable texts through the `texts` property in the `didomi_config.json` file that can be used when creating a custom notice.

### 1.8.5 (Jul 2019)

**Features:**

* Added the ability to block/disable the `Agree to all` and `Disable to all` buttons by providing the `preferences.disableButtonsUntilScroll` flag and setting it to `true`.

### **1.8.4 (Jul 2019)**

**Bug fixes:**

* The consent notice was not behaving properly when the device was rotated.

### **1.8.3 (Jun 2019)**

**Bug fixes:**

* Event `HideNoticeEvent` was not triggered as required in some cases.

### **1.8.2 (Jun 2019)**

**Bug fixes:**

* The Console generates custom purpose IDs within `[A-Za-z0-9-_]` and SDKs only allowed `[a-z0-9-_]`

### **1.8.1 (May 2019)**

**Features:**

* Exposed `showPreferences(AppCompatActivity activity)` method to allow the display of the Preferences view from an activity other than the one used with the `setupUI` method.

### **1.8.0 (May 2019)**

{% hint style="danger" %}
**Breaking change**

This release adds an exception that will be thrown by those public methods that must be called only once the Didomi SDK is ready. The recommended way to handle this exception is by passing a lambda expression to the \`onReady\` method where the corresponding method is called.
{% endhint %}

**Features:**

* Added the `DidomiNotReadyException` to those methods that should only be called once the Didomi SDK is ready.

### **1.7.2 (May 2019)**

**Features:**

* Update IAB vendors list (version 146)

### **1.7.1 (May 2019)**

**Bug fixes:**

* Popup notice was being dismissed when the device back button was pressed.
* SDK was crashing the app when 1) an SDK fragment (notice, preferences, etc.) was left open and the app was sent to the background for long enough to be killed by the OS and 2) the app was resumed on that fragment.

### **1.7.0 (May 2019)**

**Features:**

* [Share consent status with WebViews](https://developers.didomi.io/cmp/mobile-sdk/share-consent-with-webviews)

### **1.6.0 (Apr 2019)**

**Features:**

* Add the possibility to get the configuration remotely from the Didomi console

{% hint style="warning" %}
If you are coming from a previous version and want to enable the remote Didomi configuration created from the console, please add `false` as a new parameter in your `initialize` function. [See documentation](https://developers.didomi.io/cmp/mobile-sdk/setup#initialize-the-sdk).
{% endhint %}

### **1.5.0 (Apr 2019)**

**Features:**

* Add Russian and Ukrainian languages
* [Add events to track user interaction](https://developers.didomi.io/cmp/mobile-sdk/reference/api#addeventlistener)

### 1.4.4 (Mar 2019)

**Bug fixes:**

* `java.util.ConcurrentModificationException` was thrown when adding event listeners inside the `onReady` callback.
* Not availability of `Advertising ID` was causing issues. Now we use a fallback identifier when `Advertising ID` is not available.

### 1.4.3 (Mar 2019)

**Bug fixes:**

* There was a race condition when registering SDK events that in some edge cases could potentially crash the app.
* The SDK was using the current activity on fragments instead of the fragments themselves to retain the view models which in some edge cases could potentially crash the app.

### 1.4.2 (Feb 2019)

**Features:**

* Exposing `shouldConsentBeCollected` method used to allow developers to check if consent should be collected or not.

### 1.4.1 (Feb 2019)

**Bug fixes:**

* App was crashing in some edge cases when user minimised the app right before the consent notice was displayed.

### 1.4.0 (Jan 2019)

**Features:**

* Customize buttons and links color <https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-theme>.
* Details about purposes and vendors by expanding the list items.
* Purposes are listed under each vendor item on the vendors screen when they are expanded.
* Customize logo on the Purposes view <https://developers.didomi.io/cmp/mobile-sdk/getting-started#configure-your-app-name-and-logo>.
* Bypass notice and open Preferences pop-in directly <https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-preferences-popup#display-when-consent-is-missing>.
* Customize purposes order and icons by providing purpose categories <https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-preferences-popup#purposes>.
* Prevent the Preferences pop-in from being closed when consent is missing <https://developers.didomi.io/cmp/mobile-sdk/consent-notice/customize-the-preferences-popup#prevent-the-popup-from-being-closed-when-consent-is-missing>.
* Remove "Number of Partners" on the Preferences view.
* Update content translations.

**Bug fixes:**

* Text scrolled in the middle on the Preferences pop-in.
* Preferences pop-in opens twice.
* Preferences pop-in closed when clicking on back button and the "X" button was disabled.
* Vendor switch color was not different from the switches on the Purposes view.

### 1.3.0 (Jan 2019)

**Features:**

* Supports the 24 European languages
* Number of days before recollecting consent option in the configuration tag

**Bug fixes:**

* Fixed some UI issues

### 1.2.2 (Dec 2018)

**Bug fixes:**

* Translate the "View Privacy Policy" link on the vendors list
* Fixed potential issue around macros and the way they get replaced in the content

### 1.2.1 (Nov 2018)

**Bug fixes:**

* Default texts format used different font size/weight across languages
* Remove `VendorRepository` and `ApiEventsRepository` from the public API
* Correctly load purposes and vendors statuses in the Preferences popup after consent has been given
* Show the `Save` button when the Preferences popup is open after consent has been given

### 1.2.0 (Nov 2018)

**Features:**

* Custom purposes
* Map custom vendor to IAB ID
* Expose `getUserConsentStatusForPurpose` and `getUserConsentStatusForVendorAndRequiredPurposes` in the public API
* Ability to customize texts in the preferences popup

**Bug fixes:**

* Translation issues on purposes and vendors
* Do not load cached config if remote config URL is null/empty

### 1.1.0 (Nov 2018)

**Features:**

* Load app config (`didomi_config.json`) from a remote URL
* `IABConsent_SubjectToGDPR` shared preferences key for the IAB spec to indicate whether the user is subject to GDPR or not

**Bug fixes:**

* Expandable info on vendors would not expand
* Remove the app name from the User-Agent and replace it with "Didomi SDK/\[SDK version]"

### 1.0.0 (Oct 2018)

Initial version.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.didomi.io/cmp/mobile-sdk/android/versions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
