Información
Content

[IOS] 1. consentmanager Integración SDK

La consentmanager El SDK para aplicaciones de iOS implementa y proporciona funcionalidad para informar al usuario sobre la protección de datos y solicitar y obtener el consentimiento del usuario. Permite a los desarrolladores de aplicaciones integrar fácilmente consentmanager servicio en su aplicación.

Cmp-Sdk-Captura-de-pantalla---settings.png

Cómo funciona

  1. Integre el SDK en la aplicación y configure los ajustes del SDK
  2. Una vez que el SDK se integre en una aplicación, el SDK proporcionará funciones para el desarrollador de la aplicación con el fin de recuperar los datos de consentimiento
  3. Tan pronto como se inicie la aplicación, el SDK recuperará automáticamente la información del consentmanager servidores para preparar el SDK para su uso.
  4. Se recomienda que, al iniciar la aplicación, la aplicación cree una instancia de clase CMPConsentTool. Una vez que se crea esto, el SDK mostrará automáticamente la pantalla de consentimiento si es necesario.
  5. Cuando la aplicación quiere procesar datos personales, debe "preguntar" al SDK si se dio el consentimiento para el propósito específico y el proveedor.

Instalación a través de Cocoapod

Agregar biblioteca con Cocoapod

Puedes instalar el consentmanager SDK agregando CmpSdk a su Podfile como se explica en el siguiente ejemplo:

target 'YourProject' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  pod 'CmpSdk'

  target 'YourProjectTests' do
    inherit! :search_paths
     # Pods for testing
  end
  
...
      
end

Una vez hecho esto, debe ejecutar pod install en el directorio de su proyecto para instalar el consentmanager SDK. Después de esto, abra el *.xcworkspace y construir. 

Una vez que haya seguido todos los pasos, su dependencia debe estar instalada y puede continuar y usarla en su proyecto.

Instalación a través de Swift Package Manager

1. Abra el Administrador de paquetes Swift

Ve a File > Swift Packages > Add Package Dependency.

2. Agregue la URL del repositorio SDK

Ahora verá una nueva ventana donde puede ingresar la URL del repositorio del SDK. La mayoría de los SDK están alojados en GitHub, por lo que la URL a menudo se verá como https://github.com/iubenda/cm-sdk-xcframework.git. Después de ingresar la URL, haga clic en Next.

3. Seleccione la versión del SDK

SPM ahora buscará el repositorio y le pedirá que seleccione una versión.

Puede optar por agregar el paquete seleccionando una regla de versión:

  • Up to Next Major: Esto actualizará el paquete a la próxima versión principal. Es la opción recomendada ya que agrega actualizaciones que no tienen cambios de última hora.
  • Up to Next Minor: Esto actualizará el paquete a la próxima versión secundaria.
  • Exact: Esto bloqueará el paquete a una versión específica. No se instalarán actualizaciones.

Seleccione la versión que desea utilizar y haga clic en Next.

4. Agregue el SDK a su objetivo

En la siguiente pantalla, seleccione los destinos a los que desea agregar la dependencia del paquete. Los objetivos suelen ser su aplicación y cualquier prueba que pueda tener.
Haga clic Finish para completar el proceso.

5. Importa el SDK 

Ahora que se agregó el SDK a su proyecto, debe importarlo para usarlo. Vaya al archivo donde desea usar el SDK y agregue la siguiente declaración de importación en la parte superior:

import CmpSdk

Inicia el SDK

Con el inicio de la aplicación (generalmente su función viewDidLoad) usted debe: crear una instancia de clase CMPConsentTool. Esto obtendrá automáticamente los datos necesarios de nuestro servidor y determinará si la pantalla de consentimiento debe mostrarse o no. Si es así, el SDK mostrará automáticamente la pantalla de consentimiento en este punto, recopilará los datos y proporcionará los datos a la aplicación. Luego, la instancia se puede usar para obtener detalles de consentimiento del SDK para usarlo en la aplicación.

/** Initialize with CmpConfig */
let cmpConfig : CmpConfig = CmpConfig.init()
CmpConfig.setValues(myCmpConfig.domain, addCodeId: myCmpConfig.appId, addAppName: myCmpConfig.appName, addLanguage: myCmpConfig.language)
cmpConsentTool = CMPConsentTool(cmpConfig: cmpConfig, viewController: self)
  
/** Initialize without CmpConfig */
  
cmpConsentTool = cmpConsentTool(CMPConsentTool(domain: myCmpConfig.domain, codeId: myCmpConfig.appId, appName: myCmpConfig.appName, language: myCmpConfig.language, viewController: self))
        
/** Optionally chain callbacks */
cmpConsentTool = cmpConsentTool.withOpenListener(onOpen)
            				   .withOnCmpButtonClickedCallback(onButtonClickedEvent)
            				   .withCloseListener(onClose)
           					   .withErrorListener(onCmpError)

Tenga en cuenta que es importante inicializar el SDK en el método viewDidLoad. De lo contrario, es posible que la vista no esté lista para usarse y que el SDK falle.

Asegúrese de utilizar los datos de configuración correctos. Los datos de configuración se pueden encontrar en su consentmanager cuenta en Menú > Obtener código > CodeId

Interfaz de usuario rápida

Para integrar el SDK en un entorno de SwiftUI, debe proporcionar un Controlador UIView que está envuelto dentro de un UIViewControllerRepresentable. Puede encontrar más información sobre en el oficial documentación de apple. Antes de integrar el SDK, asegúrese de que ya integró el Módulo en su proyecto. 

1. Comenzamos con la creación de un UiViewController habitual similar a los ejemplos de Swift/Objective C

import UIKit
import consentmanager


class CmpViewController: UIViewController {
    struct CmpConfig {
           static let domain = "delivery.consentmanager.net"
           static let appId = "123456"
           static let appName = "test App"
           static let language = "DE"
       }
    var cmpConsentTool: CMPConsentTool? = nil
    func onClose() -> Void {
        NSLog("closed event");
    }

    func onOpen() -> Void {
        NSLog("opened event");
    }

    func onCMPNotOpened() -> Void {
        NSLog("not opened event");
    }
    
    override func viewDidLoad() {
        cmpConsentTool = cmpConsentTool(CMPConsentTool(domain: CmpConfig.domain, codeId: CmpConfig.appId, appName: CmpConfig.appName, language: CmpConfig.language, viewController: self))
        // creating a example button to manually open the consent screen
        let button = UIButton.init(frame: CGRect.init(x: 10, y: 100, width: 100, height: 50))
        button.setTitle("Consent", for: .normal)
        button.backgroundColor = .red
        button.addTarget(self, action: #selector(onShowConsentClicked), for: .touchUpInside)
        self.view.addSubview(button)
    }
    
    /**
     * Show consent button was clicked
     */
    @objc func onShowConsentClicked(sender: UIButton!) {
        cmpConsentTool!.openView()
    }
}

2. Para utilizar el controlador en el interfaz de usuario rápida tienes que crear un UIViewControllerRepresentable que está instanciando el Controlador CmpView:

import SwiftUI

struct CmpViewControllerRepresentable: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> UIViewController {
        let cmpViewController = CmpViewController()
        
        return cmpViewController
    }
    
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
    }
}

3. Ahora podemos usar el Vista del controlador dentro del contexto de SwiftUI:

import SwiftUI

@main
struct cmpApp: App {
    var body: some Scene {
        WindowGroup {
            CmpViewControllerRepresentable()
        }
        
        
    }
}

Se proporciona un proyecto de ejemplo. Haga clic aquí para entrar.

Usando el SDK

Para verificar si un proveedor o propósito tiene consentimiento, puede usar los dos métodos:

if(consentTool!.hasPurposeConsent("52", purposeIsV1orV2: false))
{
    if(consentTool!.hasVendorConsent("s26", purposeIsV1orV2: false))
    {
        //do something with data
    }
}

Ambos métodos hasPurposeConsent y hasVendorConsent requiere dos parámetros:

  • id: cadena del proveedor o ID de propósito. Tenga en cuenta que las ID de proveedor pueden tener diferentes formatos ("123", "s123" y "c123"), verifique nuevamente con Menú> Proveedores y Menú> Propósitos en tu consentmanager .
  • isIABVendor / isIABPurpose: si el proveedor o el propósito es un proveedor / propósito que sigue el estándar IAB TCF, deberá establecer un verdadero, de lo contrario, un falso.

Recuerde: Todos los proveedores que no pertenecen al IAB tienen ID que comienzan con una "s" o "c" (por ejemplo, "s123"); Los proveedores que pertenecen a la IAB tienen ID que no comienzan con una "s" o "c".

Reabrir la pantalla de consentimiento

Para permitir que el usuario cambie las opciones, simplemente puede llamar openView()

cmpConsentTool!.openView()

En algunos casos, una aplicación nativa puede contener vistas web para mostrar ciertas cosas como publicidad o contenido. Para transmitir la información de consentimiento del SDK a la vista web, utilice la función:

consentData = CmpConsentTool.exportCmpString();

Esto exportará la información de consentimiento y todos los datos adicionales que necesita el CMP. Luego puede pasar esta información al CMP que está en su vista web agregándola a la URL que se llama en la vista web:

myWebView.loadURL("https://mywebsite.com/....#cmpimport=" + consentData);

/** to pass the att status you can use the cmpatt parameter (1=accepted, 2=declined) */

myWebView.loadURL("https://mywebsite.com/....#cmpimport=" + consentData + "&cmpatt=1");

Integración con Apple Tracking Transparency (ATT)

Desde iOS 14, Apple introdujo el marco Apple Tracking Transparency, que requiere que cada aplicación muestre qué datos de seguimiento utiliza. El marco ATT por sí solo no cumple con IAB TCF/GDPR, etc. y es solo una versión específica de Apple para solicitar el consentimiento del usuario para el seguimiento de datos. Para permitirle al usuario una mejor experiencia, admitimos una solución para sincronizar los consentimientos entre el SDK de CMP y la interfaz de ATT. El SDK ofrece dos soluciones diferentes para esto. 

1. El desarrollador integra el Marco ATT por sí mismo y luego pasa la información resultante al SDK de CMP. La documentación de Apple se puede encontrar Haga clic aquí para entrar.

Recomendamos esta integración. Todavía puede obtener el control total de la interfaz ATT e implementar su proceso personalizado según el usuario.  

La integración podría verse así. 

       func requestPermission() {
           if #available(iOS 14, *) {
               ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                   switch status {
                   case .authorized:
                       // Tracking authorization dialog was shown and accepted
                       // TODO custom code here:
                   case .denied:
                       // Tracking authorization dialog was shown and permission is denied
                       // TODO custom code here:
                   case .notDetermined:
                       // Tracking authorization dialog has not been shown
                       // TODO custom code here:
                   case .restricted:
                       // Tracking authorization dialog has not been shown app is restricted for tracking
                       // TODO custom code here:
                   }
                   // After determination of the att status, pass the information to the cmp sdk                                                           
                   CmpConfig.setAppleTrackingStatus(status.rawValue);
               })
           }
       }

La solicitud de permiso podría tener este aspecto. La línea de código importante es la 19, donde la información se pasa al SDK de CMP. Según el estado de ATT, el SDK de CMP establece información de consentimiento predefinida. 

 

2. El desarrollador activa el seguimiento automático de Apple. El SDK de CMP maneja la solicitud con un protocolo predeterminado. El estado entonces será manejado por CMP SDK. Posteriormente, es posible obtener el estado de ATT por parte del desarrollador. Sin embargo, las acciones personalizadas deben manejarse a pedido como en la opción 1. Puede activar la solicitud automática de ATT con:

Esto mostrará la capa ATT del sistema operativo. 

CmpConfig.setAutoAppleTracking(true);

Asegúrese de activar esta función antes de crear una instancia del SDK de CMP. 

Si no usa ATT, es posible que deba tomar nota para la revisión automática de Apple. Ya que el Apple ATT está integrado como opción pero no se usa. Es posible que Apple no apruebe la aplicación automáticamente.

Oyentes de eventos personalizados

Para agregar una lógica de proceso adicional, puede utilizar los detectores de eventos. Los siguientes detectores de eventos están disponibles:

Nombre

ocurre

 

Oyente abierto

Oyente de evento cuando se abrió CMP

cerrarOyente

Oyente de evento cuando CMP está cerrado

onCMPNotOpenedListener

Oyente para eventos cuando no es necesario abrir CMP

errorListener

Se llamará al oyente si se produce un error al llamar al servidor o al mostrar la vista.

enCmpButtonClickedCallback

Oyente de evento cuando se hace clic en el botón y se cierra la capa de consentimiento

Consentimiento de importación/exportación

Para importar o exportar el consentimiento puede utilizar la función exportarCMPData() y importCMPData(Cadena cmpData). Mira el ejemplo a continuación: 

// Instanstiate CMPConsentTool()
cmpConsentTool = CMPConsentTool.init(...)

// Importing consent data if you like
cmpConsentTool.importCmpString("${your consentString}");

// ... Your code here ...


// Exporting Consent data 
let consentString : String = CMPConsentTool.exportCmpString()

La cadena de consentimiento que necesita pasar debe estar codificada en base64.

Diagrama de secuencia del SDK de CMP

En este ejemplo, le mostramos tres posibles flujos de secuencia SDK para comprender el consentmanager y hay procesos. 

1. Al crear una instancia usando el inicializar función, hay dos resultados posibles. La primera es cuando la API de consentmanger informa al SDK que el CMP no se abrirá, lo que desencadena el OnCmpNotOpenedDevolución de llamada. El segundo resultado es cuando se abre la capa de consentimiento, lo que permite al usuario interactuar con ella, y esto desencadena la Al abrir devolución de llamada. Una vez que el usuario da su consentimiento y se procesa el consentimiento, el OnCmpCloseDevolución de llamada se llama.

Tenga en cuenta que la Devolución de llamada en error está representado por las líneas de flechas discontinuas rojas para proporcionar ejemplos de cuándo pueden ocurrir errores durante el proceso.

Inicializar-Cmp-Sequence-Diagram.png

2. Creando una instancia y llamando al abrir y comprobar el consentimiento funciones conducirán a un proceso similar. La diferencia es que al desacoplar la creación de la instancia y la verificación de la API de consentmanger, obtiene la capacidad de agregar lógica empresarial e interactuar con la API de las bibliotecas.

3. Creando una instancia y llamando al capa abierta La función abrirá la capa sin verificar el consentmanager, si es necesario. Si ya se ha dado el consentimiento, se mostrarán las opciones y configuraciones al usuario. El flujo del proceso se verá así:

openlayer-Cmp-Secuencia-Diagrama-.png

 

Bloqueo de contenido dinámico con marcador de posición UIView

Esta función está obsoleta y se eliminará en el futuro. Utilice la API enableVendorList

El viewObject de marcador de posición se puede implementar para obtener la funcionalidad de bloqueo de contenido dinámico Haga clic aquí para entrar.Puede crear la vista con el siguiente método: 

class ViewController: UIViewController, CmpPlaceholderAcceptedDelegate {
//...
  
@objc func createPlaceholderView{
	let params : CmpPlaceholderParams = CmpPlaceholderParams.init(vendorId: "123");
	let placeholder : CmpPlaceholderView = (cmpConsentTool?.createPlaceholder(CGRect.init(x: 0, y: 300, width: view.frame.size.width, height: 				view.frame.size.height), params))!;
	placeholder.vendorDelegate = self;
	view.addSubview(placeholder);	
}



func vendorAccepted(_ placeholderView: CmpPlaceholderView!) {
	//... actions to do when the consent is accepted
  	// Like showing youtube video view
}
// ...
}

Con el objeto Wrapper CMPPlaceholderParams también puede pasar parámetros opcionales como textos personalizados o una imagen de vista previa opcional. puede agregar textos personalizados como se muestra a continuación: 

params.buttonText = "Click me";

La lógica de negocios requerida, cuando desea mostrar la vista y cuando no necesita ser aplicada por el desarrollador. Para obtener información cuando el usuario interactúa con el marcador de posición, puede usar el delegado preparado CmpPlaceholderAcceptedDelegate. Con el delegado, deberá implementar la función vendorAccepted donde puede controlar la lógica adicional cuando el usuario aceptó el consentimiento. 

Inicio de sesión

Al utilizar nuestro SDK de iOS, es posible que necesite depurar o analizar información de registro para diversos fines. Los registros generados por nuestro SDK están etiquetados en "CmpConfig", lo que le permite filtrar y ver fácilmente solo los registros relevantes. Esta guía proporciona instrucciones paso a paso sobre cómo acceder a estos registros en Xcode.

Busque la etiqueta

En la consola de depuración de Xcode, puede buscar registros específicamente etiquetados con "Consentimiento" o "CMP" para aislar los registros generados por nuestro SDK.

Opcional: ajustar el nivel detallado

In CmpConfig, puede ajustar el nivel detallado para obtener registros más detallados. El nivel máximo es 4.

CmpConfig.setVerboseLevel(4)
  • Permite registros más detallados
  • Útil para depuración y análisis.

Al ajustar el nivel detallado, puede obtener información de registro más completa, lo que ayudará en la depuración y el análisis del comportamiento de nuestro SDK en su aplicación.

Volver