Informacia
Treść

[iOS] 2. Dokumentacja API

Kurs CMPManager Klasa udostępnia metody zarządzania zgodą użytkownika na przetwarzanie i śledzenie danych. Ta dokumentacja obejmuje główne metody dostępne dla integracji aplikacji mobilnych. 

Wszystkie podane poniżej przykłady zostały zaczerpnięte z naszej witryny i można je znaleźć na niej. Aplikacja demonstracyjna.

Proszę sprawdzić przestarzałe metody w przypadku, gdy integrujesz już wersję 3 naszego pakietu CMP SDK.

Inicjalizacji

ustawUrlConfig()

Ustawia konfigurację adresu URL dla Consent Manager.

Parametry:

  • configUrlConfig obiekt zawierający następujące właściwości:
    • id:String — Kod ID pobrany z pulpitu CMP
    • domain:String — Domena do zarządzania zgodą, pobierana również z pulpitu nawigacyjnego
    • language:Ciąg - Kod języka (np. „EN”, „IT”, „DE” itd.)
    • appName:Ciąg — nazwa Twojej aplikacji, używana wyłącznie w celach raportowania. 

Zwraca: Unieważnić

Przykład:

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

ustawWebViewConfig()

Konfiguruje wygląd i zachowanie WebView zgody. Możesz ustawić pozycję, w której obiekt WKWebiew wyświetlający warstwę zgody pojawi się, np. na pełnym ekranie, na dolnej połowie ekranu lub jego górnej połowie. Można również zastosować styl tła, a także promień narożnika, czy będzie on respektował bezpieczny obszar urządzenia, a także czy będzie reagował na zmiany orientacji, czy nie, w przypadku gdy Twój telefon działa tylko w jednej orientacji, co zwykle zdarza się w przypadku gier, które wykorzystują tylko poziomą konfigurację ekranu urządzenia.   

Parametry:

  • configConsentLayerUIConfig obiekt o następujących właściwościach:
    • position:Pozycja – Pozycja WebView (np. .fullScreen)
    • backgroundStyle: BackgroundStyle - Styl tła (np. .dimmed)
    • cornerRadius:CGFloat - Promień narożnika WebView
    • respectsSafeArea:Bool - Czy szanować strefę bezpieczną
    • allowsOrientationChanges:Bool - Czy zezwolić na zmiany orientacji

Zwraca: Unieważnić

Przykład:

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

ustawPresentingViewController()

Ustawia kontroler widoku, który będzie prezentował warstwę zgody. Zwykle przekazujesz self jako bieżący kontroler widoku. 

Parametry:

  • viewController:UIViewController — kontroler widoku do prezentacji warstwy zgody

Zwraca: Unieważnić

Przykład:

CMPManager.shared.setPresentingViewController(self)

pobierzStatusUżytkownika()

Zwraca szczegółową migawkę bieżącego statusu zgody i preferencji użytkownika. Ta metoda dostarcza kompleksowych informacji o wyborach zgody użytkownika, w tym ich ogólnego statusu zgody, indywidualnych uprawnień dostawcy, zgód specyficznych dla celu i odpowiednich ciągów zgody.

Parametry:

  • żaden

Zwraca:

Typ zwrotu: CMPUserStatusResponse obiekt, wyjaśniony w kodzie poniżej. 

Przykład:

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)

sprawdźIotwórz()

Sprawdza na serwerze, czy wymagana jest zgoda i otwiera warstwę zgody, jeśli jest to konieczne. Spowoduje to wykonanie wywołania sieciowego do naszych serwerów za pośrednictwem WKWebView utworzonego w naszym SDK, zużywanie jednej odsłony w trakcie. To wywołanie sieciowe wyśle ​​wiadomość do naszego zaplecza za pośrednictwem JavaScript, który wykryje, czy urządzenie ma ważną zgodę, czy nie, co z kolei określi, czy warstwa zgody musi zostać wyświetlona, ​​czy nie.  

Parametry:

  • jumpToSettings:Wartość logiczna określająca, czy wyświetlana warstwa zgody automatycznie przekieruje do strony, na której użytkownicy będą mogli uzyskać bardziej szczegółową kontrolę nad zgodami udzielonymi przez użytkowników, co umożliwi im dokładne dostrojenie swoich wyborów (gdy ustawiono na true) lub początkowy ekran domyślny z przyciskami (gdy ustawiony na false lub stłumione).
  • completion: Zamknięcie wywoływane po zakończeniu operacji.

Zwraca: Unieważnić

Przykład:

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

wymuśOtwarcie()

Parametry:

  • jumpToSettings:Wartość logiczna określająca, czy wyświetlana warstwa zgody automatycznie przekieruje do strony, na której użytkownicy będą mogli uzyskać bardziej szczegółową kontrolę nad zgodami udzielonymi przez użytkowników, co umożliwi im dokładne dostrojenie swoich wyborów (gdy ustawiono na true) lub początkowy ekran domyślny z przyciskami (gdy ustawiony na false lub stłumione).
  • completion: Zamknięcie wywoływane po zakończeniu operacji, zwracając albo pomyślnie, albo błędnie.

Zwraca: Unieważnić

Przykład:

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

eksportujCMPInfo()

Eksportuje bieżące informacje o zgodzie zapisane na urządzeniu jako ciąg. Ta metoda pobiera ciąg zgody z obszaru UserDefaults urządzenia i zwraca go. Zwykle te informacje są przekazywane do importCMPInfo Metoda.

Zwraca: Ciąg - eksportowane informacje o zgodzie

Przykład:

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

pobierzStatusTrybuZgodyGoogle()

Bezproblemowo integruje się z trybem zgody, technologią Google umożliwiającą modelowanie konwersji i analiz, umożliwiając usługom Google uzupełnianie luk w danych, gdy użytkownicy nie wyrażają na to zgody. Ta funkcja tłumaczy zgodę użytkownika udzieloną przez CMP na format zrozumiały dla Firebase Analytics, dzięki czemu możesz po prostu pobrać wynik tej metody i przekazać go do metody Firebase .setConsent.

  • Następnie aktualizuje Google Analytics o aktualny stan zgody użytkownika.

Parametry:

  • żaden

Zwraca: [String: String] - Tablica wartości kluczowych zawierająca cztery klucze trybu zgody Google: .analyticsStorage, .adStorage, .adUserData i .adPersonalizationi ich odpowiednie wartości w odniesieniu do .choiceDoesntExist, .granted or .denied.

Przykład:

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

pobierzStatusForPurpose()

Parametry:

  • id:String - Identyfikator celu sprawdzenia

Zwraca: UniqueConsentStatus - Wyliczenie z wartościami .choiceDoesntExist jeśli nie wyrażono zgody, .granted or .denied.

Przykład:

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

pobierzStatusDlaDostawcy()

Parametry:

  • id:String - Identyfikator celu sprawdzenia

Zwraca: UniqueConsentStatus - Wyliczenie z wartościami .choiceDoesntExist jeśli nie wyrażono zgody, .granted or .denied.

Przykład:

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

Akceptuj wszystkie()

Parametry:

  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

zaakceptujCele()

Parametry:

  • purposes: [String] - Tablica identyfikatorów celów do zaakceptowania
  • updatePurpose:Bool - Czy aktualizować powiązane cele
  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

akceptujDostawcy()

Parametry:

  • vendors: [String] - Tablica identyfikatorów dostawców do zaakceptowania
  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

importCMPInfo()

Parametry:

  • cmpString:String - Ciąg CMP do zaimportowania
  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

odrzućWszystko()

Parametry:

  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

odrzućCele()

Parametry:

  • purposes: [String] - Tablica identyfikatorów celów do odrzucenia
  • updateVendor: Bool - Czy zaktualizować powiązanych dostawców
  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

odrzućDostawców()

Parametry:

  • vendors: [String] - Tablica identyfikatorów dostawców do odrzucenia
  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

 

resetConsentManagementData()

Parametry:

  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

 

CMPManagerDelegat wydarzenia

pobierzOdwołaniePoKliknięciaLinku

Zestaw SDK zapewnia elastyczny mechanizm obsługi łączy, który umożliwia aplikacjom dostosowywanie sposobu obsługi adresów URL w warstwie zgody. Domyślnie wszystkie łącza otwierają się w WebView, ale aplikacje mogą przechwytywać określone adresy URL, aby obsługiwać je zewnętrznie, gdy jest to potrzebne.

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

Wyzwala się, gdy warstwa zgody została zamknięta po zaktualizowaniu przez użytkownika swoich zgód LUB podczas wywołania metod powodujących zmiany w zgodach, takich jak acceptAll, rejectAll, acceptVendors, rejectVendors itd. Oznacza to, że użytkownik zaakceptował lub odrzucił część lub wszystkie zgody, a także że zostały one prawidłowo zapisane na urządzeniu.

Wyświetl warstwę zgody

Wyzwala się, gdy warstwa zgody została faktycznie wyświetlona. Oznacza to, że w urządzeniu nie było ważnej zgody, więc należy zebrać nową.

zamknij warstwę zgody


Wyzwalane jest, gdy SDK sprawdza potrzebę zgody, ale nie była ona potrzebna i warstwa nie była wyświetlana. Oznacza to, że w urządzeniu jest już prawidłowa, więc nowa nie jest konieczna i warstwa zgody nie zostanie wyświetlona.

otrzymałem błąd

Funkcja ta jest aktywowana, gdy zestaw SDK napotka błąd i zwróci swój kod.

Przestarzałe metody

Wszystkie poniższe metody zostały wycofane i zostanie całkowicie usunięty z SDK z Lipiec/2025 jeden. 

checkIfConsentIsRequired()

Parametry:

  • completion: (Bool) -> Void - Zamknięcie wywoływane z wynikiem, albo true or false.

Zwraca: Głos

Przykład:

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

przejdź do ustawień()

Parametry:

  • completion: Zamknięcie wywoływane po zakończeniu operacji

Zwraca: Unieważnić

Przykład:

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

ma zgodę na cel()

Uwaga: Zawsze najpierw sprawdź hasUserChoice()! W przypadkach, gdy nie ma wyboru, funkcja może zwrócić nieoczekiwane wartości zwrotne.

Parametry:

  • id:String - Identyfikator celu sprawdzenia

Zwraca: Bool - True jeśli zgoda zostanie wyrażona, false Inaczej

Przykład:

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

maWybórUżytkownika()

Sprawdza, czy użytkownik dokonał wyboru dotyczącego zgód i czy ta zgoda jest przechowywana na urządzeniu. Oznacza to, że użytkownik albo zaakceptował wszystkie zgody, odrzucił wszystkie z nich, albo dokonał mieszanego wyboru odrzuconych i zaakceptowanych zgód, w zależności od projektu CMP, co może pozwolić użytkownikom na zaakceptowanie niektórych zgód i odrzucenie innych. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: Bool- true jeśli użytkownik dokonał wyboru, false Inaczej

Przykład:

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

ma zgodę dostawcy()

Parametry:

  • id:String - Identyfikator dostawcy do sprawdzenia

Zwraca: Bool - True jeśli zgoda zostanie wyrażona, false Inaczej

Przykład:

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

pobierzWszystkieIdentyfikatory()

Pobiera wszystkie identyfikatory celów zapisane na urządzeniu, zgodnie z konfiguracjami CMP. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – Tablica uniwersalnych identyfikatorów

Przykład:

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

pobierzIDWszystkichDostawców()

Pobiera wszystkie identyfikatory dostawców zapisane na urządzeniu, zgodnie z konfiguracjami CMP. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – Tablica wszystkich identyfikatorów dostawców

Przykład:

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

pobierzWyłączoneIdentyfikatoryCelów()

Pobiera identyfikatory wszystkich wyłączonych celów zapisanych na urządzeniu, zgodnie z konfiguracjami CMP i wyborami użytkownika. Jeśli użytkownik zaakceptuje wszystkie zgody, będzie to puste.  Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – Tablica wyłączonych identyfikatorów celów

Przykład:

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

pobierzWyłączoneIdentyfikatoryDostawców()

Pobiera identyfikatory wszystkich wyłączonych dostawców zapisanych na urządzeniu, zgodnie z konfiguracjami CMP. Jeśli użytkownik zaakceptuje wszystkie zgody, będzie to puste. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – Tablica wyłączonych identyfikatorów dostawców

Przykład:

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

pobierzEnabledPurposesIDs()

Pobiera identyfikatory wszystkich włączonych celów zapisanych na urządzeniu, zgodnie z konfiguracjami CMP. Jeśli użytkownik odrzuci wszystkie zgody, będzie to puste. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – tablica włączonych identyfikatorów celów

Przykład:

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

pobierzEnabledVendorsIDs()

Pobiera identyfikatory wszystkich włączonych dostawców zapisanych na urządzeniu. Jeśli użytkownik odrzuci wszystkie zgody, będzie to puste. Informacje te zostaną zaktualizowane dopiero po prawidłowym zapisaniu zgody w obszarze UserDefaultswięc jeśli sprawdzasz zaraz po użyciu metod, które wyzwalają zmiany w zgodzie, takich jak openConsentLayer, acceptAll or rejectAllna przykład, wtedy poczekaj, aż wywołanie zwrotne z tych metod zostanie wywołane przed uzyskaniem dostępu do metody hasUserChoice, aby upewnić się, że informacje są aktualne.

Zwraca: [String] – Tablica włączonych identyfikatorów dostawców

Przykład:

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

Wyjątkowo i ze względu na fakt, że właściwe zdarzenia cyklu życia w aplikacji są niedostępne z kontekstu SDK, te metody zostały już usunięte, aby uniknąć zamieszania, i powinieneś zarządzać zgodą ATT po stronie swojej aplikacji mobilnej. Aby uzyskać więcej informacji, sprawdź oficjalna dokumentacja Apple

żądanieATTAuthorization()

Żąda od użytkownika autoryzacji w ramach App Tracking Transparency. 

pobierzATTAuthorizationStatus()

Pobiera aktualny status autoryzacji App Tracking Transparency.

 

Powrót do góry