Info
Innehåll

[iOS] 2. API-dokumentation

Smakämnen CMPManager klass tillhandahåller metoder för att hantera användarens samtycke för databehandling och spårning. Den här dokumentationen täcker de huvudsakliga metoderna som är tillgängliga för integration av mobilappar. 

Alla de exempel som nämns nedan har extraherats från och finns på vår Demo-app.

Vänligen kolla på föråldrade metoder om du redan integrerar v3 av vår CMP SDK.

Initieringen

setUrlConfig()

Ställer in URL-konfigurationen för Consent Manager.

Parametrar:

  • config: En UrlConfig objekt som innehåller följande egenskaper:
    • id: String - The Code-ID retrieed from your CMP dashboard
    • domain: String - The domain for consent management, also retrieved from the dashboard
    • language: String - The language code (e.g., "EN", "IT", "DE", etc.)
    • appName: String - The name of your app, used for reporting purposes only. 

Returnerar: Ogiltig

Exempelvis:

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

Konfigurerar utseendet och beteendet för samtyckes WebView. Du kan ställa in positionen där WKWebiew-objektet som visar samtyckeslagret kommer att visas, som helskärm, på den nedre halvan av skärmen eller dess övre halva. Även bakgrundsstilen kan tillämpas, såväl som hörnradien, om den kommer att respektera enhetens säkra område, samt om den kommer att reagera på orienteringsändringar eller inte, om din mobil bara fungerar i en enda orientering , vilket vanligtvis händer med spel som bara använder den horisontella konfigurationen av enhetens skärm.   

Parametrar:

  • config: En ConsentLayerUIConfig objekt med följande egenskaper:
    • position: Position – Positionen för WebView (t.ex. .fullScreen)
    • backgroundStyle: BackgroundStyle - Bakgrundsstilen (t.ex. .dimmed)
    • cornerRadius: CGFloat - Hörnradien för WebView
    • respectsSafeArea: Bool - Om det säkra området ska respekteras
    • allowsOrientationChanges: Bool - Om orienteringsändringar ska tillåtas

Returnerar: Ogiltig

Exempelvis:

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

setPresentingViewController()

Ställer in vykontrollern som ska presentera samtyckeslagret. Vanligtvis passerar man self som nuvarande View Controller. 

Parametrar:

  • viewController: UIViewController - Vykontrollern för att presentera samtyckesskiktet

Returnerar: Ogiltig

Exempelvis:

CMPManager.shared.setPresentingViewController(self)

getUserStatus()

Returnerar en detaljerad ögonblicksbild av användarens aktuella samtyckesstatus och preferenser. Den här metoden ger omfattande information om användarens samtyckesval, inklusive deras övergripande samtyckesstatus, individuella leverantörsbehörigheter, ändamålsspecifika medgivanden och relevanta samtyckessträngar.

Parametrar:

  • Ingen

Returnerar:

Returtyp: CMPUserStatusResponse objekt, förklarat i koden nedan. 

Exempelvis:

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)

checkAndOpen()

Kontrollerar med servern om samtycke krävs och öppnar samtyckeslagret vid behov. Detta kommer att göra ett nätverksanrop till våra servrar via WKWebView som skapats i vår SDK, förbrukar en sidvisning i processen. Detta nätverksanrop kommer att skicka ett meddelande till vår backend via JavaScript, som kommer att upptäcka om enheten har ett giltigt samtycke eller inte, vilket i sin tur avgör om samtyckesskiktet behöver visas eller inte.  

Parametrar:

  • jumpToSettings: Ett booleskt värde för att avgöra om samtyckesskiktet som visas automatiskt leder till sidan där en mer detaljerad kontroll över samtycken som ges av användarna, så att de kan finjustera sina val (när inställd på true) eller den ursprungliga standardskärmen med knapparna (när inställd på false eller undertryckt).
  • completion: En stängning som anropas när operationen är klar.

Returnerar: Ogiltig

Exempelvis:

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

forceOpen()

Parametrar:

  • jumpToSettings: Ett booleskt värde för att avgöra om samtyckesskiktet som visas automatiskt leder till sidan där en mer detaljerad kontroll över samtycken som ges av användarna, så att de kan finjustera sina val (när inställd på true) eller den ursprungliga standardskärmen med knapparna (när inställd på false eller undertryckt).
  • completion: En stängning som anropas när operationen är klar och returnerar antingen en framgång eller ett fel.

Returnerar: Ogiltig

Exempelvis:

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

exportCMPIinfo()

Exporterar den aktuella samtyckesinformationen som är lagrad på enheten som en sträng. Denna metod hämtar samtyckessträngen från UserDefaults-området på enheten och returnerar den. Vanligtvis skickas denna information till importCMPInfo metod.

Returnerar: String - Den exporterade samtyckesinformationen

Exempelvis:

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

getGoogleConsentModeStatus()

Integreras sömlöst med Consent Mode, en Google-teknik som möjliggör konvertering och analysmodellering, tillåta Googles tjänster att fylla i dataluckor när användarna inte samtycker. Den här funktionen översätter användarens samtycke från din CMP till ett format som Firebase Analytics kan förstå, så du kan helt enkelt få tillbaka den här metoden och skicka den vidare till Firebase .setConsent-metoden.

  • Den uppdaterar sedan Google Analytics med användarens aktuella samtyckesstatus.

Parametrar:

  • Ingen

Returnerar: [String: String] - En nyckelvärdesmatris med de fyra Googles samtyckeslägesnycklar: .analyticsStorage, .adStorage, .adUserData och .adPersonalization, och deras respektive värden i termer av .choiceDoesntExist, .granted or .denied.

Exempelvis:

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

getStatusForPurpose()

Parametrar:

  • id: String - ID för syftet att kontrollera

Returnerar: UniqueConsentStatus - En uppräkning med värdena .choiceDoesntExist om inget samtycke lämnats, .granted or .denied.

Exempelvis:

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

Parametrar:

  • id: String - ID för syftet att kontrollera

Returnerar: UniqueConsentStatus - En uppräkning med värdena .choiceDoesntExist om inget samtycke lämnats, .granted or .denied.

Exempelvis:

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

acceptera alla()

Parametrar:

  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

acceptera Ändamål()

Parametrar:

  • purposes: [String] – En uppsättning ändamåls-ID:n att acceptera
  • updatePurpose: Bool - Om relaterade syften ska uppdateras
  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

acceptera leverantörer()

Parametrar:

  • vendors: [String] - En uppsättning leverantörs-ID:n att acceptera
  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

importCMPIinfo()

Parametrar:

  • cmpString: String - CMP-strängen som ska importeras
  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

avvisaAlla()

Parametrar:

  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

rejectPurposes()

Parametrar:

  • purposes: [String] - En uppsättning ändamåls-ID:n att avvisa
  • updateVendor: Bool - Om relaterade leverantörer ska uppdateras
  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

rejectVendors()

Parametrar:

  • vendors: [String] - En uppsättning leverantörs-ID:n att avvisa
  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

 

resetConsentManagementData()

Parametrar:

  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

 

CMPManagerDelegate-evenemang

getOnClickLinkCallback

SDK tillhandahåller en flexibel länkhanteringsmekanism som tillåter applikationer att anpassa hur URL:er inom samtyckesskiktet hanteras. Som standard öppnas alla länkar i WebView, men applikationer kan fånga upp specifika URL:er för att hantera dem externt vid behov.

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

Detta utlöses när samtyckeslagret stängdes efter att användaren uppdaterat sina samtycken ELLER när man åberopar metoder som orsakar ändringar i samtyckena, som acceptAll, rejectAll, acceptVendors, rejectVendors, etc. Det betyder att användaren accepterade eller avvisade några av alla. av samtyckena och att dessa sparades korrekt i enheten.

didShowConsentLayer

Detta utlöses när samtyckeslagret faktiskt visades. Det betyder att det inte fanns ett giltigt samtycke i enheten, så ett nytt bör hämtas.

didCloseConsentLayer


Detta utlöses när SDK:n kontrollerade behovet av ett samtycke, men det behövdes inte och lagret visades inte. Det betyder att det redan finns en giltig i enheten, så en ny är inte nödvändig och tue samtyckeslager kommer inte att visas.

didReceiveError

Detta utlöses när SDK:n stötte på något fel och returnerar dess kod.

Föråldrade metoder

Alla metoderna nedan var utfasade och kommer att tas bort helt från SDK från July/2025 på. 

checkIfConsentIsRequired()

Parametrar:

  • completion: (Bool) -> Void - En stängning kallas med resultatet, antingen true or false.

Returnerar: Röst

Exempelvis:

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

jumpToSettings()

Parametrar:

  • completion: En stängning som anropas när operationen är klar

Returnerar: Ogiltig

Exempelvis:

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

hasPurposeConsent()

Notera: Kolla alltid efter hasUserChoice() först! I de fall då inget val finns kan funktionen returnera oväntade returvärden.

Parametrar:

  • id: String - ID för syftet att kontrollera

Returnerar: Bool - True om samtycke ges, false annat

Exempelvis:

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

hasUserChoice()

Kontrollerar om användaren har gjort ett val angående samtycken och detta samtycke lagras på enheten. Det betyder att användaren antingen accepterade alla samtycken, avvisade dem alla eller gjorde ett blandat val av avvisade och accepterade samtycken, beroende på CMP-designen, vilket kan tillåta användarna att tillåta några av samtyckena och avvisa andra. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: Bool - true om användaren har gjort ett val, false annat

Exempelvis:

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

hasVendorConsent()

Parametrar:

  • id: String - ID för leverantören som ska kontrolleras

Returnerar: Bool - True om samtycke ges, false annat

Exempelvis:

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

getAllPurposesIDs()

Hämtar alla ändamåls-ID:n lagrade på enheten, enligt CMP-konfigurationerna. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] – En uppsättning av ID:n för alla ändamål

Exempelvis:

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

getAllVendorsIDs()

Hämtar alla leverantörs-ID:n lagrade på enheten, enligt CMP-konfigurationerna. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] – En uppsättning av alla leverantörs-ID:n

Exempelvis:

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

getDisabledPurposesIDs()

Hämtar ID:n för alla inaktiverade syften som är lagrade på enheten, enligt CMP-konfigurationerna och användarvalen. Om användaren accepterar alla samtycken kommer detta att vara tomt.  Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] – En uppsättning av inaktiverade ändamåls-ID:n

Exempelvis:

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

getDisabledVendorsIDs()

Hämtar ID:n för alla inaktiverade leverantörer lagrade på enheten, enligt CMP-konfigurationerna. Om användaren accepterar alla samtycken kommer detta att vara tomt. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] – En uppsättning av inaktiverade leverantörs-ID:n

Exempelvis:

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

getEnabledPurposesIDs()

Hämtar ID:n för alla aktiverade ändamål som är lagrade på enheten, enligt CMP-konfigurationerna. Om användaren avvisar alla samtycken kommer detta att vara tomt. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] – En uppsättning aktiverade ändamåls-ID:n

Exempelvis:

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

getEnabledVendorsIDs()

Hämtar ID:n för alla aktiverade leverantörer lagrade på enheten. Om användaren avvisar alla samtycken kommer detta att vara tomt. Denna information kommer endast att vara uppdaterad efter att samtycket har kvarhållits korrekt i området UserDefaults, så om du kollar direkt efter att du har använt metoder som utlöser ändringar i samtycket som openConsentLayer, acceptAll or rejectAlltill exempel då vänta tills återuppringningen från dessa metoder utlöses innan du använder metoden hasUserChoice, för att säkerställa att informationen är aktuell.

Returnerar: [String] - En matris med aktiverade leverantörs-ID:n

Exempelvis:

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

Exceptionally and due to the fact that the proper lifecycle events on the app are inaccessible from inside the SDK context, these methods were already removed to avoid confusion, and you should manage the ATT consent on your mobile app's end. For further information, please check the officiella Apple-dokumentation

requestATTAuthorization()

Requests App Tracking Transparency authorization from the user. 

getATTAuthorizationStatus()

Gets the current App Tracking Transparency authorization status.

 

Tillbaka till toppen