Informatie
Beschrijving

[iOS] 2. API-documentatie

De CMPManager klasse biedt methoden om gebruikerstoestemming voor gegevensverwerking en tracking te beheren. Deze documentatie behandelt de belangrijkste methoden die beschikbaar zijn voor mobiele app-integratie. 

Alle hieronder genoemde voorbeelden zijn afkomstig uit en zijn te vinden op onze Demo-app.

Controleer alstublieft de Verouderde methoden als u al v3 van onze CMP SDK integreert.

initialisatie

setUrlConfig()

Stelt de URL-configuratie in voor de Consent Manager.

parameters:

  • config: A UrlConfig object met de volgende eigenschappen:
    • id: String - De code-ID die is opgehaald uit uw CMP-dashboard
    • domain: String - Het domein voor toestemmingsbeheer, ook opgehaald uit het dashboard
    • language: String - De taalcode (bijv. "EN", "IT", "DE", enz.)
    • appName: String - De naam van uw app, alleen gebruikt voor rapportagedoeleinden. 

Returns: Leegte

Voorbeeld:

CMPManager.shared.setUrlConfig(UrlConfig(
    id: "0a000000000a1",					// The Code-ID retrieved from your CMP dashboard
    domain: "delivery.consentmanager.net",  // The domain retrieved from your CMP dashboard
    language: "EN",							// Language code, examples: IT, DE, EN, etc. 
    appName: "MyApp"						// The name of your app, used for reporting purposes on your CMP dashboard
))

setWebViewConfig()

Configureert het uiterlijk en gedrag van de toestemmingswebweergave. U kunt de positie instellen waar het WKWebiew-object dat de toestemmingslaag weergeeft, wordt weergegeven, zoals volledig scherm, op de onderste helft van het scherm of de bovenste helft. Ook kan de achtergrondstijl worden toegepast, evenals de hoekradius, of het het veilige gebied van het apparaat respecteert, en of het reageert op oriëntatiewijzigingen of niet, in het geval dat uw mobiel alleen in één enkele oriëntatie werkt, wat meestal gebeurt met games die alleen de horizontale configuratie van het scherm van het apparaat gebruiken.   

parameters:

  • config: A ConsentLayerUIConfig object met de volgende eigenschappen:
    • position: Positie - De positie van de WebView (bijv. .fullScreen)
    • backgroundStyle: BackgroundStyle - De achtergrondstijl (bijv. .dimmed)
    • cornerRadius: CGFloat - De hoekradius van de WebView
    • respectsSafeArea: Bool - Of het veilige gebied gerespecteerd moet worden
    • allowsOrientationChanges: Bool - Of oriëntatiewijzigingen toegestaan ​​zijn

Returns: Leegte

Voorbeeld:

CMPManager.shared.setWebViewConfig(ConsentLayerUIConfig(
    position: .fullScreen,
    backgroundStyle: .dimmed(.black, 0.5),
    cornerRadius: 10,
    respectsSafeArea: true,
    allowsOrientationChanges: true
))

setPresentingViewController()

Stelt de view controller in die de toestemmingslaag zal presenteren. Meestal geeft u self als de huidige View Controller. 

parameters:

  • viewController: UIViewController - De view controller om de toestemmingslaag te presenteren

Returns: Leegte

Voorbeeld:

CMPManager.shared.setPresentingViewController(self)

getUserStatus()

Retourneert een gedetailleerde momentopname van de huidige toestemmingsstatus en voorkeuren van de gebruiker. Deze methode biedt uitgebreide informatie over de toestemmingskeuzes van de gebruiker, inclusief hun algemene toestemmingsstatus, individuele leveranciersmachtigingen, doelspecifieke toestemmingen en relevante toestemmingsreeksen.

parameters:

  • Geen

Returns:

Retourtype: CMPUserStatusResponse object, uitgelegd in de onderstaande code. 

Voorbeeld:

let status = CMPManager.shared.getUserStatus()
var message = "Status: \(status.status)\n\n"

message += "Vendors:\n"
for (vendorId, state) in status.vendors {
    message += "- \(vendorId): \(state)\n"
}

message += "\nPurposes:\n"
for (purposeId, state) in status.purposes {
    message += "- \(purposeId): \(state)\n"
}

message += "\nTCF: \(status.tcf)\n"
message += "Additional Consent: \(status.addtlConsent)\n"
message += "Regulation: \(status.regulation)"

print(message)

controlerenEnOpenen()

Controleert bij de server of toestemming vereist is en opent indien nodig de toestemmingslaag. Dit zal een netwerkoproep doen naar onze servers via de WKWebView die is gemaakt in onze SDK, één paginaweergave verbruiken in het proces. Deze netwerkoproep stuurt een bericht naar onze backend via JavaScript, die detecteert of het apparaat een geldige toestemming heeft of niet, wat op zijn beurt bepaalt of de toestemmingslaag moet worden weergegeven of niet.  

parameters:

  • jumpToSettings: Een Booleaanse waarde om te bepalen of de weergegeven toestemmingslaag automatisch leidt naar de pagina met een meer gedetailleerde controle over de toestemmingen die door de gebruikers worden gegeven, zodat ze hun keuzes nauwkeuriger kunnen afstemmen (indien ingesteld op true) of het standaardscherm met de knoppen (indien ingesteld op false of onderdrukt).
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid.

Returns: Leegte

Voorbeeld:

CMPManager.shared.checkAndOpen { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Check completed successfully")
    }
}

forceOpen()

parameters:

  • jumpToSettings: Een Booleaanse waarde om te bepalen of de weergegeven toestemmingslaag automatisch leidt naar de pagina met een meer gedetailleerde controle over de toestemmingen die door de gebruikers worden gegeven, zodat ze hun keuzes nauwkeuriger kunnen afstemmen (indien ingesteld op true) of het standaardscherm met de knoppen (indien ingesteld op false of onderdrukt).
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid en die een succes of een fout retourneert.

Returns: Leegte

Voorbeeld:

CMPManager.shared.forceOpen { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Consent layer opened successfully")
    }
}

exportCMPInfo()

Exporteert de huidige toestemmingsinformatie die op het apparaat is opgeslagen als een tekenreeks. Deze methode haalt de toestemmingsreeks op uit het UserDefaults-gebied van het apparaat en retourneert deze. Meestal wordt deze informatie doorgegeven aan de importCMPInfo methode.

Returns: String - De geëxporteerde toestemmingsinformatie

Voorbeeld:

let cmpInfo = CMPManager.shared.exportCMPInfo()
print("Exported CMP info: \(cmpInfo)")

getGoogleConsentModeStatus()

Integreert naadloos met Consent Mode, een Google-technologie die conversie- en analysemodellering mogelijk maakt, waardoor de diensten van Google de gaten in de gegevens kunnen opvullen wanneer gebruikers geen toestemming geven. Deze functie vertaalt de toestemming van de gebruiker van uw CMP naar een formaat dat Firebase Analytics kan begrijpen. U kunt de retour van deze methode dan eenvoudig ophalen en doorgeven aan de Firebase .setConsent-methode.

  • Vervolgens wordt Google Analytics bijgewerkt met de huidige toestemmingsstatus van de gebruiker.

parameters:

  • Geen

Returns: [String: String] - Een sleutelwaardearray met de vier sleutels voor de Google Consent Mode: .analyticsStorage, .adStorage, .adUserData en .adPersonalization, en hun respectievelijke waarden in termen van .choiceDoesntExist, .granted or .denied.

Voorbeeld:

showToast(message: "Google Consent Mode Status: \n \(CMPManager.shared.getGoogleConsentModeStatus())")

statusvoordoel verkrijgen()

parameters:

  • id: String - De ID van het doel dat gecontroleerd moet worden

Returns: UniqueConsentStatus - Een enum met de waarden .choiceDoesntExist indien geen toestemming is gegeven, .granted or .denied.

Voorbeeld:

let purposeStatus = CMPManager.shared.getStatusForPurpose(id: "c53")
var message = "Purpose c53 status: "
switch purposeStatus {
   	case .choiceDoesntExist: message += "No Choice"
    case .granted: message += "Granted"
    case .denied: message += "Denied"
    @unknown default: message += "No Choice"
}

getStatusForVendor()

parameters:

  • id: String - De ID van het doel dat gecontroleerd moet worden

Returns: UniqueConsentStatus - Een enum met de waarden .choiceDoesntExist indien geen toestemming is gegeven, .granted or .denied.

Voorbeeld:

let purposeStatus = CMPManager.shared.getStatusForVendor(id: "s2789")
var message = "Vendor s2789's status: "
switch purposeStatus {
   	case .choiceDoesntExist: message += "No Choice"
    case .granted: message += "Granted"
    case .denied: message += "Denied"
    @unknown default: message += "No Choice"
}

accepteer alles()

parameters:

  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.acceptAll { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("All consents accepted successfully")
    }
}

accepterenDoeleinden()

parameters:

  • purposes: [String] - Een reeks doel-ID's om te accepteren
  • updatePurpose: Bool - Of gerelateerde doeleinden moeten worden bijgewerkt
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.acceptPurposes(["c52", "c53"], updatePurpose: true) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Purposes accepted successfully")
    }
}

accepterenVerkopers()

parameters:

  • vendors: [String] - Een reeks leveranciers-ID's om te accepteren
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.acceptVendors(["s2790", "s2791"]) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Vendors accepted successfully")
    }
}

importCMPInfo()

parameters:

  • cmpString: String - De CMP-string die moet worden geïmporteerd
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

let cmpString = "Q1FERkg3QVFERkg3QUFmR01CSVRCQkVnQUFBQUFBQUFBQWlnQUFBQUFBQUEjXzUxXzUyXzUzXzU0XzU1XzU2XyNfczI3ODlfczI3OTBfczI3OTFfczI2OTdfczk3MV9VXyMxLS0tIw"
CMPManager.shared.importCMPInfo(cmpString) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("CMP info imported successfully")
    }
}

Alles afwijzen()

parameters:

  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.rejectAll { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("All consents rejected successfully")
    }
}

afwijzenDoelen()

parameters:

  • purposes: [String] - Een reeks doel-ID's om te weigeren
  • updateVendor: Bool - Of gerelateerde leveranciers moeten worden bijgewerkt
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.rejectPurposes(["c52", "c53"], updateVendor: true) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Purposes rejected successfully")
    }
}

afwijzenVerkopers()

parameters:

  • vendors: [String] - Een reeks leveranciers-ID's om af te wijzen
  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.rejectVendors(["s2790", "s2791"]) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Vendors rejected successfully")
    }
}

 

resetConsentManagementData()

parameters:

  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.resetConsentManagementData { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Consent management data reset successfully")
    }
}

 

CMPManagerDelegate-evenementen

getOnClickLinkCallback

De SDK biedt een flexibel linkverwerkingsmechanisme waarmee applicaties kunnen aanpassen hoe URL's binnen de toestemmingslaag worden verwerkt. Standaard worden alle links geopend binnen de WebView, maar applicaties kunnen specifieke URL's onderscheppen om ze extern te verwerken wanneer dat nodig is.

// Example 1: Handle specific domains in external browser
cmpManager.setLinkClickHandler { url in
    // Handle links to specific domains externally
    if url.host?.contains("google.com") == true || 
       url.host?.contains("facebook.com") == true {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        return true // URL handled externally
    }
    
    // Let other URLs load in the WebView
    return false
}

// Example 2: Handle URLs based on scheme
cmpManager.setLinkClickHandler { url in
    // Open mail links in mail app
    if url.scheme == "mailto" {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        return true
    }
    
    // Open tel links in phone app
    if url.scheme == "tel" {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        return true
    }
    
    // Let all other URLs load in the WebView
    return false
}

didReceiveConsent(toestemming: String, jsonObject: [String: Any])

Dit wordt geactiveerd wanneer de toestemmingslaag is gesloten nadat de gebruiker zijn/haar toestemmingen heeft bijgewerkt OF wanneer methoden worden aangeroepen die wijzigingen in de toestemmingen veroorzaken, zoals acceptAll, rejectAll, acceptVendors, rejectVendors, enz. Dit betekent dat de gebruiker een deel van alle toestemmingen heeft geaccepteerd of afgewezen en dat deze correct zijn opgeslagen op het apparaat.

heeftShowConsentLayer

Dit wordt geactiveerd wanneer de toestemmingslaag daadwerkelijk is weergegeven. Het betekent dat er geen toestemming geldig was in het apparaat, dus er moet een nieuwe worden verzameld.

deedCloseConsentLayer


Dit wordt geactiveerd wanneer de SDK de noodzaak van een toestemming heeft gecontroleerd, maar deze niet nodig was en de laag niet werd weergegeven. Dit betekent dat er al een geldige in het apparaat is, dus een nieuwe is niet nodig en de toestemmingslaag wordt niet weergegeven.

heeft een fout ontvangen

Dit wordt geactiveerd wanneer de SDK een fout tegenkomt en de code retourneert.

Verouderde methoden

Alle onderstaande methoden zijn verouderd en zal volledig worden verwijderd van de SDK van Juli/2025 op. 

controleerAlsToestemmingVereistIs()

parameters:

  • completion: (Bool) -> Void - Een sluiting die wordt aangeroepen met het resultaat, hetzij true or false.

Returns: Stem

Voorbeeld:

CMPManager.shared.checkIfConsentIsRequired { required in
    print("Consent is required: \(required)")
}

spring naar instellingen()

parameters:

  • completion: Een afsluiting die wordt aangeroepen wanneer de bewerking is voltooid

Returns: Leegte

Voorbeeld:

CMPManager.shared.jumpToSettings { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Jumped to settings successfully")
    }
}

heeftDoelToestemming()

Opmerking: Controleer altijd eerst op hasUserChoice()! In gevallen waarin er geen keuze is, kan de functie onverwachte retourwaarden retourneren.

parameters:

  • id: String - De ID van het doel dat gecontroleerd moet worden

Returns: Bool - True als toestemming is gegeven, false anders-

Voorbeeld:

let hasPurposeConsent = CMPManager.shared.hasPurposeConsent(id: "c53")
print("Has consent for purpose c53: \(hasPurposeConsent)")

heeftGebruikersKeuze()

Controleert of de gebruiker een keuze heeft gemaakt met betrekking tot toestemmingen en of deze toestemming is opgeslagen op het apparaat. Dit betekent dat de gebruiker alle toestemmingen heeft geaccepteerd, ze allemaal heeft afgewezen of een gemengde keuze heeft gemaakt van afgewezen en geaccepteerde toestemmingen, afhankelijk van het CMP-ontwerp, wat de gebruikers in staat kan stellen om sommige toestemmingen toe te staan ​​en andere af te wijzen. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: Boos - true als de gebruiker een keuze heeft gemaakt, false anders-

Voorbeeld:

let hasChoice = CMPManager.shared.hasUserChoice()
print("User has made a choice: \(hasChoice)")

heeftVendorConsent()

parameters:

  • id: String - De ID van de leverancier die moet worden gecontroleerd

Returns: Bool - True als toestemming is gegeven, false anders-

Voorbeeld:

let hasVendorConsent = CMPManager.shared.hasVendorConsent(id: "s2789")
print("Has consent for vendor s2789: \(hasVendorConsent)")

getAllPurposesIDs()

Haalt alle op het apparaat opgeslagen doel-ID's op, volgens de CMP-configuraties. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een array met alle-doel-ID's

Voorbeeld:

let allPurposes = CMPManager.shared.getAllPurposesIDs()
print("All purposes: \(allPurposes)")

getAllVendorsIDs()

Haalt alle leveranciers-ID's op die op het apparaat zijn opgeslagen, volgens de CMP-configuraties. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een array van alle leveranciers-ID's

Voorbeeld:

let allVendors = CMPManager.shared.getAllVendorsIDs()
print("All vendors: \(allVendors)")

getDisabledPurposesIDs()

Haalt de ID's op van alle uitgeschakelde doeleinden die op het apparaat zijn opgeslagen, volgens de CMP-configuraties en de keuzes van de gebruiker. Als de gebruiker alle toestemmingen accepteert, is dit leeg.  Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een reeks ID's voor uitgeschakelde doeleinden

Voorbeeld:

let disabledPurposes = CMPManager.shared.getDisabledPurposesIDs()
print("Disabled purposes: \(disabledPurposes)")

getDisabledVendorsIDs()

Haalt de ID's op van alle uitgeschakelde leveranciers die op het apparaat zijn opgeslagen, volgens de CMP-configuraties. Als de gebruiker alle toestemmingen accepteert, is dit leeg. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een reeks uitgeschakelde leveranciers-ID's

Voorbeeld:

let disabledVendors = CMPManager.shared.getDisabledVendorsIDs()
print("Disabled vendors: \(disabledVendors)")

getEnabledPurposesIDs()

Haalt de ID's op van alle ingeschakelde doeleinden die op het apparaat zijn opgeslagen, volgens de CMP-configuraties. Als de gebruiker alle toestemmingen afwijst, is dit leeg. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een reeks ingeschakelde doel-ID's

Voorbeeld:

let enabledPurposes = CMPManager.shared.getEnabledPurposesIDs()
print("Enabled purposes: \(enabledPurposes)")

getEnabledVendorsIDs()

Haalt de ID's op van alle ingeschakelde leveranciers die op het apparaat zijn opgeslagen. Als de gebruiker alle toestemmingen afwijst, is dit leeg. Deze informatie is pas actueel nadat de toestemming correct is opgeslagen in het UserDefaults-gebied, dus als u direct controleert nadat u methoden hebt gebruikt die wijzigingen in de toestemming veroorzaken, zoals openConsentLayer, acceptAll or rejectAllbijvoorbeeld, toen Wacht tot de callback van die methoden wordt geactiveerd voordat u de methode benadert hasUserChoice, om ervoor te zorgen dat de informatie up-to-date is.

Returns: [String] - Een reeks ingeschakelde leveranciers-ID's

Voorbeeld:

let enabledVendors = CMPManager.shared.getEnabledVendorsIDs()
print("Enabled vendors: \(enabledVendors)")

Uitzonderlijk en vanwege het feit dat de juiste levenscyclusgebeurtenissen op de app niet toegankelijk zijn vanuit de SDK-context, zijn deze methoden al verwijderd om verwarring te voorkomen en moet u de ATT-toestemming beheren aan de kant van uw mobiele app. Voor meer informatie, controleer de officiële Apple-documentatie

requestATTAuthorization()

Vraagt ​​toestemming aan de gebruiker voor App Tracking Transparency. 

getATTAuthorizationStatus()

Haalt de huidige App Tracking Transparency-autorisatiestatus op.

 

Terug naar boven