[iOS] 2. API-Dokumentation

Die CMPManager Klasse bietet Methoden zur Verwaltung der Einwilligung des Nutzers zur Datenverarbeitung und zum Tracking. Diese Dokumentation behandelt die wichtigsten Methoden, die für die Integration in mobile Apps zur Verfügung stehen. 

Alle unten genannten Beispiele stammen aus unserer Demo-App und sind dort zu finden.

Bitte überprüfen Sie die veralteten Methoden, falls Sie bereits Version 3 unseres CMP-SDK integrieren.

Initialisierung

setUrlConfig()

Legt die URL-Konfiguration für den Consent Manager fest.

Parameter:

  • config: A UrlConfig Objekt, das die folgenden Eigenschaften enthält:
    • id: String – Die Code-ID, die Sie aus Ihrem CMP-Dashboard abrufen
    • domain: String – Die Domain für das Einwilligungsmanagement, ebenfalls aus dem Dashboard abgerufen
    • language: String – Der Sprachcode (z. B. „EN“, „IT“, „DE“ usw.)
    • appName: String – Der Name Ihrer App, der ausschließlich für Berichtszwecke verwendet wird 
    • jsonConfig: JSON-Objekt – Optional, wird nur in besonderen Fällen verwendet; verwenden Sie es nur, wenn dies in Ihrem CMP-Dashboard zusammen mit den anderen oben genannten Parametern ausdrücklich angegeben ist. 
    • noHash: Boolescher Wert – Verhindert, dass die von der Webansicht geladene generierte URL einen Hash (#) verwendet, um das Einwilligungsobjekt 

Rücksendungen: Ungültig

Beispiel:

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()

Konfiguriert das Erscheinungsbild und das Verhalten der Einwilligungs-WebView. Sie können die Position festlegen, an der das WKWebView-Objekt, das die Einwilligungsschicht anzeigt, erscheinen soll, z. B. im Vollbildmodus, in der unteren Hälfte des Bildschirms oder in der oberen Hälfte. Außerdem können Sie den Hintergrundstil sowie den Eckenradius festlegen, bestimmen, ob der Sicherheitsbereich des Geräts berücksichtigt werden soll, und einstellen, ob das Element auf Änderungen der Ausrichtung reagiert oder nicht – falls Ihr Mobilgerät nur in einer einzigen Ausrichtung funktioniert, was häufig bei Spielen der Fall ist, die ausschließlich die horizontale Ausrichtung des Bildschirms nutzen.   

Parameter:

  • config: A ConsentLayerUIConfig Objekt mit den folgenden Eigenschaften:
    • position: Position – Die Position des WebViews (z. B. .fullScreen)
    • backgroundStyle: BackgroundStyle – Der Hintergrundstil (z. B. .dimmed)
    • cornerRadius: CGFloat – Der Eckenradius des WebView
    • respectsSafeArea: Bool – Gibt an, ob der Sicherheitsbereich berücksichtigt werden soll. Dieser Parameter ist vorhanden, hat jedoch im iOS SDK keine Auswirkung, da sich verschiedene Geräte und Ausrichtungen (iPhone SE vs. iPhone 17 Pro Max vs. alle iPads) unterschiedlich verhalten würden, insbesondere aufgrund der unterschiedlichen Seitenverhältnisse der abgerundeten Kanten bei den verschiedenen Geräten oder der Frage, wie die Dynamic Island von der zugrunde liegenden mobilen App behandelt würde, die unser SDK integriert, um nur einige der Herausforderungen zu nennen, mit denen wir während der Entwicklung konfrontiert waren.
    • allowsOrientationChanges: Bool – Gibt an, ob Ausrichtungsänderungen

Rücksendungen: Ungültig

Beispiel:

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

setPresentingViewController()

Legt den View Controller fest, der die Einwilligungsschicht anzeigt. Normalerweise übergeben Sie self als aktuellen View Controller. 

Parameter:

  • viewController: UIViewController – Der View Controller zur Darstellung der Einwilligungsschicht

Rücksendungen: Ungültig

Beispiel:

CMPManager.shared.setPresentingViewController(self)

setATTStatus()

Legt den von ATTManager.AuthorizationStatusabgerufen wurde, damit die richtige, zielgerichtete Einwilligungsschicht angezeigt werden kann.

Parameter:

  • _: der Rohwert aus dem AuthorizationStatus

Rücksendungen: Ungültig

Beispiel:

cmpManager.setATTStatus(2)  // 0 = NotDetermined, 1 = Restricted, 2 = Denied, and 3 = Authorized
         					// retrieved from ATTManager.AuthorizationStatus

 

Verwaltung der Einwilligungs-Layer

getUserStatus()

Liefert einen detaillierten Überblick über den aktuellen Zustimmungsstatus und die Präferenzen des Nutzers. Diese Methode bietet umfassende Informationen zu den Einwilligungsentscheidungen des Nutzers, einschließlich seines allgemeinen Zustimmungsstatus, individueller Anbieterberechtigungen, zweckgebundener Einwilligungen und relevanter Einwilligungsstrings.

Parameter:

  • Keine

Rückgaben:

Rückgabetyp: CMPUserStatusResponse Objekt, erklärt im folgenden Code. 

Beispiel:

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

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)

isConsentRequired()

Prüft, ob eine Einwilligung des Nutzers erforderlich ist, ohne bei Bedarf automatisch die Einwilligungsmaske anzuzeigen. Dies führt zu einem Netzwerkaufruf an unsere Server über die in unserem SDK erstellte WKWebView, die über JavaScript eine Nachricht an unser Backend sendet. Unser Backend erkennt, ob das Gerät über eine gültige Einwilligung verfügt, und gibt zurück false , ob die auf dem Gerät gefundene Einwilligung gültig ist, oder true ob eine neue Einwilligung vom Nutzer eingeholt werden muss, wobei dabei ein Seitenaufruf verbraucht wird.

Parameter: Keine

Zurück: 

  • completion: (Bool) -> Void – Eine Closure, die mit dem Ergebnis aufgerufen wird, entweder true wenn keine gültige Einwilligung gefunden wurde oder false ansonsten.

Beispiel:

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

checkAndOpen()

Prüft beim Server, ob eine Einwilligung erforderlich ist, und öffnet gegebenenfalls die Einwilligungsschicht. Dies führt zu einem Netzwerkaufruf an unsere Server über die in unserem SDK erstellte WKWebView, wobei dabei ein Seitenaufruf verbraucht wird. Dieser Netzwerkaufruf sendet über JavaScript eine Nachricht an unser Backend, das erkennt, ob das Gerät über eine gültige Einwilligung verfügt oder nicht, was wiederum bestimmt, ob die Einwilligungsschicht angezeigt werden muss oder nicht.  

Parameter:

  • jumpToSettings: Ein boolescher Wert, der bestimmt, ob die angezeigte Einwilligungsschicht automatisch zu der Seite führt, auf der eine detailliertere Kontrolle über die von den Nutzern erteilten Einwilligungen möglich ist, sodass diese ihre Auswahl verfeinern können (bei Einstellung auf true) oder zum anfänglichen Standardbildschirm mit den Schaltflächen (wenn auf false oder unterdrückt).
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist.

Rücksendungen: Ungültig

Beispiel:

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

forceOpen()

Öffnet die Einwilligungsschicht. Dabei wird eine Netzwerkanfrage an unser Backend gestellt, was einen Seitenaufruf verbraucht. Es wird die Einwilligungsschicht angezeigt, in der der Nutzer entweder alle Optionen akzeptieren oder ablehnen kann oder, abhängig vom Parameter „jumpToSettings“, die Einwilligungen detaillierter steuern kann. 

Parameter:

  • jumpToSettings: Ein boolescher Wert, der bestimmt, ob die angezeigte Einwilligungsschicht automatisch zu der Seite führt, auf der eine detailliertere Kontrolle über die von den Nutzern erteilten Einwilligungen möglich ist, sodass diese ihre Auswahl verfeinern können (bei Einstellung auf true) oder zum anfänglichen Standardbildschirm mit den Schaltflächen (wenn auf false oder unterdrückt).
  • completion: Eine Closure, die aufgerufen wird, wenn der Vorgang abgeschlossen ist, und entweder einen Erfolg oder einen Fehler zurückgibt.

Rücksendungen: Ungültig

Beispiel:

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

Einwilligungsstatus

exportCMPInfo()

Exportiert die aktuell auf dem Gerät gespeicherten Einwilligungsinformationen als Zeichenkette. Diese Methode ruft die Einwilligungszeichenkette aus dem UserDefaults-Bereich des Geräts ab und gibt sie zurück. In der Regel werden diese Informationen an die importCMPInfo Methode übergeben.

Rückgabewert: String – Die exportierten Einwilligungsinformationen

Beispiel:

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

getGoogleConsentModeStatus()

Nahtlose Integration mit dem Consent Mode, einer Google-Technologie, die Conversion- und Analysemodellierung ermöglicht, sodass die Dienste von Google Datenlücken füllen können, wenn Nutzer keine Einwilligung erteilen. Diese Funktion übersetzt die Einwilligung des Nutzers aus Ihrem CMP in ein Format, das Firebase Analytics verstehen kann, sodass Sie einfach den Rückgabewert dieser Methode abrufen und an die Firebase-Methode .setConsent weiterleiten können.

  • Anschließend wird Google Analytics mit dem aktuellen Einwilligungsstatus des Nutzers aktualisiert.

Parameter:

  • Keine

Gibt zurück: [String: String] – Ein Schlüssel-Wert-Array mit den vier Schlüsseln des Google Consent Mode: .analyticsStorage, .adStorage, .adUserData und .adPersonalization, sowie deren jeweilige Werte in Form von .choiceDoesntExist, .granted oder .denied.

Beispiel:

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

getStatusForPurpose()

Prüft, ob für einen bestimmten Zweck eine Einwilligung erteilt wurde und ob diese Einwilligung auf dem Gerät gespeichert ist. Es überprüft den Bereich „UserDefaults“ auf akzeptierte oder abgelehnte Einwilligungen und filtert die als Parameter übergebene ID, wobei „true“ zurückgegeben wird, wenn die Einwilligung akzeptiert wurde, andernfalls „false“. 

Parameter:

  • id: String – Die ID des zu prüfenden Zwecks

Ergebnisse: UniqueConsentStatus – Eine Aufzählung mit den Werten .choiceDoesntExist , falls keine Einwilligung erteilt wurde, .granted oder .denied.

Beispiel:

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()

Prüft, ob für einen bestimmten Anbieter eine Einwilligung erteilt wurde und diese Einwilligung auf dem Gerät gespeichert ist. Es überprüft den Bereich „UserDefaults“ auf akzeptierte oder abgelehnte Einwilligungen und filtert die als Parameter übergebene ID, wobei „true“ zurückgegeben wird, wenn die Einwilligung akzeptiert wurde, andernfalls „false“. 

Parameter:

  • id: String – Die ID des zu prüfenden Zwecks

Ergebnisse: UniqueConsentStatus – Eine Aufzählung mit den Werten .choiceDoesntExist , falls keine Einwilligung erteilt wurde, .granted oder .denied.

Beispiel:

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"
}

Einwilligungsänderung

acceptAll()

Akzeptiert die Einwilligung für alle Zwecke und Anbieter und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, wodurch die Akzeptanz aller Einwilligungen entsprechend der CMP-Konfiguration ausgelöst wird. Diese Informationen stehen den anderen Methoden erst dann zur Verfügung, wenn der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden. 

Parameter:

  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

acceptPurposes()

Akzeptiert die Einwilligung für bestimmte Zwecke und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, der die Akzeptanz der als Parameter übergebenen festgelegten Zwecke gemäß der CMP-Konfiguration auslöst. Diese Informationen stehen den anderen Methoden erst zur Verfügung, nachdem der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden. 

Parameter:

  • purposes: [String] – Ein Array von Zweck-IDs, die akzeptiert werden sollen
  • updatePurpose: Bool – Ob verwandte Zwecke aktualisiert werden sollen
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

acceptVendors()

Akzeptiert die Einwilligung für bestimmte Anbieter und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, der die Akzeptanz der als Parameter übergebenen Anbieter gemäß der CMP-Konfiguration auslöst. Diese Informationen stehen den anderen Methoden erst zur Verfügung, nachdem der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden.  

Parameter:

  • vendors: [String] – Ein Array von Anbieter-IDs, die akzeptiert werden sollen
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

importCMPInfo()

Importiert Einwilligungsinformationen aus einer CMP-Zeichenkette. Diese erhält eine Zeichenkette mit den Einwilligungsdaten, die in der Regel über die exportCMPInfo Methode. Diese Informationen werden im UserDefaults-Bereich des Geräts gespeichert und gleichzeitig über eine in die WKWebView eingefügte Nachricht an unser Backend gesendet, wobei dabei ein Seitenaufruf verbraucht wird

Parameter:

  • cmpString: String – Der zu importierende CMP-String
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

rejectAll()

Lehnt die Einwilligung für alle Zwecke und Anbieter ab und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, der die Ablehnung aller Einwilligungen gemäß der CMP-Konfiguration auslöst. Diese Informationen stehen den anderen Methoden erst zur Verfügung, nachdem der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden. 

Parameter:

  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

rejectPurposes()

Lehnt die Einwilligung für bestimmte Zwecke ab und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, der die Ablehnung der als Parameter übergebenen Zwecke gemäß der CMP-Konfiguration auslöst. Diese Informationen stehen den anderen Methoden erst dann zur Verfügung, wenn der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden. 

Parameter:

  • purposes: [String] – Ein Array von Zweck-IDs, die abgelehnt werden sollen
  • updateVendor: Bool – Ob zugehörige Anbieter aktualisiert werden sollen
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

rejectVendors()

Lehnt die Einwilligung für bestimmte Anbieter ab und verbraucht dabei einen Seitenaufruf. Es wird ein Netzwerkaufruf an unser Backend über eine in die WKWebView eingefügte Nachricht getätigt, der die Ablehnung der als Parameter übergebenen Anbieter gemäß der CMP-Konfiguration auslöst. Diese Informationen stehen den anderen Methoden erst zur Verfügung, nachdem der Callback einen Erfolg oder Misserfolg zurückgibt, was bedeutet, dass sie von unserem Backend erfolgreich verarbeitet und auf dem Gerät gespeichert wurden. 

Parameter:

  • vendors: [String] – Ein Array von Anbieter-IDs, die abgelehnt werden sollen
  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

 

resetConsentManagementData()

Dadurch werden die Schlüssel-Wert-Paare aus den Bereichen „UserDefaults“ und „SharedPreferences“ des Geräts entfernt. Um die Daten vollständig zu löschen, musst du möglicherweise Cookies, Datensätze sowie den Webview-Verlauf und den Cache entfernen, um die Notwendigkeit einer neuen Einwilligung vollständig zu erzwingen.  

Parameter:

  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

Weitergabe von Einwilligungsdaten an SDKs von Drittanbietern

updateThirdPartyConsent

Diese Methode sorgt für die automatische Weitergabe von Einwilligungsdaten an SDKs von Drittanbietern wie AppsFlyer, AdJust, Branch, Kochava, Singular, AirBridge und Tenjin. Sie funktioniert über Introspection/Reflection. Initialisiere also das Drittanbieter-SDK mit deinen Anmeldedaten unter Verwendung der vom Anbieter empfohlenen Strategie, und unser CMP-SDK erkennt die Instanz des Drittanbieter-SDKs und ruft die erforderlichen Methoden im Hintergrund auf. 

CMPManagerDelegate-Ereignisse

getOnClickLinkCallback

Das SDK bietet einen flexiblen Mechanismus zur Link-Verarbeitung, mit dem Anwendungen festlegen können, wie URLs innerhalb der Einwilligungsschicht behandelt werden. Standardmäßig werden alle Links im WebView geöffnet, aber Anwendungen können bestimmte URLs abfangen, um sie bei Bedarf extern zu verarbeiten.

// 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(consent: String, jsonObject: [String: Any])

Dies wird ausgelöst, wenn die Einwilligungsschicht geschlossen wurde, nachdem der Nutzer seine Einwilligungen aktualisiert hat, ODER beim Aufruf von Methoden, die Änderungen an den Einwilligungen bewirken, wie acceptAll, rejectAll, acceptVendors, rejectVendors usw. Das bedeutet, dass der Nutzer einige oder alle Einwilligungen akzeptiert oder abgelehnt hat und dass diese korrekt auf dem Gerät gespeichert wurden.

didShowConsentLayer

Dies wird ausgelöst, wenn die Einwilligungsmaske tatsächlich angezeigt wurde. Das bedeutet, dass auf dem Gerät keine gültige Einwilligung vorlag, sodass eine neue eingeholt werden sollte.

didCloseConsentLayer


Dies wird ausgelöst, wenn:

1. Das SDK die Notwendigkeit einer Einwilligung geprüft hat, diese jedoch nicht erforderlich war und die Einwilligungsabfrage nicht angezeigt wurde. Das bedeutet, dass auf dem Gerät bereits eine gültige Einwilligung vorliegt, sodass keine neue erforderlich ist und die Einwilligungsabfrage nicht angezeigt wird.
2. Der Nutzer hat mit dem Einwilligungslayer interagiert, seine Einwilligung erteilt und den Einwilligungslayer geschlossen.

didReceiveError

Dies wird ausgelöst, wenn das SDK auf einen Fehler stößt, und gibt dessen Code zurück. Bei schlechten Netzwerkbedingungen ist mit einer festen Zeitüberschreitung von etwa 10 Sekunden zu rechnen. 

Veraltete Methoden

Alle unten aufgeführten Methoden sind veraltet und werden ab Juli 2025 vollständig aus dem SDK entfernt

checkIfConsentIsRequired()

Prüft, ob für den Nutzer eine Einwilligung erforderlich ist. Dies führt zu einem Netzwerkaufruf an unsere Server über die in unserem SDK erstellte WKWebView, die über JavaScript eine Nachricht an unser Backend sendet. Unser Backend erkennt, ob das Gerät über eine gültige Einwilligung verfügt oder nicht, und sendet eine Nachricht an die WKWebView zurück, die bestimmt, ob sie angezeigt werden muss oder nicht, wobei dabei eine Seitenaufruf gezählt wird. Je nach der zurückgegebenen Nachricht interpretiert das SDK diese und gibt die Ergebnisse über den Completion-Handler zurück.

Parameter:

  • completion: (Bool) -> Void – Eine Closure, die mit dem Ergebnis aufgerufen wird, entweder true oder false.

Rückmeldungen: Tonfall

Beispiel:

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

jumpToSettings()

Öffnet die Einwilligungsschicht und springt direkt zur Einstellungsseite. Dies löst einen Netzwerkaufruf an unsere Server aus, der dabei einen Seitenaufruf verbraucht und die Anzeige des WKWebView aufruft, jedoch die Einstellungsseite anstelle der Startseite der Einwilligungsschicht anzeigt, die den Nutzern die Wahl zwischen „Alle akzeptieren“ oder „Alle ablehnen“ bietet. Dies führt stattdessen zu der Seite, auf der den Nutzern eine detailliertere Kontrolle über die Einwilligungen gewährt wird, sodass sie ihre Auswahl genau anpassen können. 

Parameter:

  • completion: Ein Callback, der aufgerufen wird, wenn der Vorgang abgeschlossen ist

Rücksendungen: Ungültig

Beispiel:

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

hasPurposeConsent()

Prüft, ob für einen bestimmten Zweck eine Einwilligung erteilt wurde und ob diese Einwilligung auf dem Gerät gespeichert ist. Es überprüft den Bereich „UserDefaults“ auf akzeptierte oder abgelehnte Einwilligungen und filtert die als Parameter übergebene ID, wobei „true“ zurückgegeben wird, wenn die Einwilligung akzeptiert wurde, andernfalls „false“. 

Hinweis: Überprüfen Sie immer zuerst hasUserChoice()! In Fällen, in denen keine Auswahlmöglichkeit besteht, kann die Funktion unerwartete Rückgabewerte liefern.

Parameter:

  • id: String – Die ID des zu prüfenden Zwecks

Rückgabe: BoolTrue Wenn die Einwilligung erteilt wird, false ansonsten

Beispiel:

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

hasUserChoice()

Prüft, ob der Nutzer eine Entscheidung bezüglich der Einwilligungen getroffen hat und diese Einwilligung auf dem Gerät gespeichert ist. Das bedeutet, dass der Nutzer entweder alle Einwilligungen akzeptiert, alle abgelehnt oder eine gemischte Auswahl aus abgelehnten und akzeptierten Einwilligungen getroffen hat, je nach Gestaltung des CMP, das es den Nutzern möglicherweise erlaubt, einige Einwilligungen zu erteilen und andere abzulehnen. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn Sie also direkt nach der Verwendung von Methoden prüfen, die Änderungen an der Einwilligung auslösen, wie z. B. openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewert: Bool – true wenn der Benutzer eine Auswahl getroffen hat, false ansonsten

Beispiel:

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

hasVendorConsent()

Prüft, ob für einen bestimmten Anbieter eine Einwilligung erteilt wurde und diese Einwilligung gemäß den CMP-Konfigurationen auf dem Gerät gespeichert ist. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden prüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Parameter:

  • id: String – Die ID des Anbieters, die überprüft werden soll

Rückgabe: BoolTrue Wenn die Einwilligung erteilt wird, false ansonsten

Beispiel:

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

getAllPurposesIDs()

Ruft alle auf dem Gerät gespeicherten Zweck-IDs gemäß den CMP-Konfigurationen ab. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewerte: [String] – Ein Array mit allen Zweck-IDs

Beispiel:

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

getAllVendorsIDs()

Ruft alle auf dem Gerät gespeicherten Anbieter-IDs gemäß den CMP-Konfigurationen ab. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewert: [String] – Ein Array aller Anbieter-IDs

Beispiel:

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

getDisabledPurposesIDs()

Ruft die IDs aller auf dem Gerät gespeicherten deaktivierten Zwecke ab, entsprechend den CMP-Konfigurationen und den Nutzerauswahlen. Wenn der Nutzer alle Einwilligungen akzeptiert, ist dies leer.  Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewerte: [String] – Ein Array von deaktivierten Zweck-IDs

Beispiel:

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

getDisabledVendorsIDs()

Ruft die IDs aller auf dem Gerät gespeicherten deaktivierten Anbieter gemäß den CMP-Konfigurationen ab. Wenn der Nutzer alle Einwilligungen akzeptiert, ist dieses Feld leer. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewert: [String] – Ein Array mit deaktivierten Anbieter-IDs

Beispiel:

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

getEnabledPurposesIDs()

Ruft die IDs aller auf dem Gerät gespeicherten, aktivierten Zwecke gemäß den CMP-Konfigurationen ab. Wenn der Nutzer alle Einwilligungen ablehnt, ist dieses Feld leer. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, dann warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewerte: [String] – Ein Array von aktivierten Zweck-IDs

Beispiel:

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

getEnabledVendorsIDs()

Ruft die IDs aller auf dem Gerät gespeicherten aktivierten Anbieter ab. Wenn der Nutzer alle Einwilligungen ablehnt, ist dies leer. Diese Informationen sind erst dann aktuell, wenn die Einwilligung ordnungsgemäß im UserDefaults-Bereich gespeichert wurde. Wenn du also direkt nach der Verwendung von Methoden überprüfst, die Änderungen an der Einwilligung auslösen, wie openConsentLayer, acceptAll oder rejectAll, warten Sie, bis der Callback dieser Methoden ausgelöst wurde, bevor Sie auf die Methode hasUserChoice, um sicherzustellen, dass die Informationen aktuell sind.

Rückgabewerte: [String] – Ein Array mit aktivierten Anbieter-IDs

Beispiel:

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

 

We do our best to keep this purely informative documentation up to date. However, if you notice that any of these guides need a little touch-up, let us know!