Android TCF V2

Obtenir le SDK AppConsent

Pour ajouter le SDK AppConsent à votre projet Android, suivez les étapes ci-dessous :

Dans votre fichier gradle.properties, ajoutez ce qui suit et remplacez ${username} par le nom d'utilisateur fourni et${encrypted_password} par le mot de passe crypté fourni. Veuillez nous contacter, si vous n'avez pas votre ${username} et votre ${encrypted_password} .

appconsent_artifactory_client_username=${username}
appconsent_artifactory_client_password=${encrypted_password}

Dans le fichier build.gradle de votre projet, allprojects/repositories ajoutez ce qui suit :

maven {
url "https://artifactory.datalf.chat/artifactory/app-consent-v2-release"
credentials {
username = "${appconsent_artifactory_client_username}"
password = "${appconsent_artifactory_client_password}"
}
}

Dans votre fichier build.gradle , sous android ajoutez ce qui suit :

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

Toujours dans build.gradle ajoutez ce qui suit :

dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui:${currentUIVersion}'
}

Là où currentUIVersion = 1.1.2

AppConsent utilise androidX Jetpack, il n'est donc pas compatible avec l’applicationsandroid.support

Comment utiliser AppConsent

1 - Obtenez votre AppKey dans AppConsent : https://app.appconsent.io

2 - Créez AppConsentUI

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.sfbx.appconsent.ui.AppConsentUI
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val appConsentUI = AppConsentUI(
context = this,
appKey = "YOUR_APP_KEY",
forceApplyGDPR = true
) {
it.presentNotice(false)
}
}
}

Si forceApplyGDPR est true , il oblige la CMP à s'afficher même si votre pays n'est pas soumis à la RGPD.

La fonction onReady()est appelée lorsque AppConsent a terminé son initialisation. Elle peut éviter les bugs lorsque vous souhaitez présenter une notice juste après la création de l'objet AppConsentUI.

3 - Utilisez ensuite l'objet appConsentUI

Vérifier si l'utilisateur a donné son consentement

appConsentUI.consentGiven()

Retourne true si le consentement est donné, false autrement.

Vérifier si le pays utilisateur est soumis au RGPD

appConsentUI.isSubjectToGDPR()

Retourne true si le pays de l'utilisateur est soumis au RGPD, false autrement.

Consent listener

Ajouter un Listener

appConsentUI.addNoticeListener(object : AppConsentNoticeListener {
override fun onConsentGiven() {
}
override fun onError(error: AppConsentError) {
}
})

Enlever le Listener

appConsentUI.removeNoticeListener(listener)

Chaque fois que le consentement est mis à jour, un nouvel événement sera déclenché dans AppConsentNoticeListener .

Geolocalisation du consent listener

Ajouter la Geolocation Listener

appConsentUI.addGeolocationListener(object : AppConsentLocationListener {
override fun onResult(allowed: Boolean) {
}
override fun onError(error: AppConsentError) {
}
})

Enlever la Geolocation Listener

appConsentUI.removeGeolocationListener(listener)

Chaque fois que le consentement de géolocalisation est mis à jour, un nouvel événement sera déclenché dansAppConsentLocationListener

Afficher la notice CMP

appConsentUI.presentNotice(false) // display CMP notice only if needed
appConsentUI.presentNotice(true) // force to display CMP notice

presentNotice(force : Boolean) est une méthode locale qui ne vérifie que le cache. Voir checkForUpdate() pour récupérer une notice de mise à jour.

Afficher la géolocalisation CMP

appConsentUI.presentGeolocationNotice(false) // display Geolocation CMP only if needed
appConsentUI.presentGeolocationNotice(true) // force to display Geolocation CMP

Consentement à la géolocalisation

appConsentUI.geolocationConsentGiven()

Renvoie true si le consentement à la géolocalisation est donné, false autrement.

Consentement autorisé

appConsentUI.consentableAllowed(1)

Renvoietrue si le consentement avec id = 1est autorisé, false autrement. L'identifiant id à passer est iabId de votre purpose.

Consentement supplémentaire autorisé

appConsentUI.extraConsentableAllowed("O56KePok")

Renvoie true si un consentement supplémentaire est autorisé, false dans le cas contraire. Le paramètre est extraId de votre extra purpose disponible dans AppConsent.

Stack autorisé

appConsentUI.stackAllowed(1)

Retourne true si le stack avec id = 1 est autorisé, false autrement. L'identifiant id à passer est iabId de votre stack.

Vendor autorisé

appConsentUI.vendorAllowed(1)

Retourne true si le vendor avec id = 1 est autorisé, false autrement. L'identifiant id à passer estiabId de votre vendor.

Extra vendor autorisé

appConsentUI.extraVendorAllowed("EHJNieed")

Retournetrue si l'extra vendor est autorisé, false autrement. Le paramètre est extraId de votre extra vendor disponible dans AppConsent.

Définir le statut de consentement

appConsentUI.setConsentableConsents(
mapOf(1 to ConsentStatus.ALLOWED, 2 to ConsentStatus.DISALLOWED),
object : AppConsentSetConsentableConsentsCallback {
override fun onSuccess() {
}
override fun onError(t: Throwable) {
}
}
)

Définissez le statut des consentements, enregistrez-le et envoyez-le au serveur.

Définissez un statut consentement supplémentaire

appConsentUI.setExtraConsentableConsents(
mapOf("EHJNieed" to ConsentStatus.ALLOWED, "O56KePok" to ConsentStatus.DISALLOWED),
object : AppConsentSetConsentableConsentsCallback {
override fun onSuccess() {
}
override fun onError(t: Throwable) {
}
}
)

Définissez un statut de consentement supplémentaire, enregistrez-le et envoyez-le au serveur. Les Ids sont les extraId de votre finalité supplémentaire disponibles dans AppConsent.

Vérifier les mises à jour

appConsentUI.checkForUpdate(object : AppConsentUpdateCallback {
override fun onResult(needUpdate: Boolean) {
if (needUpdate) {
appConsentUI.presentNotice(false)
}
}
override fun onError(t: Throwable?) {
}
})

Vérifiez si le consentement doit être mis à jour (nouvelle version GVL, nouveaux consentements...).

Dans cet exemple, la page d'introduction de la CMP sera affichée après une modification de notice dans AppConsent.

appConsentUI.clearConsent()

Clear consent sur le mobile, mais pas sur le serveur.

GET / SET externalIds

val ids = appConsentUI.externalIds.toMutableMap()
ids["contractId"] = "AZR35G"
appConsentUI.externalIds = ids

GET / SET external ids en cache et l'envoyer au serveur lors de l'ouverture de la notice.

Sauvegarder les external ids

appConsentUI.saveExternalIds(
success = { },
failed = { }
)

Envoyez les external ids en cache au serveur.

Sauvegardez le consentement floating purpose

val floatingPurposes = mapOf("floatingId" to true)
appConsentUI.saveFloatingPurposes(
floatingPurposes,
success = { },
failed = { }
)

Paramétrez le floating purpose consent dans le cache comme une map et envoyez-les au serveur.

Un seul floating purpose sera envoyée à ce moment-là (1.1.0-beta04). Nous faisons correspondre les identifiants donnés avec ceux définis dans AppConsent.

Récupération du consentement floating purpose

appConsentUI.extraFloatingAllowed("floatingId")

Retourne true si le floating purpose est autorisé, false autrement.

Sauvegardez de force un consentement

appConsentUI.save(
onResult = {
},
onError = {
}
)

Forcez le SDK à envoyer des consentements au serveur. Cela peut être utile si vous mettez à jour des externalIds et que vous voulez les mettre à jour sur le serveur.

4 - Récupérez vos consentements

Vos consentements sont enregistrés dans SharedPreferences de votre application. Pour en savoir plus sur les clés utilisées pour sauvegarder vos consentements, veuillez vous référer à la IAB documentation.

Nous mettons également à dispositions une clé pour récupérer les Google Additional Consent IABTCF_AddtlConsent qui renvoie une String.

5 - Xchange

Dans votre build.gradle ajouter ce qui suit :

dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui-xchange:${currentUIVersion}'
}

Là où currentUIVersion = 1.1.0-beta03

Définir les données de l'utilisateur Xchange

appConsentUI.setXchangeUserData(
XChangeUserData.Builder()
.build()
)

Les données de l'utilisateur sont sauvegardées dans le cache, et lorsque l'utilisateur donne son consentement, les données sont envoyées au serveur.

Ajouter une demande de localisation d'un listener

appConsentUI.addRequestLocationListener(object : AppConsentRequestLocationListener {
override fun requestLocation() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ActivityCompat.requestPermissions(
this@MainActivity,
arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
),
REQUEST_PERMISSION_CODE
)
} else {
ActivityCompat.requestPermissions(
this@MainActivity,
arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
),
REQUEST_PERMISSION_CODE
)
}
}
})

Si votre application doit suivre la géolocalisation, vous devez utiliserAppConsentRequestLocation comme ci-dessus.

Huq

Utilisez le SDK Huq.

appConsentUI.startHuq()
appConsentUI.stopHuq()

Smart-Traffik

Utilisez le SDK Smart-Traffik.

appConsentUI.startSmartTraffik() // start Smart-Traffik SDK when user gives his consent
appConsentUI.stopSmartTraffik() // stop Smart-Traffik SDK