Android
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 :
- Modèle Clear kit de developpement (SDK)
- Modèle Classic kit de developpement (SDK)
dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui-v3:${currentUIV3Version}'
}
Là où currentUIV3Version = 2.0.3
dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui:${currentUIVersion}'
}
Là où currentUIVersion = 1.1.14
Attention
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)
}
}
}
info
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.
- Vérifier si l'utilisateur a activé le LimitedTracking
appConsentUI.sLimitedTrackingEnabled()
Retourne true
si le blocage de tracking pub (limited ad tracking) est actif, false
autrement.
User ID
appConsentUI.getUserId()
Retourne l'advertising id utilisé par Appconsent.
info
Si isLimitedTrackingEnabled() == false, L'ID se un Google ADID autrement ca se un UUID généré aléatoirement.
- 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é dans AppConsentLocationListener
.
- Afficher la notice CMP
appConsentUI.presentNotice(false) // display CMP notice only if needed
appConsentUI.presentNotice(true) // force to display CMP notice
info
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.
A savoir que force: boolean ici si mis a false la notice sera affichée que si le consentement n'a jamais été soumis par l'utilisateur , Si true la notice s'affichera mais sur la page des parameters de notice que le consentement ait deja été donné ou non par l'utilisateur .
- Afficher la CMP de géolocalisation
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,0)
Renvoie true
si le consentement avec id = 1
et consentableType=0
est 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 est 'iabId' de votre vendor.
- Extra vendor autorisé
appConsentUI.extraVendorAllowed("EHJNieed")
Retourne true
si l'extra vendor est autorisé, false
autrement. Le paramètre est extraId
de votre extra vendor disponible dans AppConsent.
- *Tous les consentables autorisés
appConsentUI.allConsentablesAllowed()
Retourne true
si tous les consentables sont autorisés false
autrement.
- Toutes les stacks autorisées
appConsentUI.allStacksAllowed()
Retourne true
si toutes les stacks sont autorisées false
autrement.
- Tous les vendors autorisés
appConsentUI.allVendorsAllowed()
Retourne true
si tous les vendors sont autorisés false
autrement.
- L'utilisateur accepte tout
appConsentUI.userAcceptAll()
Retourne true
si tous les consentables , stacks et vendors sont autorisés false
autrement.
- 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.
- Clear consents
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.
info
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 documentation IAB.
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 :
- Modèle Clear development kit (SDK)
- Modèle Classic development kit (SDK)
dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui-v3:${currentUIV3Version}'
}
Là où currentUIV3Version = 2.0.3
dependencies {
implementation 'com.sfbx.appconsent:appconsent-ui:${currentUIVersion}'
}
Là où currentUIVersion = 1.1.14
- Définir les données de l'utilisateur Xchange
appConsentUI.setXchangeUserData(
XChangeUserData.Builder()
.email("test@sfbx.io")
.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