Aller au contenu principal

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 :

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

Là où currentUIV3Version = 2.0.3

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

GetAppkey

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 truesi 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 :

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

Là où currentUIV3Version = 2.0.3

  • 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