Versions
Last updated
Last updated
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.
Features:
Add new features to CurrentUserStatus
returned by :
gppString
field (beta).
Utility method shouldUserStatusBeCollected()
.
Modify the layout of the bottom bar buttons on the Preferences screen.
Handle configuration parameter preferences.enableAllButtons
.
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.
Fixes:
Cross-device: Make sure remote consent expiration is checked before applying consent synchronization.
Features:
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.
Features:
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.
Features:
Add US regulation support for Utah: ucpa
.
Features:
Accessibility: Increase contrast in toggle buttons icons.
Stop displaying Sensitive Personal Information in a separate screen.
Fixes:
Fix ConcurrentModificationException
related to SDK events.
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.
Fixes:
Update translations and embedded GVL version.
Fixes:
When overriding IAB vendors with custom vendors, prevent overriding vendor id with custom id.
Prevent ConcurrentModificationException
when setting and getting user status.
Features:
Fixes:
Hide privacy policy button from AndroidTV's notice when the link is blank.
Trim translations before displaying the purpose list.
Features:
Update translations and embedded GVL version.
Fixes:
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
.
Fixes:
Update translations and embedded GVL version.
Features:
Support Serbian latin language script
Rename IDPL
regulation to ICDPA
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
.
Your application must target API 34 starting this version (required from Google Play Store starting August 31, 2024).
Fixes:
Make sure DidomiToggle
is not obfuscated.
Make sure sticky buttons behave correctly when scrolling the content of the notice.
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).
Features:
Add support for TCF v2.2 amendments (implement new Storage Disclosure
button and screen).
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.
Mark obsolete methods as Deprecated
:
isConsentRequired
isUserConsentStatusPartial
isUserLegitimateInterestStatusPartial
getUserStatus
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.
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.
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.
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.
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.
Deprecate SyncDone
event.
This version has obfuscation issues and should not be used.
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.
Fixes:
Vendors status updates were ignored when using openCurrentUserStatusTransaction
method.
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
.
Features:
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.
Features:
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.
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.
Major update of the SDK
This release will contain some breaking changes, described below.
Migration steps:
Update Didomi SDK to version 1.90.0
if it is not already the case.
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.
Update Didomi SDK to version 2.0.0
.
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
Features:
Set the minimum supported API version (minSdk
) to 19
.
Remove deprecated functions listed below:
Deprecated as of v1.31.0
setUserConsentStatus
setUserConsentStatusFromObjects
Deprecated as of v1.42.0
(get)disabledPurposeIds
(get)disabledPurposes
(get)disabledVendorIds
(get)disabledVendors
(get)enabledPurposeIds
(get)enabledPurposes
(get)enabledVendorIds
(get)enabledVendors
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
Deprecated as of v1.45.0
setUserStatus
(with sendAPIEvent
parameter)
setUserStatusFromObjects
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.
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.
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).
Features:
Use default country code then default language when custom translations are missing for selected language.
Fixes:
Fix typo in TCF 2.2 notice for Spanish translation.
Features:
Update Didomi brand logo for preferences screens.
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.
Features:
Set TCF version 2.2 as default version (current TCF 2.1 notices will be treated as TCF 2.2 notices).
Fixes:
Temporarily disable internal use of WebView component.
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.
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.
Features:
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.
Fixes:
Remove dependencies androidx.javascriptengine:javascriptengine
and com.google.guava:guava
to prevent compatibility issues.
Features:
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.
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.
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.
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.
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.
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.
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.
Fixes:
Prevent crash if Android System WebView
is not available.
Features:
Change the "Learn More" link into button.
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.
Fixes:
GDPR was not correctly applied for additional countries set in console.
Fixes:
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.
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.
Features:
Enable CPRA
regulation support.
Create new Sensitive Personal Information
screens.
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.
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.
Fixes:
Improve accessibility description of Vendor bulk action.
Fixes:
Fix line break from Notice description and Vendor header description.
Update proguard consumer rules in order to prevent obfuscation of Didomi classes.
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.
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.
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.
Fixes:
Rendering issue when preferences screen header text contained html lists.
Features:
Features:
Remove TCF v1 support.
Supporting url and resource name from logoUrl
configuration parameter.
Fixes:
SetupUI was not working properly with specific Android project configurations, throwing an exception.
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).
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.
Features:
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.
Features:
Add support for CCPA regulation
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
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
).
Features:
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
)
Features:
Query purposes for current language in order to always provide up-to-date translations.
Fixes:
Fix layout on additional data processing page.
Disable neutral state when controlled value is legitimate interest.
Features:
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.
Features:
Fixes:
Prevent notice text scrolling outside of pop-up window
Fixes:
Fix possible crash when app and notice were restored after staying a very long time in the background.
Features:
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.
Features:
Update design for tablets.
Add new languages support (Norwegian, Brazilian, Azerbaijani, Bengali, Filipino/Tagalog, Hebrew, Hindi, Indonesian, Macedonian, Swahili).
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
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
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
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).
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.
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
)
Features:
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
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
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
Bug fixes:
Keep package name for obfuscated classes in order to prevent conflicts with other obfuscated libraries.
Bug fixes:
Add missing @Keep annotation and avoid obfuscation of some parameters name that are exposed to host app.
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.
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.
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.
Simultaneous API event calls were sometimes skipped.
Bug fixes:
Get content from the remote if the cache date is valid but the file is corrupted or missing.
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
Bug fixes:
Consent String retrieved by the sdk was not correctly updated after consent changes
Bug fixes:
Fix incorrect serialization of UserStatus
object when using Gson library
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
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.
Features:
Change the default focus on CTV notice according to CNIL guidelines.
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
.
Bug fixes:
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
.
Features:
Refactor dependency management that which will allow improving the performance of the SDK.
Features:
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.
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
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
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
Fix material shadow under notice "Agree" button
�
Bug fixes:
Manage languages with specific script code from device
Handle vendor with no consent or LI in getUserStatusForVendor
Features:
Improve public methods documentation
Bug fixes:
Prevent incorrect buttons colors when using a non-Bridge Theme.MaterialComponents.*
app theme
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
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
Please note that this release replaces the Advertising ID provided by Google Ads Services for a random custom identifier.
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)
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
Features:
Support for Categories
Change notice buttons order
Bug fixes:
Fix Vendors with essential purposes that are disabled even when the user accepts all
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
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.
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
Features:
Added support to include Publisher Country Code into Consent String
Bug fixes:
Fix vendor details screen behavior on scroll
Features:
Added ability to display "Continue without agreeing" link on the notice (notice.denyAsLink = true
).
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
Features :
Indicate platform and SDK version when downloading notice configuration
Added support for TCF v2.1
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
Features :
Device storage usage information in the detailed view for each vendor
Update texts provided by IAB
Features :
Essential/Required purposes section in the detailed view for each vendor
Download the GVL (Global Vendor List)
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
Bug fixes :
Fix pageview API event sent when app is still in background
Update embedded proguard rules
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
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
Bug fixes :
After modifying purposes consent manually, it was not possible to save if a purpose was only available under legitimate interest.
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
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
Bug fixes :
Prevent ConcurrentModificationException
occurring from time to time when adding an EventListener
Bug fixes :
Impossible to modify consent choices in Preferences screen when essential purposes are defined
Features:
Updated IAB vendors list to 52.
Bug fixes :
Fix consent string and other properties not stored in Shared Preferences on devices running an Android version lower than 7.0
Features :
Added support for Google as a TCF vendor
Bug fixes :
Fixed alignment of the banner notice buttons
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
Bug fixes :
Fix value for SharedPreference "IABTCF_PolicyVersion"
Bug fixes :
getUserConsentStatusForVendorAndRequiredPurposes
was not returning the right status for google
and other custom vendors.
Add missing purposes for custom vendors
Features:
Additional data processing in Preferences
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
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
Features:
Notice configuration by ID
Features:
IAB TCF v2 initial support
Bug fixes:
Fix interface issue at build time with RMSwitch dependency
Features:
Pass consent to Webviews or Chrome Custom Tabs via query-string
Features:
Do not pre-check vendors in Preferences
Features:
Allow setting the log level through setLogLevel
Features:
showPreferences
has been improved, requiring an AppCompactActivity and allowing to select which view should open (purposes or vendors)
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
Features:
Improved compatibility with dark themes.
Features:
Updated Global Vendor List to version 192.
Bug fixes:
Better protect Didomi SDK against null Fragment Managers
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.
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.
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.
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.
Features:
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.
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).
Feature:
Updated the way API events are sampled to be based on user ID rather than on a random number.
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
.
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.
Bug fixes:
When the colorControlHighlight
property was being set in the app theme, the purpose switches were taking that color as their background color.
Bug fixes:
When the notice was displayed as a banner and the text was long, the bottom buttons wouldn't display on small screens.
Bug fixes:
Some mapping keys related to the getText and getTranslatedText methods were not matching the JSON properties of the preferences and notice properties.
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.
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
.
Bug fixes:
The consent notice was not behaving properly when the device was rotated.
Bug fixes:
Event HideNoticeEvent
was not triggered as required in some cases.
Bug fixes:
The Console generates custom purpose IDs within [A-Za-z0-9-_]
and SDKs only allowed [a-z0-9-_]
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.
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.
Features:
Added the DidomiNotReadyException
to those methods that should only be called once the Didomi SDK is ready.
Features:
Update IAB vendors list (version 146)
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.
Features:
Features:
Add the possibility to get the configuration remotely from the Didomi console
Features:
Add Russian and Ukrainian languages
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.
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.
Features:
Exposing shouldConsentBeCollected
method used to allow developers to check if consent should be collected or not.
Bug fixes:
App was crashing in some edge cases when user minimised the app right before the consent notice was displayed.
Features:
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.
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.
Features:
Supports the 24 European languages
Number of days before recollecting consent option in the configuration tag
Bug fixes:
Fixed some UI issues
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
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
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
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]"
Initial version.
Create new setUser
function that accepts an instance of the new DidomiUserParameters
(more information ).
Deprecate the other setUser
functions (more information ).
Use Java 11 to build the SDK (more information ).
Created new applicableRegulation public API that provides a string value (CPRA
, GDPR
, NONE
, etc.) containing the regulation being applied (more information ).
Add support for syncUserChanged
callback. See reference for more information.
Add new organizationUserId
parameter for SyncReady
event (see ).
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 ).
Update embedded QuickJS
library in order to support 16 KB page sizes (see for more information).
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 for more information.
See the complete list of currently deprecated methods .
Support for IABTCF_EnabledAdvertiserConsentMode
for Google Consent Mode, through the configuration flag integrations.vendors.gcm.enableTCFAdvertiserConsentMode
. See the for more information.
Add support for new SyncReady
event. See the for more information.
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 .
Create new addVendorStatusListener
and removeVendorStatusListener
methods to observe changes in the status of individual Vendors (For more information, see the ).
or should be used instead.
or should be used instead.
or should be used instead.
or should be used instead.
Update showPreferences
parameter for Sensitive Personal Information screen (see ) and prevent displaying this screen if there is no such purpose to display.
Create new public function setCurrentUserStatus()
(See for more information).
Create new public function getCurrentUserStatus()
(See for more information).
Create new public function isUserStatusPartial()
(See for more information).
Create new public function shouldUserStatusBeCollected()
(See for more information).
Update IAB policy links URLs to .
Add methods to get vendors count: , ,
Add support for new macros (numberOfPartners
, numberOfIABPartners
and numberOfNonIABPartners
) from the Preferences screens, see the full list .
Modify code related to synchronized
and try
/ catch
to avoid VerifyError
during initialization when using JaCoCo plugin (see error description )
Create new Internal events for Sensitive Personal Information
interactions (see ).
Allow font family to be applied to all UI elements on the screen (see for more details).
Cross-device: do not reset Didomi User ID by default, unless clearUser
is called (see for more details).
Add ability to enable sticky buttons on the notice (see ).
CCPA support is still in beta, please contact if you are interested to participate
Add ability to enable fullscreen mode (see for more details).
Add new events for language change (see and for more details).
setUser(null)
is no more available. The correct call is clearUser()
(see for more details).
Handle mutli-account for Cross-device feature (see for more details).
Allow to customize font family of title and description in notice and preferences screen (see for more details).
Add an optional title field in notice (see for more details)
Allow to customize font size, color and alignment of title and description in notice and preferences screen (see, for more details)
Handle custom background color (see for more detail).
Support new IAB rules regarding timestamp: the timestamp stored in the GDPR consent string has now only day-level granularity. See
Update IAB-TCF encoding library to fix invalid consent string for some configurations. Issue:
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 )
Add a getUserStatus
method, replacing the previous methods to get user consent status. See the 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 for more information.
Add getDeviceType method to check the device determined by the SDK (see )
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 for more information)
Add new languages support, see
We now use AndroidX instead of the support library. This means that your project must to use this version.
The Android Didomi SDK is now distributed through mavenCentral instead of deprecated JCenter. Make sure to update your build scripts:
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 :
Updated getTranslatedText
method to get translated text from multiple sources
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. .
Customize buttons and links color .
Customize logo on the Purposes view .
Bypass notice and open Preferences pop-in directly .
Customize purposes order and icons by providing purpose categories .
Prevent the Preferences pop-in from being closed when consent is missing .