Release notes


V28.5.0 - Released 08/18/2021

List of bugs solved and features deployed:

  • AP-1457 New CMP methods are added: checkForUpdate, presentNotice, setExternalIds, saveExternalIds, getExternalIds, extraFloatingAllowed, isFloatingNeedUpdate, saveFloatingPurposes

  • AP-1484 removeEventListener callback should be called with boolean instead of null

  • AP-1520 ship2 request sends page url

  • AP-1574 Static class name for modal banner

V28.4.0 - Released 06/10/2021

List of bugs solved and features deployed:

  • AP-1418 gdprApplies init param

V28.3.0 - Released 05/27/2021

List of bugs solved and features deployed:

  • AP-1395 Grant legitimate interest on fakedeny

  • AP-1396 Language param

  • AP-1400 Upgrade @iabtcf packages

  • AP-1405 AMP banner/modal display bugfix

  • AP-1408 Gray SFBX logo

V28.2.0 - Released 05/04/2021

List of bugs and features deployed :

  • AP-1359 Created date and lastUpdated date in the consent string

  • AP-1384 Custom CSS for AMP

  • AP-1385 Modal mode for an AMP

  • AP-1389 SFBX Copyright

  • AP-1392 Colors & images customisation

V28.1.0 - Released 04/21/2021

List of bugs solved and features deployed:

  • AP-1359 Created date and lastUpdated date in the consent string

  • AP-1374 New privacy widget logo

  • AP-1375 Encode language in the consent string

  • AP-1378 Remove circular dependencies

  • AP-1381 Enable Legitimate Interest on REFUSE_ALL / SKIP

  • AP-1382 Skip link added for banner mode

  • AP-1383 gdprApplies

List of internal improvements :

  • IN-90 New versionning system

V28 - Released 03/23/2021

List of bugs solved and features deployed:

  • AP-1352 Disable legitimate interest on DENY ALL



[1.2.14] 2021-06-30

  • New Javascript reducer v28.4.

  • Deprecated methods: consentableAllowed(:extraId) renamed to extraConsentableAllowed(:extraId).

vendorAllowed(:extraId) renamed to extraVendorAllowed(:extraId).

consentableAllowed(:iabId) renamed to consentableAllowed(:iabId:type)

Note: We need the type now because iabId for consentable is not unique.

  • New methods: getAllConsentables(), getAllExtraVendors() (Swift only)

  • New methods: allConsentablesAllowed(), allStacksAllowed(), allVendorsAllowed(), userAcceptAll()

All of these methods return an boolean.

[1.2.13] 2021-05-18

  • New forceATT parameter on ACUIKit constructor. This parameter bypass the behavior logic to displaying success_screen when users refuse_all or purpose:1 = false.

The new behavior is due to some rejection from App Store reviewers.

  • Notes: forceATT: false behavior is the same so far. forceATT: true , success_screen will be always presented.

  • Example:

// Custom
let uiKit = ACUIKit(withAppKey: "appKey", forceApplyGDPR: true, forceATT: true)
// Default
let uiKit = ACUIKit(withAppKey: "appKey", forceApplyGDPR: true)
forceATT is false by default

[1.2.12] 2021-05-04

  • Fix : checkForUpdatewhen ATT is supported, not given, but user RefuseAll. Now returns false instead true

[1.2.11] 2021–04–20

  • New isGDPRCountry() ->Bool public method in AppConsentUIKit.

  • New behavior behind the scene of func presentNotice(force: Bool, viewController:UIViewController) with forceApplyGDPR. Now when forceApplyGDPR is false and use_ios_att from backoffice is true and ATT Authorization is supported and not given on the device, we will display the successScreenpage to collect ATT Authorization only.

public func presentNotice(force: Bool, viewController: UIViewController) {
with: forceApplyGDPR, force: force) { (mode: ACPresentation, configuration: ACConfiguration?) in
switch mode {
case .displayCMPWithIntroduction:
case .displayCMPWithoutIntroduction:
case .displaySuccessScreen:
self.presentSuccessScreen(viewController, configuration)
case .displayNothing:
_print("AppConsent: Display Nothing. ForceApplyGDPR is false and maybe use_ios_att is false, ATT was already presented or not supported.")

[1.2.10] 2021–03–31

New getAllConsentables(by: status) ->[ACConsentable]? and getAllExtraVendors(by: status) ->[ACVendor]? public methods.

Note: These methods are only for Swift

[1.2.9] 2021–03–18

New appTrackingAuthorizationStatus() ->ACATTAuthorizationStatus method.Update for checkForUpdate method. Now, check also if use_ios_att:true from configurationand if ATT is already presented.

[1.2.8] 2021–03–05

Fix hidden navigation bar.

[1.2.7] 2021–03–02

  • Layout adjustement on success page. Image size is now 260x260. Title is now on navigation bar. There are more space for header description and footer description also.

[1.2.6] 2021–02–25

  • Fix layout on success page.

[1.2.5] 2021–02–24

  • Supports for iab 2.1. Cookies are displayed in vendors details.Note: You need to re-save notice on back office for displaying cookies.

[1.2.4] 2021–02–09

  • Add new use_ios_att property. Now you can override all logic for displaying ATT from AppConsent. If use_ios_att is true the behavior is the same that specified in documentation.

[1.2.3] 2021–02–04

  • Fix missing IABTCF_gdprApplies set in UserDefault.

  • New currentIdentifier() ->ACCurrentIdentifier method to get current idenfitier and histype

idfv xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

idfa xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

custom xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  • SwiftProtobuf bump to 1.15.0

[1.2.2] 2021–01–28

  • Bug fixes

  • Supports for Swift Package ManagerNow you can install AppConsentKit, AppConsentUIKit via SPM.View our documentation to find out more.

[1.2.1] 2021–01–21

  • No error popup on banner mode. Modal shoud be dismissed automatically.

  • Fix success screen behavior with ATT from banner mode.

[1.2.0] 2021–01–20

  • Support for App Tracking Transparency (iOS 14+)

  • WARNING You must define NSUserTrackingUsageDescription in your Info.plist otherwise your app will crash.

  • New javascript reducer v22

  • New openAppSettings method.

  • New appTrackingIsAvailable() ->Bool method.

  • New appTrackingAuthorizationGiven() ->ACATTAuthorizationGiven method.

  • NewappTrackingRequestAuthorization(_ completion: ((ACATTAuthorizationStatus)->Void)?) method.

Note: the process to display ATT Popup is automatically integrated in AppConsentUIKit when user save his consent.

  • New saveATTFloatingPurpose(with value: Bool, _ completion:ACResultVoidHandler?) method.

  • New floatingPurposeAllowed(extraId: String) ->Bool method.

Note: You need to call checkForUpdate method before call this above method to stay up to date.

  • New displayATTIfNeeded(_ completion: ((ACATTAuthorizationStatus)->Void)?)method.

For migrating existing users, you must call this method to display ATT Popup without redisplayingCMP.

Note: ATT Popup will only display if user device supports ATT, user given his consent, purpose 1 is true and ATT not yet displaying.

WARNING After that, you need to call new saveATTFloatingPurpose(with value: Bool, _completion: ACResultVoidHandler?) method to send user choice on our server.


appConsentUIKit.displayATTIfNeeded { status in
switch status {
case .notSupported:
_print("Not supported")
case .failure:
.saveATTFloatingPurpose(with: false, nil)
case .success:
.saveATTFloatingPurpose(with: true, nil)

[1.1.18] 2020-12-15

  • Support for xCode 12.3.

    Now our iOS SDK is build and distributed as XCFramework.

  • You must change the class initializer (due to an issue when building XCFramework)

    AppConsentKit has been renamed to ACKit.

    AppConsentUIKit has been renamed to ACUIKit.

    You can (must) remove the run script phase in build phase that removing the simulator architecture for archiving and publishing on App Store.

  • Fix checkForUpdate when user reset his idfa

  • New http call (save-external route) for saveExternalIds in services. Nothing to change.

[1.1.17] 2020-12-09

  • New javascript reducer v20

  • Upgrade SwiftProtobuf to 1.14.0 version

  • Support HTML for Partner Link and Other Partners

    We keep the Markdown support also.

  • Improvements

[1.1.16] 2020-11-26

  • New javascript reducer v19

  • Now you can save externalIds without having to present notice again. The new method is called saveExternalIds (success:, failure:). You can call it with a chaining method after call setExternalIds like this:

appConsentUIKit .setExternalIds(externalIds: ["a": "b"]) .saveExternalIds { state, configuration in print(state ?? "state nil") print(configuration ?? "configuration nil") } failure: { error in print(error.localizedDescription) }

  • Supports for Google Additional Consent.The IABTCF_AddtlConsent key is saved on UserDefaultSee for more informations

  • WARNING Update for set Consentable method .The Key for Dictionary must be an iabId instead of an id

  • New method setExtraConsentable.The Key for Dictionary must be an extraId.

  • New method consentableAllowed(extraId).

  • New method vendorAllowed(extraId).

[1.1.15] 2020-11-19

  • Send externalIds to Save request

  • Update setExternalIds method. (Callback is removed)Note: setExternalIds must be call before call presentNotice if you want to send external IDs to server

[1.1.14] 2020-11-12

  • Information button in Vendor details

  • Information button in Vendor details

  • iPad presentation modal improvement (PageSheet)

[1.1.13] 2020-11-10

  • Fix translation

  • Fix extra-vendors. Now others partners are displayed

  • Enable “refine by partner” at launch

[1.1.12] 2020-11-03

  • Add back button to close CMP if consent given and CMP presented from settings

[1.1.11] 2020-10-29

  • Display error in CMP view instead on alertView and hide footer

  • New method setExtternalId

  • Remove externalId from SDK initialization

[1.1.10] 2020-10-27

  • Objective-C compatibility for setExternalData

[1.1.9] 2020-10-22

  • Fix purpose count bug

[1.1.8] 2020-10-21

  • New button layout component in introduction with “I understand” supports

  • Fix translation

[1.1.7] 2020-10-20

  • setExternalIds

  • UI Fixes

  • added missing translations

[1.1.6] 2020-10-15

  • setExternalData

[1.1.5] 2020-10-13

  • Improvements

  • Fix colors

[1.1.4] 2020-10-12

  • Objective-C compatibility

[1.1.3] 2020-10-08

  • Hot fix for button color

[1.1.2] 2020-10-08

  • Improvements

[1.1.1] 2020-10-06


  • Hide show more on introduction when show more text is empty

  • Now you can go back when users click on partners in introduction


  • Improvements

  • Reducer v16 (javascript)

[1.1.0] 2020-09-30


  • Translation


  • New method consentableAllowed(:objectId) to check extra purpose is allowed for example

  • Consent Given callback is now called on introduction if user click to Accept All

[1.0.9] 2020-09-29


  • Translation


  • Supports for extra-purpose

[1.0.8] 2020-09-23


  • bitcode bug for archive validation

[1.0.7] 2020-09-17


  • Fix switch UI bug iOS 14 (IPAD)


  • remove navigation bar for intro page

  • remove ACState logs

[1.0.6] 2020-09-15

  • Fix onboardingImage (Aspect Fit, height: 80px, width: frame.view.width)

  • Remove copyright on first page

  • Fix markdown link on more description label (first page)

[1.0.5] 2020-09-14

  • Fix Colors

  • Fix redirect links in markdown

  • Fix remote image for Onboarding - onboardingImage

  • Add mixe stacks

  • Add footer copyright

  • Add remote image in home page - icon

  • Add colors to success page

  • Add separator color

[1.0.4] 2020-09-09


  • Remote Config for colors

  • Disable success screen config

  • Purposes behind a stack

  • Default text in markdown in the BO

  • 11.2 release

  • 11.6+ release


  • UI fixes

[1.0.2] 2020-09-07


  • bitcode compilation compatibility

  • 11.2 release

  • 11.6+ release


  • view is present modal, not on fullscreen

  • “Accept All ” button doesn't work

  • getExternalData() method is declared a void function which doesn’t return any value

  • “Voir les finalités obligatoires (2)” button doesn’t work

  • getConsentableConsents() callback doesn’t call any call back either success nor error, and after that method to check this consentable return false

  • [SFBX library] When the consent is opened: there are UI issues in logs. And some of the buttons, links don’t work

  • [SFBX library] Each time consentGiven method returns false

  • [iOS][SFBX] Library delegate “AppConsentDelegate” doesn’t call lifecycle methods


  • getExternalData



1.1.7 (05/08/2021)

  • implement AppConsent interface

  • add consentable , stack , vendors all allowed methods

  • autostart smartTraffik for xchange

1.1.6 (22/07/2021)

  • update core to 1.2.12

  • add action at layer 1 Continue without accepting

1.1.5 (14/06/2021)

  • update core to v1.2.11

  • fix consentableAllowed method to take care of not unique iab id depending on type

  • add getAllConsentables method with optionnal filter by status

  • add getAdvertisingId() method and isLimitedTrackingEnabled()

1.1.3 (09/02/2021)

  • add vendor cookie expiration for TCF v2.1

1.1.2 (03/02/2021)

  • xchange update Smart Traffik SDK

  • xchange remove unused data (age, csp, dateOfBirth, household, revenues, firstName, lastName)

  • xchange add deviceSimCode and deviceCarrierCode

  • xchange remove Netperform and Pickwell

1.1.1 (19/01/2021)

  • add migration for switched sdk id and sdk version

1.1.0 (09/12/2020)

  • fix bug when crete AppConsentUI with applicationContext and call presentGeolocationActivity

  • xchange add Smart-Traffik SDK

  • add RequestLocationListener: now app have to manage presentation of geolocation authorization

  • buttons AcceptAll and RefuseAll on Introduction are on same line

  • xchange migrate Telescope to Pickwell

  • fix switched sdk id and sdk version


  • refactor AppConsentUI

  • update modifer of classes to internal which are unused by user

  • add setExtraConsentableConsents(), extraVendorAllowed() and extraConsentableAllowed()


  • fix issue when downgrading GVL version to notice


  • fix bug on geolocation view (button Save not display when one purpose geoloc)


  • translate more texts from BO


  • fix crash on DI provideAppConsentTheme(), exit process if mAppConsentTheme not initialized

  • on tablet, notice is displayed in fullscreen by default

  • fix bug AP-1206

  • get default language text from BO


  • button "Refine by partner" under button "Save" (AP-1187)

  • add externalIds: Map method in AppConsentUI

  • catch crash and if app restart kill process


  • fix bug NoticeListener call after completion, now it's called only after success of saveConsents()

  • remove NoticeListener to setConsentableConsents()


  • first Xchange version


  • update reducer for Android 4.4 compatibility

  • fix bugs


  • fix bug on notice view, bad number of consentable

  • fix bug disable success screen

  • improvements


  • refactor with new reducer

  • translate progress loading

  • geolocation view in fullscreen


  • fix switch status on scroll

  • fix switch status in Stack detail view


  • fix bug on Theme

  • fix switch alignment


  • fix bugs


  • fix bug on CTA


  • rename resource string folders

  • map disable success screen to remote theme

  • map CTA order to remote theme

  • implement AppConsentCore 1.0.3


  • detail view of a Stack

  • add legal description to consentable detail

  • external links open in browser

1.0.1 (07/2020)

  • load colors and images from remote config

  • create custom Theme


  • first release


  • rename function setConsentablesAuthorization to setConsentableConsents


  • add method to remove notice and geolocation listeners

  • implementation SDK Core 1.0.0-beta03


  • implementation SDK Core 1.0.0-beta02


  • fix translations errors

  • fix design errors


  • rename MergeAdapter to ConcatAdapter

  • add configurable texts from BO

  • add onReady() when Core is init

  • add setExternalData() & getExternalData()

  • bug fix


  • fix errors to match AppConsent-Core `1.0.0-alpha02

AppConsent TV

1.1.9 (26/07/2021)

  • implement AppConsent interface

  • add save floating purposes

  • add consentable , stack , vendors all allowed methods

1.1.8 (28/04/2021)

  • fix focus issue on NoticeTvFragment

1.1.7 (20/04/2021)

  • fix focus issue on notice save click

  • implement appconsent-core 1.2.9

1.1.6 (08/04/2021)

  • fix focus issue on notice save click

1.1.5 (05/03/2021)

  • fix focus on first mandatory consentable button

1.1.4 (05/03/2021)

  • fix google_atp_id serial name for reducer

  • core v1.2.6

1.1.3 (04/03/2021)

  • fix consent string encode with restrictions

  • core v1.2.5

1.1.2 (02/03/2021)

  • core 1.2.4

  • add google atp id feature

1.1.1 (01/03/2021)

  • fix ui constraints for consent descriptions item

1.1.0 (26/02/2021)

  • migrate kotlin-android-extensions to view binding

  • add cookie expiration in vendor detail view for TCF 2.1

  • delete description already displayed above from ConsentableDetail header

  • add legal dialog in ConsentableDetail

  • fix leg vendor radio display

  • encode ConsentString with flexible purposes

1.1.0-beta03 (22/12/2020)

  • fix bugs and improve SDK

1.1.0-beta01 (11/12/2020)

  • add saveExternalIds()

  • fix bugs and improve SDK

1.0.0-RC07 (25/11/2020)

  • update modifier of classes to internal which are unused by user

  • add setExtraConsentableConsents(), extraVendorAllowed() and extraConsentableAllowed()

1.0.0-RC06 (20/11/2020)

  • add a new AppConsentLogListener to log details about client navigation

  • do not display partner view if no internet

1.0.0-RC05 (19/11/2020)

  • fix issue when downgrading GVL version to notice

1.0.0-RC04 (17/11/2020)

  • IABTCF_gdprApplies depends on forceApplyGDPR and phone's locale

1.0.0-RC03 (13/11/2020)

  • fix focus on mandatory fragment

1.0.0-RC02 (29/10/2020)

  • catch crash and if app restart kill process

1.0.0-RC (02/10/2020)

  • update libraries

  • fix save consent with empty cache

1.0.0-beta05 (22/09/2020)

  • add back buttons on many views

  • add intermediate view on back pressed on notice EDIT mode

  • hide second view on notice if empty

  • fix focus issue on accept all and refuse all

  • fix logo display on vendor list

  • improve tab layout navigation

1.0.0-beta04 (07/09/2020)

  • transform radio button Accept/Refuse All to button

  • fix bug on object action

  • improve remote theme customization

1.0.0-beta03 (08/2020)

  • fix radio focus bug with first element

  • add background while radio is focus

  • add local traductions for 8 languages

1.0.0-beta02 (07/2020)

  • fix bug when implement SDK UI and TV in same project

1.0.0-beta01 (07/2020)

  • first beta