Aller au contenu principal

Android TV

Obtenir le SDK AppConsent TV

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

Déclaration du repository

Gradle <6.8

Dans le fichier build.gradle à la racine de votre projet, ajoutez ce qui suit :

repositories {
...
maven {
url "https://artifactory.datalf.chat/artifactory/app-consent-v2-release"
}
// Pour tester TCFv2.2
maven {
url "https://artifactory.datalf.chat/artifactory/appconsent-staging"
}
}

Gradle >=6.8

Dans votre fichier settings.gradle, à la racine de votre projet, ajoutez ce qui suit :

dependencyResolutionManagement {
...
repositories {
...
maven {
url "https://artifactory.datalf.chat/artifactory/app-consent-v2-release"
}
// Pour tester TCFv2.2
maven {
url "https://artifactory.datalf.chat/artifactory/appconsent-staging"
}
}
}

Intégration de la librairie

Dans le build.gradle de votre module ajoutez ce qui suit :

dependencies { 
implementation 'com.sfbx.appconsent:appconsent-tv:${currentTvVersion}'
}

Où la currentTvVersion = 1.1.48

Pour tester la nouvelle implémentation de TCF2.2, merci d'utiliser cette dépendance
dependencies { 
implementation("com.sfbx.appconsent:appconsent-tv-staging:4.0.0")
}

Comment utiliser AppConsent

1. Obtenir votre AppKey depuis AppConsent : https://app.appconsent.io

GetAppkey

2. Créez AppConsentTV

import com.sfbx.appconsent.tv.AppConsentTV

class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val appConsent = AppConsentTV(
context = this,
appKey = "YOUR_APP_KEY"
) {
it.presentNotice(false)
}
}
}
Pour tester la nouvelle intégration de TCF2.2, merci d'utiliser cet extrait de code
import com.sfbx.appconsent.tv.listener.OnPresentNoticeListener

class MainActivity : FragmentActivity() {

private lateinit var binding: ActivityMainBinding

private var appConsent: com.sfbx.appconsent.AppConsent? = null
private var appKey: String = "{APP_KEY}"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

/*
Permet de savoir si le SDK a dors et déjà été initialisé
*/
if (!com.sfbx.appconsent.tv.AppConsent.isSdkInitialized()) {
com.sfbx.appconsent.tv.AppConsent.sdkInitialize(
appKey = appKey,
) {
/*
Utilisez l'instance reçue par le callback onReady
Celle-ci a été initialisée avec succès
*/
appConsent = it

/*
S'enregistre au callback de la CMP pour savoir quand l'utilisateur
aura donné son consentement, ou bien si une erreur survînt
*/
it.setOnPresentNoticeListener(object : OnPresentNoticeListener {
override fun presentConsentGiven() {
/*
L'utilisateur a donné son consentement
*/
}

override fun presentConsentError(error: Throwable?) {
/*
Une erreur s'est produite
*/
}
})
/*
Essaye d'afficher la CMP selon certaines règles.
*/
it.tryDisplayNotice(false).takeIf { !it }?.let {
/*
L'utilisateur a déjà donné son consentement;
L'utilisateur ne fait pas partie d'une zone sujet à l'application des RGPD;
etc.
*/
Toast.makeText(
this@MainActivity.applicationContext,
"La CMP ne s'est pas affiché, car elle n'avait pas à le faire (la region de l'utilisateur, pas besoin de faire de mise à jour, etc.)",
Toast.LENGTH_SHORT
).show()
}
}
}else{
if (appConsent == null) {
/*
Permet de récupérer l'instance de AppConsent ou null si elle n'a pas encore été instancié par exemple
*/
appConsent = com.sfbx.appconsent.tv.AppConsent.getInstance()
}
}
}
}

3. Utilisez ensuite l'objet appConsent

  • Vérifier si l'utilisateur a donné son consentement
appConsent.consentGiven()

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

  • Consent listener
Ajout d'un Listener
appConsent.addNoticeListener(object : AppConsentNoticeListener { 
override fun onConsentGiven() {
// ...
}

override fun onError(error: AppConsentError) {
// ...
}
})
Retirer le Listener
appConsent.removeNoticeListener(listener)

Chaque fois qu'un consentement est mis à jour, un nouvel événement sera déclenché dans AppConsentNoticeListener

  • Affichage de la notice de la CMP
appConsent.presentNotice(false) // Affiche la notice de la CMP uniquement si requis
appConsent.presentNotice(true) // Force l'affichage de la notice de la CMP
info

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

  • Consentement autorisé
appConsent.consentableAllowed(1,0)

Renvoie true si le consentement avec id = 1 et consentableType=0 est autorisé, false autrement. L'identifiant id à passer est l'iabId de votre purpose et consentableType est le type, par exemple : purpose = 0.

  • Stack autorisée
appConsent.stackAllowed(1)

Retourne true si le stack avec id = 1 est autorisé, false sinon.

  • Vendor autorisé
appConsent.vendorAllowed(1)

Retourne true si le vendor avec id = 1 est autorisé, false sinon.

  • Définition du statut du consentement
appConsent.setConsentableConsents(
mapOf(1 to ConsentStatus.ALLOWED, 2 to ConsentStatus.DISALLOWED),
object : AppConsentSetConsentableConsentsCallback {
override fun onSuccess() {
// ...
}

override fun onError(t: Throwable) {
// ...
}
}
)

Définit le statut des consentements, l'enregistre et le renvoie au serveur.

  • Vérification des mises à jour
appConsent.checkForUpdate(object : AppConsentUpdateCallback {
override fun onResult(updated: Boolean) {
// ...
}

override fun onError(t: Throwable?) {
// ...
}
})

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

  • Clear consents
appConsent.clearConsent()

Efface le consentement sur le device, mais pas sur le serveur.

  • Définir les données externes
val map = mapOf<String, Any>("externalId" to "abze23", "otherData" to "{\"name\": \"test\"}")
appConsent.setExternalData(map)

Définit les données externes et les envoie au serveur.

  • Obtention des données externes
val map: Map<String, Any> = appConsent.getExternalData()

4. Récupération des consentements

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