Android & AndroidTV: Implementación básica

Android & AndroidTV: Implementación básica

Implementación básica en Android

Para implementar la versión Android el primer paso es importar la librería sibbo-cmp-android-library-inapp.aar que le proporcionamos, en el proyecto de Android Studio:

- La copiamos a /app/libs/
- En el gradle del proyecto debemos añadir lo siguiente (si no existe):

  1. buildscript {
  2.     ext.kotlin_version = '1.8.10'
  3.     repositories {
  4.         google()
  5.         jcenter()
  6.     }
  7.     dependencies {
  8.           ....
  9.           ....
  10.           classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version 
  11.      }
  12. }

El siguiente paso es  añadir al inicio de gradle app (si no existe):
  1. apply plugin: 'com.android.application'
  2. apply plugin: 'kotlin-android'

y como dependencia:
  1. implementation 'androidx.appcompat:appcompat:1.6.1'
  2. implementation 'androidx.preference:preference-ktx:1.2.0'
  3. implementation 'androidx.core:core-ktx:1.10.1'
  4. implementation 'com.google.code.gson:gson:2.9.0'
  5. implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
  6. implementation ‘androidx.webkit:webkit:1.7.0'
  7. implementation files(‘libs/libs/sibbo-cmp-android-library-inapp.aar’)

En el directorio assets de la aplicación se debe de crear una carpeta llamada web y dentro de esta otra llamada src -> assets/web/src. En esta ruta debe crear un fichero llamado index.html
con el siguiente código:
  1. <html>
  2. <head>
  3.     <meta charset="UTF-8" />
  4.     <meta name="viewport"
  5.           content="width=device-width, user-scalable=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
  6.     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7.     <title>Sibbo</title>
  8.     <script src="https://cmp.sibbo.net/v2.2/sibbo-cmp-core.js" charset="utf-8"></script>
  9.     <script src="{{URL}}"  charset="utf-8"></script>
  10.     <script src="js/main.js"></script>
  11. </head>
  12. <body>
  13. </body>
  14. </html>

Hay que sustituir la URL {{URL}} por la URL que le proporcionaremos y que lleva la configuración del CMP.

Es obligatorio añadir a la app que alberga el CMP, un enlace o botón con el texto Cookies o Configuración de cookies, que dispara el método
  1. CMP.CMP.tryShowConsentTool(true);
Este método reflotará el CMP.

Existe un listener CMP.setOnTryOpenListener, ver apartado Métodos en Android / AndroidTV, que retorna true si se ha mostrado la interfaz de consentimiento y false si no se ha mostrado.

Para hacer uso de la librería en el Activity principal de la App hay que importarla e inicializar el componente del CMP, en el onCreate como se indica:

Ejemplo en Kotlin

  1. import com.sibboventures.sibbocmp2.ConsentHelper

  2. // El primer parámetro es el contexto de la actividad
  3. // El segundo parámetro showOnInit indica si se desea intentar abrir el CMP al inicializarlo, su valor por default es true
  4. val CMP: ConsentHelper = ConsentHelper(YourContext, showOnInit: true)

  5. // Listeners opcionales
  6. CMP.setOnTryOpenListener { success ->
  7.       // Your code
  8. }

  9. CMP.setOnCloseListener {
  10.       // Your code
  11. }

  12. // Se puede llamar al método para forzar la apertura del CMP
  13. CMP.tryShowConsentTool(true) 

Ejemplo en Java

  1. import com.sibboventures.sibbocmp2.ConsentHelper

  2. // El primer parámetro es el contexto de la actividad
  3. // El segundo parámetro showOnInit indica si se desea intentar abrir el CMP al inicializarlo, su valor por default es true
  4. private ConsentHelper CMP = new ConsentHelper(YourContext, true);

  5. // Listeners opcionales
  6. CMP.setOnTryOpenListener( success -> {
  7.       // Your code
  8. });

  9. CMP.setOnCloseListener ( ( ) -> {
  10.       // Your code
  11. });

  12. // Se puede llamar al método tryShowConsentTool para forzar la apertura del CMP
  13. CMP.tryShowConsentTool(true); 

En el código anterior se crea el objeto de la clase ConsentHelper y se le pasa como argumento el contexto de la Aplicación y opcionalmente un boolean que indica si el CMP debe intentar mostrarse al inicializarse, por defecto su valor es true. 

Siempre hay que llamar a 
  1. CMP.tryShowConsentTool(false); 
 al inicio para que se muestre la interfaz del CMP si fuera necesario (cadena de consentimiento obsoleta, por ejemplo).

No es necesario dar permisos de escritura ni almacenamiento, pero la librería, al ser externa de su app, hay que darle permisos de proguard para que en la compilación y ofuscación no pierda las rutas de escritura ya que las preferencias se guardan en el paquete de la app principal.

En resumen, hay que añadir el root del sdk al proguard-rules: 
  1. -keep interface com.sibboventures.** { *; }
  2. -keep class com.sibboventures.** { *; }

Para la integración del CMP con la publicidad programática vea el apartado Métodos en Android / AndroidTV.

Para implementar el CMP en Android debe hacernos llegar el Package name de la app. De este modo podremos incluirla a nuestra whitelist. De lo contrario, al finalizar el proceso de implementación, recibirá un mensaje en la consola de Android Studio indicándole que la aplicación no está validada.

Implementación básica en AndroidTV

Para implementar la versión Android TV el primer paso es importar la librería sibbo-cmp-android-library-inapp.aar que le proporcionamos, en el proyecto de Android Studio:

- La copiamos a /app/libs/
- En el gradle del proyecto debemos añadir lo siguiente (si no existe):

  1. buildscript {
  2.     ext.kotlin_version = '1.8.10'
  3.     repositories {
  4.         google()
  5.         jcenter()
  6.     }
  7.     dependencies {
  8.           ....
  9.           ....
  10.           classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version 
  11.      }
  12. }

El siguiente paso es  añadir al inicio de gradle app (si no existe):
  1. apply plugin: 'com.android.application'
  2. apply plugin: 'kotlin-android'

    y como dependencia:
    1. implementation 'androidx.appcompat:appcompat:1.6.1'
    2. implementation 'androidx.preference:preference-ktx:1.2.0'
    3. implementation 'androidx.core:core-ktx:1.10.1'
    4. implementation 'com.google.code.gson:gson:2.9.0'
    5. implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
    6. implementation ‘androidx.webkit:webkit:1.7.0'
    7. implementation files(‘libs/libs/sibbo-cmp-android-library-inapp.aar’)

      En el directorio assets de la aplicación se debe de crear una carpeta llamada web y dentro de esta otra llamada src -> assets/web/src. En esta ruta debe crear un fichero llamado index.html
      con el siguiente código:

      1. <html>
      2. <head>
      3.     <meta charset="UTF-8" />
      4.     <meta name="viewport"
      5.           content="width=device-width, user-scalable=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
      6.     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
      7.     <title>Sibbo</title>
      8.     <script src="https://cmp.sibbo.net/v2.2/sibbo-cmp-core-tv.js" charset="utf-8"></script>
      9.     <script src="{{URL}}"  charset="utf-8"></script>
      10.     <script src="js/main.js"></script>
      11. </head>
      12. <body>
      13. </body>
      14. </html>

      Hay que sustituir la URL {{URL}} por la URL que le proporcionaremos y que lleva la configuración del CMP.

      Es obligatorio añadir a la app que alberga el CMP, un enlace o botón con el texto Cookies o Configuración de cookies, que dispara el método
      1. CMP.CMP.tryShowConsentTool(true);
      Este método reflotará el CMP.

      Existe un listener CMP.setOnTryOpenListener, ver apartado Métodos en Android / AndroidTV, que retorna true si se ha mostrado la interfaz de consentimiento y false si no se ha mostrado.

      Para hacer uso de la librería en el Activity principal de la App hay que importarla e inicializar el componente del CMP, en el onCreate como se indica:

      Ejemplo en Kotlin

      1. import com.sibboventures.sibbocmp2.ConsentHelper

      2. // El primer parámetro es el contexto de la actividad
      3. // El segundo parámetro showOnInit indica si se desea intentar abrir el CMP al inicializarlo, su valor por default es true
      4. val CMP: ConsentHelper = ConsentHelper(YourContext, showOnInit: true)

      5. // Listeners opcionales
      6. CMP.setOnTryOpenListener { success ->
      7.       // Your code
      8. }

      9. CMP.setOnCloseListener {
      10.       // Your code
      11. }

      12. // Se puede llamar al método para forzar la apertura del CMP
      13. CMP.tryShowConsentTool(true) 

      Ejemplo en Java

      1. import com.sibboventures.sibbocmp2.ConsentHelper

      2. // El primer parámetro es el contexto de la actividad
      3. // El segundo parámetro showOnInit indica si se desea intentar abrir el CMP al inicializarlo, su valor por default es true
      4. private ConsentHelper CMP = new ConsentHelper(YourContext, true);

      5. // Listeners opcionales
      6. CMP.setOnTryOpenListener( success -> {
      7.       // Your code
      8. });

      9. CMP.setOnCloseListener ( ( ) -> {
      10.       // Your code
      11. });

      12. // Se puede llamar al método tryShowConsentTool para forzar la apertura del CMP
      13. CMP.tryShowConsentTool(true); 
      En el código anterior se crea el objeto de la clase ConsentHelper y se le pasa como argumento el contexto de la Aplicación y opcionalmente un boolean que indica si el CMP debe intentar mostrarse al inicializarse, por defecto su valor es true. 

      Siempre hay que llamar a 
      1. CMP.tryShowConsentTool(false); 
       al inicio para que se muestre la interfaz del CMP si fuera necesario (cadena de consentimiento obsoleta, por ejemplo).

      No es necesario dar permisos de escritura ni almacenamiento, pero la librería, al ser externa de su app, hay que darle permisos de proguard para que en la compilación y ofuscación no pierda las rutas de escritura ya que las preferencias se guardan en el paquete de la app principal.

      En resumen, hay que añadir el root del sdk al proguard-rules: 
      1. -keep interface com.sibboventures.** { *; }
      2. -keep class com.sibboventures.** { *; }

      Para la integración del CMP con la publicidad programática vea el apartado Métodos en Android / AndroidTV.

      Para implementar el CMP en Android debe hacernos llegar el Package name de la app. De este modo podremos incluirla a nuestra whitelist. De lo contrario, al finalizar el proceso de implementación, recibirá un mensaje en la consola de Android Studio indicándole que la aplicación no está validada.