Infos
Menu

[Android] 2. Documentation de l'API

 CMPManager La classe fournit des méthodes pour gérer le consentement de l'utilisateur pour le traitement et le suivi des données. Cette documentation couvre les principales méthodes disponibles pour l'intégration d'applications mobiles.

Tous les exemples mentionnés ci-dessous ont été extraits et peuvent être trouvés sur notre Application de démonstration.

S'il vous plaît, vérifiez le méthodes obsolètes au cas où vous intégrez déjà la v3 de notre SDK CMP.

Initialisation

UrlConfig()

Définit la configuration de l'URL pour le Consent Manager. Doit être initialisé avec la valeur ci-dessous et transmis au getInstance méthode. 

Paramètres:

  • id: String - L'ID de code récupéré à partir de votre tableau de bord CMP
  • domain: String - Le domaine de gestion du consentement, également récupéré à partir de votre tableau de bord CMP
  • language: Chaîne - Le code de langue (par exemple, « EN », « IT », « DE », etc.)
  • appName: String - Le nom de votre application, utilisé uniquement à des fins de reporting
  • jsonConfig: Objet JSON - Facultatif, utilisé uniquement dans des cas particuliers, ne l'utilisez pas à moins que cela ne soit clairement indiqué sur votre tableau de bord CMP avec les autres paramètres ci-dessus. 
  • noHash: booléen - Empêche l'utilisation d'un hachage (#) dans l'URL générée et chargée par la vue Web pour transmettre le consentement 

Exemple :

val urlConfig = UrlConfig(
    id = "YOUR_CODE_ID_HERE",
    domain = "delivery.consentmanager.net",
    language = "EN",
    appName = "CMDemoAppKotlin"
)

setActivity()

Définit l'activité qui présentera la couche de consentement. Il doit s'agir d'une ComponentActivity

Paramètres:

  • viewController: ComponentActivity - L'activité où la couche de consentement sera présentée.

Retours: Aucun

Exemple :

CMPManager.shared.setPresentingViewController(self)

 

Paramètres de ConsentLayerUIConfig()

  • position: Stratégie de positionnement des boîtes de dialogue (par défaut : Position.FULL_SCREEN):
    • Position.FULL_SCREEN - Couvre tout l'écran
    • Position.HALF_SCREEN_TOP - Moitié supérieure de l'écran
    • Position.HALF_SCREEN_BOTTOM - Moitié inférieure de l'écran
    • Position.custom(width: Int, height: Int) - Dimensions personnalisées en pixels
  • backgroundStyle: Apparence de l'arrière-plan (par défaut : `BackgroundStyle.dimmed(Color.BLACK, 0.5f))
  • cornerRadius: Float - Rayon du coin en dp (par défaut : 0f).
    • Note: Nécessite la version 3.7.0 ou supérieure du SDK pour un découpage correct du contenu WebView
  • respectsSafeArea: Booléen - Indique s'il faut respecter les marges de l'interface utilisateur du système (par défaut : true).
    • NoteSur Android 11+ (API 30), paramétrer false permet aux boîtes de dialogue de s'étendre sous les barres système
  • isCancelable: Booléen - Indique si la boîte de dialogue peut être fermée (par défaut : true)
  • darkMode: Booléen - Activer le style du mode sombre (par défaut : false)
//Example - Custom Position

val displayMetrics = resources.displayMetrics
val customPosition = ConsentLayerUIConfig.Position.custom(
    displayMetrics.widthPixels,
    (displayMetrics.heightPixels * 0.8).toInt() // 80% screen height
)

val webViewConfig = ConsentLayerUIConfig(
	position = customPosition,
	cornerRadius = 20f,
	respectsSafeArea = true
)

getUserStatus()

Renvoie un aperçu détaillé de l'état de consentement et des préférences actuels de l'utilisateur. Cette méthode fournit des informations complètes sur les choix de consentement de l'utilisateur, notamment son état de consentement global, les autorisations individuelles des fournisseurs, les consentements spécifiques à un objectif et les chaînes de consentement pertinentes.

Paramètres:

  • Aucun

Retours:

Type de retour : CMPUserStatusResponse objet, expliqué dans le code ci-dessous. 

Exemple :

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)

estConsentementRequis()

Paramètres: Aucun

Retour:

  • completion: (Booléen) -> Unité - Une fermeture appelée avec le résultat, soit true si aucun consentement valide n'a été trouvé sur l'appareil ou false autrement.

Exemple :

cmpManager.isConsentRequired { needsConsent ->
	toastMessage = "Needs Consent: $needsConsent"
}

vérifierEtOuvrir()

Vérifie auprès du serveur si le consentement est requis et ouvre la couche de consentement si nécessaire. Cela effectuera un appel réseau vers nos serveurs via le WKWebView créé dans notre SDK, consommer une page vue dans le processus. Cet appel réseau enverra un message à notre backend via JavaScript, qui détectera si l'appareil a un consentement valide ou non, ce qui déterminera à son tour si la couche de consentement doit être affichée ou non.  

Paramètres:

  • jumpToSettings:Une valeur booléenne pour déterminer si la couche de consentement affichée mènera automatiquement à la page où un contrôle plus précis sur les consentements donnés par les utilisateurs, leur permettant d'affiner leurs choix (lorsqu'elle est définie sur true) ou l'écran initial par défaut avec les boutons (lorsqu'il est réglé sur false ou supprimé).
  • completion:Une fermeture appelée lorsque l'opération est terminée, avec le résultat, soit true or false.

Retours: Aucun

Exemple :

cmpManager.checkAndOpen { result ->
    result.onSuccess {
	    toastMessage = "Check and Open Consent Layer operation done successfully."
    }.onFailure { error ->
    	toastMessage = "Check and Open Consent Layer operation failed with error: $error"
}

forceOpen()

Paramètres:

  • jumpToSettings:Une valeur booléenne pour déterminer si la couche de consentement affichée mènera automatiquement à la page où un contrôle plus précis sur les consentements donnés par les utilisateurs, leur permettant d'affiner leurs choix (lorsqu'elle est définie sur true) ou l'écran initial par défaut avec les boutons (lorsqu'il est réglé sur false ou supprimé).
  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant soit un succès, soit une erreur. 

Retours: Aucun

Exemple :

cmpManager.openConsentLayer { result ->
	result.onFailure { error ->
    	toastMessage = "Error: ${error.message}"
	}
}

exportCMPInfo()

Exporte les informations de consentement actuelles stockées sur l'appareil sous forme de chaîne. Cette méthode récupère la chaîne de consentement de la zone SharedPreferences de l'appareil et la renvoie. Généralement, ces informations sont transmises à importCMPInfo méthode.

Retours: Chaîne - Les informations de consentement exportées

Exemple :

val cmpInfo = CMPManager.shared.exportCMPInfo()
Log.d("Exported CMP info: \(cmpInfo)")

obtenir le statut du mode de consentement de Google()

S'intègre parfaitement au mode Consentement, une technologie Google qui permet la modélisation des conversions et des analyses, permettre aux services de Google de combler les lacunes de données lorsque les utilisateurs ne donnent pas leur consentement. Cette fonction traduit le consentement de l'utilisateur de votre CMP dans un format que Firebase Analytics peut comprendre, vous pouvez donc simplement obtenir le retour de cette méthode et le transmettre à la méthode Firebase .setConsent.

  • Il met ensuite à jour Google Analytics avec le statut de consentement actuel de l'utilisateur.

Paramètres:

  • Aucun

Retours: Map<String, String> - Un tableau de valeurs clés avec les quatre clés du mode de consentement de Google : .analyticsStorage, .adStorage, .adUserData et .adPersonalization, et leurs valeurs respectives en termes de .choiceDoesntExist, .granted or .denied.

Exemple :

val settings = cmpManager.getGoogleConsentModeStatus()
Log.d("CMPDemo", "Google Consent Mode Settings: $settings")
toastMessage = buildString {
  append("Google Consent Settings:")
  settings.forEach { (key, value) ->
	  append("\n$key: $value")
  }
}

obtenir le statut pour un objectif()

Paramètres:

  • id: String - L'ID de l'objectif à vérifier

Retours: UniqueConsentStatus - Une énumération avec les valeurs .choiceDoesntExist si aucun consentement n’a été donné, .granted or .denied.

Exemple :

val purposeStatus = cmpManager.getStatusForPurpose("c53")
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"
}

obtenir le statut du fournisseur()

Paramètres:

  • id: String - L'ID de l'objectif à vérifier

Retours: UniqueConsentStatus - Une énumération avec les valeurs .choiceDoesntExist si aucun consentement n’a été donné, .granted or .denied.

Exemple :

val vendorStatus = cmpManager.getStatusForVendor("s2789")
var message = "Vendor s2789's status: "
switch vendorStatus {
   	case .choiceDoesntExist: message += "No Choice"
    case .granted: message += "Granted"
    case .denied: message += "Denied"
    @unknown default: message += "No Choice"
}

 

accepterTout()

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant un échec ou un succès.

Retours: Aucun

Exemple :

cmpManager.acceptAll { result ->
    result.onSuccess {
	    toastMessage = "All consents accepted"
  	}.onFailure { error ->
		toastMessage = "Error: ${error.message}"
	}
}

acceptPurposes()

Paramètres:

  • purposes: Liste - Une liste d'identifiants d'objectifs à accepter
  • updatePurpose: Booléen - S'il faut mettre à jour les objectifs associés
  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant soit un échec, soit un succès

Retours: Aucun

Exemple :

cmpManager.acceptPurposes(listOf("c52", "c53"), true) { result ->
	  	result.onSuccess {
	  	toastMessage = "Purposes enabled"
  	}.onFailure { error ->
  		toastMessage = "Error: ${error.message}"
    }
}

acceptVendors()

Paramètres:

  • vendors: Liste - Une liste d'identifiants de fournisseurs à accepter
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: Aucun

Exemple :

cmpManager.acceptVendors(listOf("s2790", "s2791")) { result ->
	result.onSuccess {
		toastMessage = "Vendors Enabled"
	}.onFailure { error ->
		toastMessage = "Error: ${error.message}"
	}
}

importerCMPInfo()

Paramètres:

  • cmpString: String - La chaîne CMP à importer
  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant soit un échec, soit un succès

Retours: Aucun

Exemple :

val cmpString = "Q1FERkg3QVFERkg3QUFmR01CSVRCQkVnQUFBQUFBQUFBQWlnQUFBQUFBQUEjXzUxXzUyXzUzXzU0XzU1XzU2XyNfczI3ODlfczI3OTBfczI3OTFfczI2OTdfczk3MV9VXyMxLS0tIw"
cmpManager.importCMPInfo(cmpString) { result ->
	result.onSuccess {
		toastMessage = "Vendors Enabled"
	}.onFailure { error ->
		toastMessage = "Error: ${error.message}"
	}
}

rejeterTout()

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: Aucun

Exemple :

cmpManager.rejectAll { result ->
	result.onSuccess {
		toastMessage = "All consents rejected"
	}.onFailure { error ->
		toastMessage = "Error: ${error.message}"
	}
}

rejeterObjectifs()

Paramètres:

  • purposes: List<String> - Une liste d'identifiants d'objectifs à rejeter
  • updateVendor: Boolean - S'il faut mettre à jour les fournisseurs associés
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: Aucun

Exemple :

cmpManager.rejectPurposes(listOf("c52", "c53"), true) { result ->
    result.onSuccess {
      toastMessage = "Purposes disabled"
    }.onFailure { error ->
      toastMessage = "Error: ${error.message}"
	}
}

rejeter les vendeurs()

Paramètres:

  • vendors: Liste - Une liste d'identifiants de fournisseurs à rejeter
  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant soit un échec, soit un succès

Retours: Aucun

Exemple :

cmpManager.rejectVendors(listOf("s2790", "s2791")) { result ->
	result.onSuccess {
		toastMessage = "Vendors Disabled"
	}.onFailure { error ->
		toastMessage = "Error: ${error.message}"
	}
}

réinitialiserConsentManagementData()

Paramètres:

Aucun

Retours: Aucun

Exemple :

cmpManager.resetConsentManagementData()

Transmission des données de consentement aux SDK tiers

mettre à jour le consentement d'un tiers

Cette méthode gère la transmission automatique des données de consentement aux SDK tiers tels qu'AppsFlyer, AdJust, Branch, Kochava, Singular, AirBridge et Tenjin. Elle fonctionne par introspection/réflexion. Initialisez donc le SDK tiers avec vos identifiants en suivant la stratégie habituelle recommandée par le fournisseur. Notre SDK CMP détectera alors l'instance du SDK 3P et appellera les méthodes nécessaires en arrière-plan. 

 

Événements CMPManagerDelegate

setOnClickLinkCallback

Le SDK fournit un mécanisme de gestion des liens flexible qui permet aux applications de personnaliser la manière dont les URL au sein de la couche de consentement sont gérées. Par défaut, tous les liens s'ouvrent dans la vue Web, mais les applications peuvent intercepter des URL spécifiques pour les gérer en externe si nécessaire.

        cmpManager.setOnClickLinkCallback { url ->
            if (url.contains("google.com")) {
                // Open Google URLs in external browser
                try {
                    startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
                    true // Return true to indicate we handled the URL
                } catch (e: Exception) {
                    Log.e("DemoApp", "Error opening URL: $url", e)
                    false
                }
            } else {
                // Let other URLs load in the WebView
                false
            }
        }

didReceiveConsent(consentement : chaîne, jsonObject : carte )

Cela se déclenche lorsque la couche de consentement a été fermée après que l'utilisateur a mis à jour ses consentements OU lors de l'appel de méthodes qui provoquent des modifications dans les consentements, comme acceptAll, rejectAll, acceptVendors, rejectVendors, etc. Cela signifie que l'utilisateur a accepté ou rejeté certains des consentements, et que ceux-ci ont été correctement enregistrés dans l'appareil.

didShowConsentLayer

Cela se déclenche lorsque la couche de consentement a été effectivement affichée. Cela signifie qu'aucun consentement n'était valide sur l'appareil, il faut donc en collecter un nouveau.

a fermé la couche de consentement


Cela se produit lorsque le SDK a vérifié la nécessité d'un consentement, mais que celui-ci n'était pas nécessaire et que la couche n'était pas affichée. Cela signifie qu'il existe déjà une couche valide dans l'appareil, donc une nouvelle couche n'est pas nécessaire et la couche de consentement ne s'affichera pas.

Erreur de réception

Cela se déclenche lorsque le SDK rencontre une erreur et renvoie son code.

Méthodes déconseillées

Toutes les méthodes ci-dessous sont obsolètes et sera complètement supprimé à partir du SDK de Juillet / 2025 sur. 

checkIfConsentIsRequired()

Paramètres:

  • completion: (Booléen) -> Unité - Une fermeture appelée avec le résultat, soit true or false.

Retours: Aucun

Exemple :

cmpManager.checkIfConsentIsRequired { needsConsent ->
	toastMessage = "Needs Consent: $needsConsent"
}

checkWithServerAndOpenIfNecessary()

Vérifie auprès du serveur si le consentement est requis et ouvre la couche de consentement si nécessaire. Cela effectuera un appel réseau vers nos serveurs via la WebView créée dans notre SDK, consommer une page vue dans le processus. Cet appel réseau enverra un message à notre backend via JavaScript, qui détectera si l'appareil a un consentement valide ou non, ce qui déterminera à son tour si la couche de consentement doit être affichée ou non.  

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée, avec le résultat, soit true or false.

Retours: Aucun

Exemple :

cmpManager.checkWithServerAndOpenIfNecessary { result ->
    result.onSuccess {
	    toastMessage = "Check and Open Consent Layer operation done successfully."
    }.onFailure { error ->
    	toastMessage = "Check and Open Consent Layer operation failed with error: $error"
}

getAllPurposesIDs()

Récupère tous les identifiants d'objectif stockés sur l'appareil, selon les configurations CMP. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste d'identifiants à usage général

Exemple :

val allPurposes = cmpManager.getAllPurposesIDs()
Log.d("All purposes: \(allPurposes)")

getAllVendorsIDs()

Récupère tous les identifiants de fournisseurs stockés sur l'appareil, selon les configurations CMP. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans les SharedPreferences la surface, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste de tous les identifiants de fournisseurs

Exemple :

val allVendors = cmpManager.getAllVendorsIDs()
Log.d("All vendors: \(allVendors)")

getDisabledPurposesIDs()

Récupère les identifiants de toutes les finalités désactivées stockées sur l'appareil, en fonction des configurations CMP et des choix de l'utilisateur. Si l'utilisateur accepte tous les consentements, ce champ sera vide.  Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste d'identifiants d'objectifs désactivés

Exemple :

val disabledPurposes = cmpManager.getDisabledPurposesIDs()
Log.d("Disabled purposes: \(disabledPurposes)")

getDisabledVendorsIDs()

Récupère les identifiants de tous les fournisseurs désactivés stockés sur l'appareil, selon les configurations CMP. Si l'utilisateur accepte tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste d'identifiants de fournisseurs désactivés

Exemple :

val disabledVendors = CMPManager.shared.getDisabledVendorsIDs()
Log.d("Disabled vendors: \(disabledVendors)")

getEnabledPurposesIDs()

Récupère les identifiants de tous les objectifs activés stockés sur l'appareil, selon les configurations CMP. Si l'utilisateur rejette tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste d'identifiants d'objectifs activés

Exemple :

val enabledPurposes = cmpManager.getEnabledPurposesIDs()
Log.d("Enabled purposes: \(enabledPurposes)")

getEnabledVendorsIDs()

Récupère les identifiants de tous les fournisseurs activés stockés sur l'appareil. Si l'utilisateur rejette tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Liste - Une liste des identifiants de fournisseurs activés

Exemple :

val enabledVendors = cmpManager.getEnabledVendorsIDs()
Log.d("Enabled vendors: \(enabledVendors)")

a pour but le consentement ()

Paramètres:

  • id: String - L'ID de l'objectif à vérifier

Retours: Boolean - True si le consentement est donné, false autrement

Exemple :

val hasPurposeConsent = cmpManager.hasPurposeConsent(id: "c53")
Log.d("Has consent for purpose c53: \(hasPurposeConsent)")

aUserChoice()

Vérifie si l'utilisateur a fait un choix concernant les consentements et si ce consentement est stocké sur l'appareil. Cela signifie que l'utilisateur a accepté tous les consentements, les a tous rejetés ou a fait un choix mixte de consentements rejetés et acceptés, en fonction de la conception de la CMP, ce qui peut permettre aux utilisateurs d'autoriser certains consentements et d'en rejeter d'autres. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone SharedPreferences, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Boolean - true si l'utilisateur a fait un choix, false autrement

Exemple :

val hasChoice = cmpManager.hasUserChoice()
print("User has made a choice: \(hasChoice)")

a un consentement du vendeur ()

Paramètres:

  • id: String - L'ID du fournisseur à vérifier

Retours: Boolean - True si le consentement est donné, false autrement

Exemple :

val hasVendorConsent = cmpManager.hasVendorConsent(id: "s2789")
Log.d("Has consent for vendor s2789: \(hasVendorConsent)")

 

 

Retour en haut de la page