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 :

Dans votre fichier global 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 build.gradle , de votre projet android ajoutez ce qui suit :

packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/*.kotlin_module'
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

Dans votre build.gradle ajoutez ce qui suit :

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

Où la currentTvVersion = 1.1.15

Attention

AppConsent utilise androidX Jetpack, il n'est donc pas compatible avec android.supportapplications.


Comment utiliser AppConsent

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

GetAppkey

2. Créez AppConsentTV

import android.app.Activity
import android.os.Bundle
import com.sfbx.appconsent.tv.AppConsentTV

class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val appConsentTV = AppConsentTV(
context = this,
appKey = "YOUR_APP_KEY",
forceApplyGDPR = true,
theme = AppConsentTVTheme.Builder(this)
.iconDrawable(ContextCompat.getDrawable(this, R.drawable.ic_android))
.build()
) {
it.presentNotice(false)
}
}
}
info

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

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

Pour l'instant, vous ne pouvez remplacer le thème et l'icone que par unAppConsentTVTheme personnalisé

3. Utilisez ensuite l'objet appConsentTV

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

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

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

override fun onError(error: AppConsentError) {
// ...
}
})
Retirer le Listener
appConsentTV.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
appConsentTV.presentNotice(false) // Affiche la notice de la CMP uniquement si requis
appConsentTV.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é
appConsentTV.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
appConsentTV.stackAllowed(1)

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

  • Vendor autorisé
appConsentTV.vendorAllowed(1)

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

  • Définition du statut du consentement
appConsentTV.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
appConsentTV.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
appConsentTV.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\"}")
appConsentTV.setExternalData(map)

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

  • Obtention des données externes
val map: Map<String, Any> = appConsentTV.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.