Skip to content

Axeptio SDK 1.3.0

Latest

Choose a tag to compare

@axeptio-bot axeptio-bot released this 05 Oct 22:40

Breaking

The SDK has no integrations in production yet, so 1.3.0 cleans up the public API instead of waiting for a 2.0.0.

  • Query callbacks on the main thread: getRemainingDaysForConsent, getAxeptioToken, getBrandsVendorConsents, getTcfTcString and getTcfVendorConsents call back on the main thread instead of Dispatchers.IO, like the event listener and the iOS SDK. The SdkNotInitializedException failure is posted there too instead of being delivered on the calling thread. Remove main-thread switches around them and move blocking work out of the callbacks.
  • AxeptioLogLevel moved from io.axeptio.sdk.model to io.axeptio.sdk.configuration.
  • Internal configuration types are no longer exposed: io.axeptio:foundation-core-config is off the app's compile classpath. Use AxeptioEnvironment, AxeptioService, AxeptioPermission and AxeptioLogLevel from io.axeptio.sdk.configuration.
  • Removed:
    • AxeptioConfigBuilder.withPermissions(...) that took the foundation AxeptioPermission. Import io.axeptio.sdk.configuration.AxeptioPermission; the call stays the same.
    • The 1.0.1 binary-compatibility permission accessors. Recompile against 1.3.0.
    • The deprecated Koin module values (coreDataStoreModule, hostModule, featureConsentsModule, featurePermissionsModule, dataConfigurationModule, dataPermissionsModule, dataAnalyticsModule). Call the matching …Module() functions.
    • The unused io.axeptio.foundation.data.configuration.model.consents.ConsentRecord.
  • Java:
    • get/set/withSdkPermissions() on AxeptioConfigBuilder are now get/set/withPermissions().
    • The Kotlin-only forms are hidden from Java and have Java replacements (see Added): the lambda initialize, the Result callbacks and the suspend clearConsentData.

Added

  • Google Consent Mode v2:
    • AxeptioEventListener.onGoogleConsentModeUpdate(GoogleConsentV2) and AxeptioSDK.getGoogleConsentMode, both on the main thread, for FirebaseAnalytics.setConsent. GoogleConsentType / GoogleConsentStatus use Firebase's names.
    • TCF derives the signals from the purpose consents, like the web CMP.
    • Brands: "Accept all" grants all four signals. "Refuse all" and saved choices deny them.
    • With Consent Mode on, each launch reports the stored consent's signals, or all four denied without a valid consent, and clearConsentData() reports them denied.
    • TCF configurations with Consent Mode on also set IABTCF_EnableAdvertiserConsentMode.
  • Java support:
    • Every AxeptioSDK member is static.
    • initialize(Context, AxeptioConfigBuilder).
    • AxeptioCallback<T> overloads for every query and for clearConsentData.
    • observeConsentStatus(LifecycleOwner, ConsentStatusListener).
    • Constructor overloads on AxeptioPermission and AxeptioError.ConsentSyncFailed.

Changed

  • The SDK now exposes androidx.activity:activity, androidx.lifecycle:lifecycle-common and kotlinx-coroutines-core as API dependencies, because their types appear in its public API.
  • The public API of every published module is checked in CI.

Fixed

  • Google Consent Mode on TCF configurations: it was always read as off.
  • Back button:
    • A quick double back from a details screen no longer closes the consent flow without a choice.
    • A back while the consent and permission steps change no longer closes the SDK.
  • TCF first-layer card text: the first card no longer doubles its preposition ("Sur Sur cette application") in 20 languages. Hungarian, Polish and Latvian are unchanged and still need a reworded translation.