Info
Content

[iOS] 3. API Documentation

acceptAll

Parameters
Name Type Description
onFinish function Callback for handling consent received event. it will be called when consent is received and processed.
Return

No return value.

Example
func onFinish() {
    print("Notification: New consent was received")
}

// Accept all consent with a callback
cmpConsentTool.acceptAll(onFinish)


check

Parameters
Name Type Description
onCmpLayerOpen function Callback when the consent layer needs to be open.
isCached Boolean When TRUE, the request will be cached and the response will be saved
Return

No return value.

Example
@objc func checkCmpLayer() {
    print("Checking need for consent.")

    cmpManager?.check(
        {
            // Callback for when the consent layer needs to be opened
            print("Consent layer will open")
            self.cmpConsentTool?.openView()
        }, 
        isCached: true
    )
}


checkAndOpenConsentLayer


Checks if user's consent is required and, if so, opens the consent layer UI.

Parameters
None.
Return

No return value.

Example
@objc func checkAndOpenConsentLayerAction() {
    cmpManager?.checkAndOpenConsentLayer()
}


consentRequestedToday

Checks if the consent layer was requested today.

Parameters
None.
Return

TRUE if the user's consent was already requested today.

FALSE otherwise.

Example
@objc func consentRequestedTodayAction() {
    if let calledToday = cmpManager?.consentRequestedToday() {
        print("Consent requested today: \(calledToday)")
    } else {
        print("Failed to retrieve consent request status for today.")
    }
}


disablePurposeList

Disables a list of purposes and updates the given consent.

Parameters
Name Type Description
purposes Array List of purpose ids to disable.
onFinish function (Optional) Callback for handling consent received event. it will be called when consent is received and processed.
Return

No return value.

Example
func onFinish() {
    print("Notification: New consent received")
}

let purposes = ["1", "2"]

// Option with callback
cmpManager?.disablePurposeList(purposes, onFinish: onFinish)

// Option without callback
cmpManager?.disablePurposeList(purposes)


disableVendorList

Disables a list of vendors and updates the given consent.

Parameters
Name Type Description
vendors Array List of vendor ids to disable.
onFinish function (Optional) Callback for handling consent received event. It will be called when consent is received and processed.
Return

No return value.

Example
func onFinish() {
    print("Notification: New consent received")
}

let vendors = ["1", "2"]

// Option with callback
cmpManager?.disableVendorList(vendors, onFinish: onFinish)

// Option without callback
cmpManager?.disableVendorList(vendors)


enablePurposeList

Enables a list of purposes and updates the given consent.

Parameters
Name Type Description
purposes Array List of purpose ids to enable.
onFinish function (Optional) Callback for handling consent received event. It will be called when consent is received and processed.
Return

No return value

Example
func onFinish() {
    print("Notification: New consent received")
}

let purposes = ["1", "2"]

// Option with callback
cmpManager?.enablePurposeList(purposes, onFinish: onFinish)

// Option without callback
cmpManager?.enablePurposeList(purposes)


enableVendorList

Enables a list of vendors and updates the given consent.

Parameters
Name Type Description
vendors Array List of vendor ids to enable.
onFinish function (Optional) Callback for handling consent received event. iI will be called when consent is received and processed.
Return

No return value.

Example
func onFinish() {
    print("Notification: New consent received")
}

let vendors = ["1", "2"]

// Option with callback
cmpManager?.enableVendorList(vendors, onFinish: onFinish)

// Option without callback
cmpManager?.enableVendorList(vendors)


exportCmpString

Exports the current CMP string representing the user's consent preferences. This method is accessed in a static way. 

Parameters
None.
Return

The CMP base64 encoded string.

Example
@objc func exportConsentStringAction() {
    let exportString = cmpManager.exportCmpString()
    print(exportString ?? "No string to export.");
}


getAllPurposes

Returns all purposes' IDs.

Parameters
None.
Return

A comma-separated string containing all purpose IDs.

Example
@objc func getAllPurposesAction() {
    if let allPurposes = cmpManager?.getAllPurposes() {
        print("All purposes: \(allPurposes)")
        // Additional actions for getAllPurposes function can be added here
    } else {
        print("Failed to retrieve all purposes.")
    }
}


getAllPurposeList

Returns a list of all purpose IDs for a given CMP.

Parameters
None.
Return

A List<String> containing all purpose IDs.

Example
@objc func getAllPurposeListAction() {
    // Action for getAllPurposeList function
    if let allPurposes = cmpManager?.getAllPurposesList() {
        print("All purposes list: \(allPurposes.joined(separator: ", "))")
    } else {
        print("Failed to retrieve all purposes list.")
    }
}


getAllVendors

Returns all vendors' IDs for a given CMP.

Parameters
None.
Return

A comma-separated string containing all vendors IDs.

Example
@objc func getAllVendorsAction() {
    if let allPurposes = cmpManager?.getAllVendors() {
        print("Printing all Vendors: \(allPurposes)")
    } else {
        print("Failed to retrieve all vendors.")
    }
}


getAllVendorsList

Returns a list of all vendors' IDs for a given CMP.

Parameters
None.
Return

A List<String> containing all vendor IDs.

Example
@objc func getAllVendorsListAction() {
    if let allVendors = cmpManager?.getAllVendorsList() {
        print("All vendors list: \(allVendors.joined(separator: ", "))")
    } else {
        print("Failed to retrieve all vendors list.")
    }
}


getConsentString

Returns a string with the last given consent.

Parameters
None.
Return

A string with the last consent acknowledged by the user.

Example
@objc func getAllVendorsListAction() {
    if let allVendors = cmpManager?.getAllVendorsList() {
        print("All vendors list: \(allVendors.joined(separator: ", "))")
    } else {
        print("Failed to retrieve all vendors list.")
    }
}

getDisabledPurposes

Returns all disabled purposes' IDs for a given CMP.

Parameters
None.
Return

A comma-separated string containing all disabled purposes' IDs.

Example
@objc func getDisabledPurposesAction() {
    if let disabledPurposes = cmpManager?.getDisabledPurposes() {
        print("Disabled purposes: \(disabledPurposes)")
    } else {
        print("Failed to retrieve disabled purposes.")
    }
}


getDisabledVendors

Returns all disabled vendors' IDs for a given CMP.

Parameters
None.
Return

A comma-separated string containing all disabled vendors' IDs.

Example
@objc func getDisabledVendorsAction() {
    if let disabledVendors = cmpManager?.getDisabledVendors() {
        print("Disabled vendors: \(disabledVendors)")
    } else {
        print("Failed to retrieve disabled vendors.")
    }
}


getEnabledPurposes

Returns all enabled vendors' IDs for a given CMP.

Parameters
None.
Return

A comma-separated string containing all enabled vendors' IDs.

Example
@objc func getEnabledVendorsAction() {
    if let enabledVendors = cmpManager?.getEnabledVendors() {
        print("Enabled vendors: \(enabledVendors)")
    } else {
        print("Failed to retrieve enabled vendors.")
    }
}


getEnabledPurposeList

Returns a list all enabled purposes' IDs for a given CMP.

Parameters
None.
Return

A List<String> containing all enabled purposes' IDs.

Example
@objc func getEnabledPurposesAction() {
    if let enabledPurposes = cmpManager?.getEnabledPurposes() {
        print("Enabled purposes: \(enabledPurposes.joined(separator: ", "))")
    } else {
        print("Failed to retrieve enabled purposes list.")
    }
}


getEnabledVendors

Returns all enabled vendors' IDs for a given CMP.

Parameters
None.
Return

A comma-separated string containing all enabled vendors' IDs.

Example
@objc func getEnabledVendorsAction() {
    if let enabledVendors = cmpManager?.getEnabledVendors() {
        print("Enabled vendors: \(enabledVendors)")
    } else {
        print("Failed to retrieve enabled vendors.")
    }
}


getEnabledVendorList

Returns a list with all enabled vendors' IDs for a given CMP.

Parameters
None.
Return

A List<String> containing all enabled vendors' IDs.

Example
@objc func getEnabledVendorsAction() {
    if let enabledVendors = cmpManager?.getEnabledVendors() {
        print("Enabled vendors: \(enabledVendors.joined(separator: ", "))")
    } else {
        print("Failed to retrieve enabled vendors.")
    }
}


getGoogleACString

Retrieves the Google additional consent ID (`addtlConsent`) string that was set by the consent manager.

For further information, check the Google Additional Consent technical specification.  

Parameters
None.
Return

A List<String> containing all enabled vendors' IDs.

Example
@objc func getGoogleConsentStringAction() {
    if let googleACString = cmpManager?.getGoogleACString() {
        print("Google Additional Consent String: \(googleACString)")
    } else {
        print("Failed to retrieve Google Additional Consent String.")
    }
}


getUSPrivacyString

Retrieves the US Privacy String. This U.S. privacy string is a cookie that stores information about disclosures made and choices selected by the website visitor regarding their consumer rights.

Parameters
None.
Return

A String with the US Privacy data set by consentmanager.

Example
@objc func getUSPrivacyStringAction() {
    if let theUSPrivacyString = cmpManager?.getUSPrivacyString() {
        print("US Privacy string contents: \(theUSPrivacyString)")
    } else {
        print("Failed to retrieve US Privacy string.")
    }
}


hasConsent

Checks if the user already provided his consent. The consent layer can have the option to just close the layer. In that case, the user did not provided a consent.

Parameters
None.
Return

A String with the US Privacy data set by consentmanager.

Example
@objc func getHasConsentAction() {
    if let hasConsent = cmpManager?.hasConsent() {
        let consentStatus = hasConsent ? "Yes" : "No"
        print("Consent provided by the user? \(consentStatus)")
    } else {
        print("Failed to retrieve user consent.")
    }
}


hasPurposeConsent

Checks if the purpose ID is enabled based on the user consent.

Parameters
Name Type Description
purposeId String purpose id
Return

TRUE if

  • the user has given consent to the specified purpose OR
  • for any reason related to poor or no internet connection on the device, the consent for the purpose could not be retrieved. Please refer to the withErrorListener to handle these conditions during app launch, especially for new users who have not yet given any consent

FALSE otherwise.

Example
@objc func getHasPurposeConsentAction() {
    if let hasPurposeConsent = cmpManager?.hasPurposeConsent("purposeID") {
        let consentStatus = hasPurposeConsent ? "Yes" : "No"
        print("Purpose has consent provided by the user? \(consentStatus)")
    } else {
        print("Failed to retrieve user purpose consent.")
    }
}


hasVendorConsent

Checks if the vendor ID is enabled based on the user consent.

Parameters
Name Type Description
vendorId String vendor id
Return
  • the user has given consent to the specified vendor OR
  • for any reason related to poor or no internet connection on the device, the consent for the vendor could not be retrieved. Please refer to the withErrorListener to handle these conditions during app launch, especially for new users who have not yet given any consent

FALSE otherwise.

Example
@objc func getHasVendorConsentAction() {
    if let hasVendorConsent = cmpManager?.hasVendorConsent("vendorID") {
        let consentStatus = hasVendorConsent ? "Yes" : "No"
        print("Vendor has consent provided by the user? \(consentStatus)")
    } else {
        print("Failed to retrieve user vendor consent.")
    }
}

importCmpString

Imports a CMP string representing the user's consent preferences. The string must be base64 encoded

Parameters
Name Type Description
consentString  String Base64 encoded string representing the consent
completionHandler function (optional) Callback completion handler to the method.
Return

None.

Example
let cmpString = "YourBase64EncodedConsentStringHere"

// Define the completion handler
let completionHandler: CmpImportCompletionHandler = { error in
    if let error = error {
        print("Failed to import CMP string: \(error.localizedDescription)")
    } else {
        print("CMP string imported successfully")
    }
}

cmpManager.importCmpString(cmpString, completion: completionHandler)


initialize

Initialize function will initialize the consent layer and checks automatically if the user needs a consent or not. This function will eventually open the consent layer and Will interact wit the Apple Tracking Transparency API to ask the user for Consent

Parameters
Name Type Description
cmpConfig CmpConfig The CmpConfig object is passed with the info regarding the appId, Domain, appName and language (optional)
Return

The CMPManagerobject.

Example
// Example of a default implementation of the SDK.

class ViewController: UIViewController {

  // Usual implementation of a View Controller
  
  var cmpManager: CMPConsentTool? = nil

  override func viewDidLoad() {

      super.viewDidLoad()

      // Configure your CMP
      let cmpConfig: CmpConfig = CmpConfig.shared.setup(
                                          withId: "<YOUR-CONSENTMANAGER-APP-ID>, example: a000aaaa0a", 
                                          domain: "<YOUR-CONSENTMANAGER-APP-DOMAIN>, example: delivery.consentmanager.net", 
                                          appName: "<YOUR-CONSENTMANAGER-APP-NAME>, example: testApp", 
                                          language: "<YOUR-CONSENTMANAGER-APP-LANGUAGE, example: DE");

      // You can also determine log levels or ask for Apple's App Tracking Transparency, for example
      cmpConfig.logLevel = CmpLogLevel.verbose;
      cmpConfig.isAutomaticATTRequest = true;

      // Then you pass the cmpConfig to set up and initialize the instance of our SDK		
      cmpManager = CMPConsentTool(cmpConfig: cmpConfig)
              .withErrorListener(onCMPError)
              .withCloseListener(onClose)
              .withOpenListener(onOpen)
              .withOnCMPNotOpenedListener(onCMPNotOpened)
              .withOnCmpButtonClickedCallback(onButtonClickedEvent)
              .initialize()  // This method will trigger the webview loading to collect consent, if necessary
  }
}


isConsentRequired

Parameters
None.
Return

TRUE if the user needs to give a consent

FALSE otherwise

Example
@objc func checkIfConsentIsRequired() {
    if let isConsentRequired = cmpConsentTool?.isConsentRequired() {
        let consentRequiredStatus = isConsentRequired ? "Yes" : "No"
        print("Is user consent required? \(consentRequiredStatus)")
    } else {
        print("Failed to determine if user consent is required.")
    }
}


openView

Forcefully opens the CMP consent layer webview.

Parameters
None.
Return

No return value

Example
@objc func checkCmpLayer() {
    print("Checking CMP API...")
    cmpManager?.check(
        { 
            // Callback for when the consent layer needs to be opened
            print("Consent layer will open")
            self.cmpConsentTool?.openView()
        }, 
        isCached: true, 
        onCmpLayerNotOpen: { 
            // Callback for when the consent layer does not need to be opened
            print("Consent layer will not open")
        }
    )
}


rejectAll

Parameters
Name Type Description
onFinish function Optional. Callback for handling consent received event. it will be called when consent is received and processed.
Return

No return value

Example
func onFinish() {
    print("Notification: New consent has been received with a Reject All response.")
}

// Reject all consent with a callback
cmpManager.rejectAll(onFinish)


reset

Resets all properties to default values.

Parameters
None.
Return

No return value

Example
CMPManager.reset()

withCloseListener


Adds a close listener to receive notifications when the consent layer is being closed.

Parameters
Name Type Description
closeListener function Callback which will be called when the consent layer is closed.
Return

CMPConsentTool

Example
func onClose() {
    print("APP: CLOSED")
    // Add custom business logic here
}

// Initialize cmpManager with configuration and close listener
cmpManager = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
    .withCloseListener(onClose)


withOpenListener

Adds an open listener to receive notifications when the consent layer is being opened.

Parameters
Name Type Description
openListener function Callback which will be called when the consent layer is opened
Return

CMPConsentTool

Example
func onOpen() {
    print("APP: OPENED")
    // Add custom business logic here
}

// Initialize cmpManager with configuration and open listener
cmpManager = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
    .withCloseListener(onOpen)

withErrorListener

Adds an error listener to receive notifications when an error occurred.

Parameters
Name Type Description
errorListener function Callback to add action if an error occurred.
Return

CMPConsentTool

Example
func onCMPError(type: CmpErrorType, message: String?) {
    if let errorMessage = message {
        print(errorMessage)
    } else {
        print("An error occurred.")
    }

    switch type {
    case .networkError:
        print("Network error")
    case .timeoutError:
        print("Timeout error")
    case .consentDataReadWriteError:
        print("Consent data read/write error")
    case .unknownError:
        print("Unknown error")
    @unknown default:
        print("Unexpected error")
    }
}

// Initialize cmpManager with configuration and error listener
cmpManager = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
    .withErrorListener(onCMPError)


withOnCMPNotOpenedListener

Adds a Cmp not opened callback to get notification when consent layer is not opening. Most common reason is that the user already provided a consent.

Parameters
Name Type Description
openListener function Callback which will be called when the consent layer is not opened. 
Return

CMPConsentTool

Example
func onCMPNotOpened() {
    print("CMP: NOT OPENED")
    // Add custom business logic here
}

// Initialize cmpConsentTool with configuration and CMP not opened listener
cmpManager = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
    .withOnCMPNotOpenedListener(onCMPNotOpened)


withOnCmpButtonClickedCallback

Sets a callback to receive notifications when the user clicks a button to close the consent layer.

Parameters
Name Type Description
openListener function Callback that will be invoked with the CmpButtonEvent indicating which button was pressed.
Return

CMPConsentTool

Example
func onButtonClickedEvent(event: CmpButtonEvent) {
    switch event {
    case .acceptAll:
        print("User accepted all.")
    case .rejectAll:
        print("User rejected all.")
    case .save:
        print("User saved custom settings.")
    case .close:
        print("User closed consent layer without giving consent.")
    @unknown default:
        print("Unknown button event.")
    }
}

// Initialize cmpManager with configuration and button click callback
cmpManager = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
    .withOnCmpButtonClickedCallback(onButtonClickedEvent)

withCmpViewControllerConfigurationBlock

Customise the consentlayer UIViewController.

Parameters
Name Type Description

configurationBlock

CmpViewControllerConfigurationBlock

Customise the consentlayer

UIViewController.

Return

CMPConsentTool

Example
cmpConsentTool = CMPConsentTool(cmpConfig: cmpConfig)
    .withCmpViewControllerConfigurationBlock { viewController in
        viewController?.modalPresentationStyle = .formSheet
    }


withCmpViewConfigurationBlock

Customise the UiView of the consentlayer.

Parameters
Name Type Description

configurationBlock

CmpUIViewConfigurationBlock

Customise the consentlayer

UiView

Return

CMPConsentTool

Example
let cmpLayout = CmpLayout.default()
cmpLayout?.cornerRadius = 10.0
cmpLayout?.customLayout = CGRect(x: 0, y: 0, width: 200, height: 300)

cmpConsentTool = CMPConsentTool(cmpConfig: cmpConfig)
    .withCmpViewConfigurationBlock { uiView in
        cmpLayout?.apply(to: uiView)
    }


withUpdateGoogleConsent

Retrieves Google Consent Mode status. 

Parameters
Name Type Description

consentMap

[String: String]?

Consent status
Return

CMPConsentTool

Example
cmpConsentTool = CMPConsentTool(cmpConfig: cmpConfig)
    .withUpdateGoogleConsent(onCmpUpdateGoogleConsent)

func onCmpUpdateGoogleConsent(consentMap: [String: String]?) {
    guard let consentMap = consentMap else { return }

    var firebaseConsentMap: [ConsentType: ConsentStatus] = [:]

    consentMap.forEach { key, value in
        if let consentType = convertToFirebaseConsentType(from: key),
           let consentStatus = convertToFirebaseConsentStatus(from: value) {
            firebaseConsentMap[consentType] = consentStatus
        }
    }

    Analytics.setConsent(firebaseConsentMap)
}

func convertToFirebaseConsentType(from key: String) -> ConsentType? {
    switch key {
    case "analytics_storage":
        return .analyticsStorage
    case "ad_storage":
        return .adStorage
    case "ad_user_data":
        return .adUserData
    case "ad_personalization":
        return .adPersonalization
    default:
        return nil
    }
}

func convertToFirebaseConsentStatus(from value: String) -> ConsentStatus? {
    switch value {
    case "granted":
        return .granted
    case "denied":
        return .denied
    default:
        return nil
    }
}

 

Back to top