Informacia
Treść

[iOS] 3. Dokumentacja API

Akceptuj wszystkie

parametry
Imię Typ Opis Projektu
onFinish funkcjonować Oddzwanianie do obsługi zdarzenia otrzymania zgody. zostanie wywołana po otrzymaniu i przetworzeniu zgody.
Powrót

Brak wartości zwracanej.

Przykład
func onFinish() {
    print("Notification: New consent was received")
}

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


ZOBACZ

parametry
Imię Typ Opis Projektu
onCmpLayerOpen funkcjonować Oddzwanianie, gdy warstwa zgody musi być otwarta.
isCached Boolean Jeśli ma wartość TRUE, żądanie zostanie zapisane w pamięci podręcznej, a odpowiedź zostanie zapisana
Powrót

Brak wartości zwracanej.

Przykład
@objc func checkCmpLayer() {
    print("Checking need for consent.")

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


checkAndOpenConsentLayer


Sprawdza, czy wymagana jest zgoda użytkownika, i jeśli tak, otwiera interfejs warstwy zgody.

parametry
Brak.
Powrót

Brak wartości zwracanej.

Przykład
@objc func checkAndOpenConsentLayerAction() {
    cmpManager?.checkAndOpenConsentLayer()
}


zgoda wymagana dzisiaj

Sprawdza, czy dzisiaj zażądano warstwy zgody.

parametry
Brak.
Powrót

PRAWDA, jeśli zgoda użytkownika została już poproszona dzisiaj.

W przeciwnym razie FAŁSZ.

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


wyłącz listę celów

Wyłącza listę celów i aktualizuje wyrażoną zgodę.

parametry
Imię Typ Opis Projektu
purposes Szyk Lista identyfikatorów celów do wyłączenia.
onFinish funkcja (opcjonalnie) Oddzwanianie do obsługi zdarzenia otrzymania zgody. zostanie wywołana po otrzymaniu i przetworzeniu zgody.
Powrót

Brak wartości zwracanej.

Przykład
func onFinish() {
    print("Notification: New consent received")
}

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

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

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


wyłącz listę dostawców

Wyłącza listę dostawców i aktualizuje wyrażoną zgodę.

parametry
Imię Typ Opis Projektu
vendors Szyk Lista identyfikatorów dostawców do wyłączenia.
onFinish funkcja (opcjonalnie) Wywołanie zwrotne dotyczące obsługi zdarzenia otrzymanej zgody. Zostanie wywołany, gdy zgoda zostanie otrzymana i przetworzona.
Powrót

Brak wartości zwracanej.

Przykład
func onFinish() {
    print("Notification: New consent received")
}

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

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

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


włącz listę celów

Włącza listę celów i aktualizuje wyrażoną zgodę.

parametry
Imię Typ Opis Projektu
purposes Szyk Lista identyfikatorów celów do włączenia.
onFinish funkcja (opcjonalnie) Wywołanie zwrotne dotyczące obsługi zdarzenia otrzymanej zgody. Zostanie wywołany, gdy zgoda zostanie otrzymana i przetworzona.
Powrót

Brak wartości zwracanej

Przykład
func onFinish() {
    print("Notification: New consent received")
}

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

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

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


włącz listę dostawców

Włącza listę dostawców i aktualizuje udzieloną zgodę.

parametry
Imię Typ Opis Projektu
vendors Szyk Lista identyfikatorów dostawców do włączenia.
onFinish funkcja (opcjonalnie) Wywołanie zwrotne dotyczące obsługi zdarzenia otrzymanej zgody. iZostanę wezwany po otrzymaniu i przetworzeniu zgody.
Powrót

Brak wartości zwracanej.

Przykład
func onFinish() {
    print("Notification: New consent received")
}

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

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

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


eksportCmpString

Eksportuje bieżący ciąg CMP reprezentujący preferencje dotyczące zgody użytkownika. Dostęp do tej metody jest statyczny. 

parametry
Brak.
Powrót

Ciąg zakodowany w standardzie CMP base64.

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


pobierzWszystkie cele

Zwraca identyfikatory wszystkich celów.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich celów.

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


pobierz listę wszystkich celów

Zwraca listę identyfikatorów wszystkich celów dla danego CMP.

parametry
Brak.
Powrót

Lista zawierające wszystkie identyfikatory celów.

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


getAllVendors

Zwraca identyfikatory wszystkich dostawców dla danego CMP.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich dostawców.

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


pobierz listę wszystkich dostawców

Zwraca listę identyfikatorów wszystkich dostawców dla danego CMP.

parametry
Brak.
Powrót

Lista zawierający wszystkie identyfikatory dostawców.

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


pobierzCiąg zgody

Zwraca ciąg znaków z ostatnią wyrażoną zgodą.

parametry
Brak.
Powrót

Ciąg znaków z ostatnią zgodą potwierdzoną przez użytkownika.

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

getDisabledCele

Zwraca identyfikatory wszystkich wyłączonych celów dla danego CMP.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich wyłączonych celów.

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


getDisabledVendors

Zwraca identyfikatory wszystkich wyłączonych dostawców dla danego CMP.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich wyłączonych dostawców.

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


getEnabledCele

Zwraca identyfikatory wszystkich włączonych dostawców dla danego CMP.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich włączonych dostawców.

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


getEnabledPurposeList

Zwraca listę identyfikatorów wszystkich włączonych celów dla danego CMP.

parametry
Brak.
Powrót

Lista zawierający identyfikatory wszystkich włączonych celów.

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


getEnabledVendors

Zwraca identyfikatory wszystkich włączonych dostawców dla danego CMP.

parametry
Brak.
Powrót

Ciąg rozdzielany przecinkami zawierający identyfikatory wszystkich włączonych dostawców.

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


getEnabledVendorList

Zwraca listę wszystkich włączonych identyfikatorów dostawców dla danego CMP.

parametry
Brak.
Powrót

Lista zawierający identyfikatory wszystkich włączonych dostawców.

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


pobierz GoogleACString

Pobiera ciąg identyfikatora dodatkowej zgody Google („addtlConsent”) ustawiony przez consent manager.

Aby uzyskać więcej informacji, sprawdź Specyfikacja techniczna dodatkowej zgody Google.  

parametry
Brak.
Powrót

Lista zawierający identyfikatory wszystkich włączonych dostawców.

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


pobierz USPrivacyString

Pobiera ciąg znaków prywatności w USA. Ten amerykański ciąg znaków prywatności to plik cookie przechowujący informacje o dokonanych ujawnieniach i wyborach wybranych przez osobę odwiedzającą witrynę w zakresie jej praw konsumenckich.

parametry
Brak.
Powrót

Ciąg znaków z danymi dotyczącymi prywatności w USA ustawionymi przez consentmanager.

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


ma zgodę

Sprawdza, czy użytkownik wyraził już zgodę. Warstwa zgody może mieć opcję zamknięcia warstwy. W takim przypadku użytkownik nie wyraził zgody.

parametry
Brak.
Powrót

Ciąg znaków z danymi dotyczącymi prywatności w USA ustawionymi przez consentmanager.

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


maCelowązgodę

Sprawdza, czy identyfikator celu jest włączony na podstawie zgody użytkownika.

parametry
Imię Typ Opis Projektu
purposeId sznur identyfikator celu
Powrót

PRAWDA jeśli

  • użytkownik wyraził zgodę na określony cel LUB
  • z jakiegokolwiek powodu związanego ze słabym połączeniem internetowym lub jego brakiem na urządzeniu, nie można było uzyskać zgody na ten cel. Proszę zapoznać się z withErrorListener, aby poradzić sobie z tymi warunkami podczas uruchamiania aplikacji, szczególnie w przypadku nowych użytkowników, którzy nie wyrazili jeszcze żadnej zgody

W przeciwnym razie FAŁSZ.

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


mazgodędostawcy

Sprawdza, czy identyfikator dostawcy jest włączony na podstawie zgody użytkownika.

parametry
Imię Typ Opis Projektu
vendorId sznur identyfikator sprzedawcy
Powrót
  • użytkownik wyraził zgodę określonemu dostawcy LUB
  • z jakiegokolwiek powodu związanego ze słabym połączeniem internetowym lub jego brakiem na urządzeniu, nie udało się uzyskać zgody sprzedawcy. Proszę zapoznać się z withErrorListener, aby poradzić sobie z tymi warunkami podczas uruchamiania aplikacji, szczególnie w przypadku nowych użytkowników, którzy nie wyrazili jeszcze żadnej zgody

W przeciwnym razie FAŁSZ.

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

importCmpString

Importuje ciąg CMP reprezentujący preferencje dotyczące zgody użytkownika. Ciąg musi być zakodowany w formacie Base64

parametry
Imię Typ Opis Projektu
ciąg zgody  sznur Ciąg zakodowany w formacie Base64 reprezentujący zgodę
zakończenieHandler funkcja (opcjonalnie) Procedura obsługi zakończenia wywołania zwrotnego do metody.
Powrót

Brak.

Przykład
let cmpString = "YourBase64EncodedConsentStringHere"

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

cmpManager.importCmpString(cmpString, completion: completionHandler)


zainicjować

Funkcja inicjalizacji zainicjuje warstwę zgody i automatycznie sprawdzi, czy użytkownik potrzebuje zgody, czy nie. Ta funkcja ostatecznie otworzy warstwę zgody i wejdzie w interakcję z interfejsem Apple Tracking Transparency API, aby poprosić użytkownika o zgodę

parametry
Imię Typ Opis Projektu
cmpConfig Konfiguracja Cmp Do obiektu CmpConfig przekazywane są informacje dotyczące identyfikatora aplikacji, domeny, nazwy aplikacji i języka (opcjonalnie)
Powrót

Obiekt CMMPManage.

Przykład
// Example of a default implementation of the SDK.

class ViewController: UIViewController {

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

  override func viewDidLoad() {

      super.viewDidLoad()

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

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

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


jest wymagana zgoda

parametry
Brak.
Powrót

PRAWDA, jeśli użytkownik musi wyrazić zgodę

W przeciwnym razie FAŁSZ

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


OtwórzWidok

Wymusza otwarcie widoku internetowego warstwy zgody CMP.

parametry
Brak.
Powrót

Brak wartości zwracanej

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


odrzuć wszystko

parametry
Imię Typ Opis Projektu
onFinish funkcjonować Opcjonalny. Wywołanie zwrotne dotyczące obsługi zdarzenia otrzymanej zgody. zostanie wywołany, gdy zgoda zostanie otrzymana i przetworzona.
Powrót

Brak wartości zwracanej

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

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


zresetuj

Resetuje wszystkie właściwości do wartości domyślnych.

parametry
Brak.
Powrót

Brak wartości zwracanej

Przykład
CMPManager.reset()

z CloseListener


Dodaje bliskiego słuchacza, który będzie otrzymywać powiadomienia, gdy warstwa zgody zostanie zamknięta.

parametry
Imię Typ Opis Projektu
closeListener funkcjonować Wywołanie zwrotne, które zostanie wywołane po zamknięciu warstwy zgody.
Powrót

Narzędzie CMPConsent

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

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


z OpenListenerem

Dodaje otwartego odbiornika, który będzie otrzymywać powiadomienia o otwarciu warstwy zgody.

parametry
Imię Typ Opis Projektu
openListener funkcjonować Wywołanie zwrotne, które zostanie wywołane po otwarciu warstwy zgody
Powrót

Narzędzie CMPConsent

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

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

za pomocąErrorListener

Dodaje detektor błędów, który będzie otrzymywać powiadomienia o wystąpieniu błędu.

parametry
Imię Typ Opis Projektu
errorListener funkcjonować Wywołanie zwrotne w celu dodania akcji w przypadku wystąpienia błędu.
Powrót

Narzędzie CMPConsent

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

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

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


z OnCMMPNotOpenedListener

Dodaje wywołanie zwrotne nieotwarte Cmp, aby otrzymać powiadomienie, gdy warstwa zgody nie otwiera się. Najczęstszym powodem jest to, że użytkownik wyraził już zgodę.

parametry
Imię Typ Opis Projektu
openListener funkcjonować Callback, który zostanie wywołany, gdy warstwa zgody nie zostanie otwarta. 
Powrót

Narzędzie CMPConsent

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

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


z OnCmpButtonClickedCallback

Ustawia wywołanie zwrotne w celu otrzymywania powiadomień, gdy użytkownik kliknie przycisk w celu zamknięcia warstwy zgody.

parametry
Imię Typ Opis Projektu
openListener funkcjonować Wywołanie zwrotne, które zostanie wywołane ze zdarzeniem CmpButtonEvent wskazującym, który przycisk został naciśnięty.
Powrót

Narzędzie CMPConsent

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

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

z blokiem konfiguracji CmpViewControllerConfiguration

Dostosuj moduł zgody UIViewController.

parametry
Imię Typ Opis Projektu

configurationBlock

Blok konfiguracyjny CmpViewController

Dostosuj warstwę zgody

Kontroler UIView.

Powrót

Narzędzie CMPConsent

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


z blokiem CmpViewConfigurationBlock

Dostosuj UiView modułu zgody.

parametry
Imię Typ Opis Projektu

configurationBlock

CmpUIViewConfigurationBlock

Dostosuj warstwę zgody

UiView

Powrót

Narzędzie CMPConsent

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

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


za pomocą aktualizacji GoogleConsent

Pobiera stan trybu uzyskiwania zgody Google. 

parametry
Imię Typ Opis Projektu

consentMap

[sznur: sznur]?

Stan zgody
Powrót

Narzędzie CMPConsent

Przykład
cmpConsentTool = CMPConsentTool(cmpConfig: cmpConfig)
    .withUpdateGoogleConsent(onCmpUpdateGoogleConsent)

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

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

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

    Analytics.setConsent(firebaseConsentMap)
}

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

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

 

Powrót do góry