Información
Mi contenido

ConsentManager GDPR / CCPA SDK para iOS

El 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.

Estándares soportados

El ConsentManager GDPR / CCPA SDK para Android es compatible con los siguientes estándares de la industria:

  • IAB TCF v1
  • IAB TCF v2
  • Privacidad de EE. UU. de IAB v1
  • ConsentManager vendedores personalizados / propósitos
  • Modo de consentimiento adicional de Google (cadena de CA de Google)

Captura de pantalla de Cmp-Sdk---home.pngCmp-Sdk-Screen-Shot---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 consentmanager 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 'consentmanager'

  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 XCFramework

Recomendamos encarecidamente instalar y usar la biblioteca con Cocoapod. Sin él, será más difícil de mantener tanto para el usuario como para el desarrollador. De esta manera, las actualizaciones deben integrarse manualmente y existen algunos problemas de control de versiones. Por lo tanto, planeamos detener el servicio activo de esta biblioteca. 

Descargue el SDK

Descargue la última versión del SDK aquí:

Marco XCF: https://bitbucket.org/consentmanager/consentmanager-xcframework/src/master/

El SDK está configurado para iOS Versión 10 y superior.

Integramos

Para integrar el SDK en su proyecto existente, siga estos pasos:

  1. Extrae los archivos de la carpeta ConsentManager.framework en la carpeta principal de tu aplicación:



  2. Haga clic en su proyecto y vaya a la pestaña General y expandir la parte debajo Marcos, bibliotecas y contenido incrustado:

     

  3. Si el módulo aún no está incrustado, haga clic en + (Más)> Agregar otro> Agregar archivos ...:

  4. Selecciona el botón ConsentManager.framework carpeta de este proyecto y haga clic en Abierta:

  5. Ahora debería ver el marco como "Insertar y firmar" en la lista:

  6. Navegue a su Controlador de vista principal de su aplicación e importe el marco utilizando:
    #import <ConsentManager/CmpConsentTool.h>

Inicia el SDK

Con el inicio de la aplicación (generalmente su función viewDidAppear) 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.

#import "ViewController.h"
#import <ConsentManager/CMPConsentTool.h>

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *GDPRConsentStringLabel;
@end

@implementation ViewController
static CMPConsentTool *cmpConsentTool = nil;

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewDidAppear:(BOOL)animated {
    cmpConsentTool = [[CMPConsentTool alloc] init:@"consentmanager.mgr.consensu.org" addId:@"123456" addAppName:@"my%20Test%20App" addLanguage:@"DE" addViewController:self];
}

- (IBAction)showGDPRConsentTool:(id)sender {
    [cmpConsentTool openCmpConsentToolView];
}
@end

Ejemplo de Swift:

cmpConsentTool = CMPConsentTool.init("consentmanager.mgr.consensu.org", addId: "123456", addAppName: "my%20test%20app", addLanguage: "DE", add: self)

Tenga en cuenta que es importante inicializar el SDK en el método didAppear. De lo contrario, la vista puede no estar lista para usar y el SDK puede fallar.

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.

SwiftUI

Para integrar el SDK en un entorno de SwiftUI, debe proporcionar un UIViewController 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 = "www.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.init(CmpConfig.domain, addId: CmpConfig.appId, addAppName: CmpConfig.appName, addLanguage: CmpConfig.language, add: self, autoupdate: true, addOpenListener: onOpen, addOnCMPNotOpenedListener: onCMPNotOpened);
        
        // 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 CmpViewController:

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. aquí

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 openCmpConsentToolView():

consentTool.openCmpConsentToolView();

Swift:

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 = CMPStorageConsentManager.exportCMPData(this);

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);

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

El viewObject de marcador de posición se puede implementar para obtener la funcionalidad de bloqueo de contenido dinámico aquí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. 

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 aquí

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:

CmpConfig.setAutoAppleTracking(true);

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

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

 

onCMPAOpenedListener

Oyente de evento cuando se abrió CMP

onCMPClosedListener

Oyente de evento cuando CMP está cerrado

onCMPNotOpenedListener

Oyente para eventos cuando no es necesario abrir CMP

networkErrorListener

Oyente de eventos cuando CMP tiene problemas de red

servidorErrorListener

Oyente de evento cuando CMP no puede alcanzar el Consentmanager servidor

customOpenListener

Oyente de evento cuando se abre CMP

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.importCMPData("${your consentString}");

// ... Your code here ...


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

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

Compilar / Cargar en AppStore

Para compilar el SDK para la AppStore, es posible que desee utilizar el siguiente script para limpiar el directorio de trabajo:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
FRAMEWORK_NAME="ConsentManager.framework"
# Check if Framework is present.
FRAMEWORK_LOCATION=$(find "$APP_PATH" -name "$FRAMEWORK_NAME" -type d)
if [ -z $FRAMEWORK_LOCATION ]; then
echo "Couldn't find ConsentManager.framework in $APP_PATH. Make sure 'Embed Frameworks' build phase is listed before the 'Strip Unused Architectures' build phase."
exit 1
fi
# This script strips unused architectures
find "$APP_PATH" -name "$FRAMEWORK_NAME" -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done

Changelog

Se puede encontrar el registro de cambios aquí en nuestro repositorio.

Preferencias de NSUserDefaults

El SDK establecerá NSUserDefaults valores para IAB TCF v1, IAB TCF v2, IAB USPrivacy y Google AC String.

Se definen las siguientes claves:

IAB TCF v1  
IABConsent_CMPPresent Boolean: Se establece en verdadero si un CMP que implementa esta especificación está presente en la aplicación. Idealmente establecido por el editor lo antes posible, pero también puede ser configurado por el CMP alternativamente.
IABConsent_SubjectToGDPR String 1 - (sujeto a GDPR), 0 - (no sujeto a GDPR), Nulo - indeterminado (predeterminado antes de la inicialización). Se alinea con IAB OpenRTB GDPR Advisory. Decidió ser String, tener el estado no inicializado.
IABConsent_ConsentString String: Cadena de consentimiento
IABConsent_ParsedPurposeConsents String (de "0" y "1") donde el carácter en la posición N indica el estado de consentimiento para la ID de propósito N como se define en la Lista global de proveedores. Cadena de consentimiento otorgado para permitir una verificación simple. El primer personaje de la izquierda es el Propósito 1, ...
IABConsent_ParsedVendorConsents String (de "0" y "1") donde el carácter en la posición N indica el estado de consentimiento para la identificación del proveedor N como se define en la Lista global de proveedores. Cadena de consentimiento otorgado para permitir una verificación simple. El primer personaje de la izquierda es el Vendedor 1, ... 
IAB TCF v2  
IABTCF_CmpSdkID Number: El ID entero sin signo del SDK de CMP
IABTCF_CmpSdkVersion Number: El número de versión entero sin signo de CMP SDK
IABTCF_PolicyVersion Number: El entero sin signo que representa la versión del TCF a la que se adhieren estos consentimientos.
IABTCF_gdprApplies Number:

1 GDPR se aplica en el contexto actual

0 - GDPR hace no aplicar en el contexto actual

Desarmado - indeterminado (predeterminado antes de la inicialización)

IABTCF_PublisherCC String: Código de dos letras ISO 3166-1 alfa-2 - Defecto: AA (desconocido)
IABTCF_PurposeOneTreatment Number:

0 - no hay un tratamiento especial para el propósito uno

1 - propósito uno no revelado

Desestablecer predeterminado - 0

Los proveedores pueden usar este valor para determinar si se requiere el consentimiento para el propósito uno.

IABTCF_UseNonStandardStacks Number:

1 - CMP usó una pila no estándar

0 - CMP no usó una pila no estándar

IABTCF_TCString String: Cadena TC codificada completa
IABTCF_VendorConsents Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de consentimiento para la identificación del proveedor n + 1; false y true respectivamente. p.ej. '1' en el índice 0 es consentimiento true para la identificación del proveedor 1
IABTCF_VendorLegitimateInterests Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de interés legítimo para la identificación del proveedor n + 1; false y true respectivamente. p.ej. '1' en el índice 0 se establece un interés legítimo true para la identificación del proveedor 1
IABTCF_PurposeConsents Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de consentimiento para la identificación del propósito n + 1; false y true respectivamente. p.ej. '1' en el índice 0 es consentimiento true para fines de identificación 1
IABTCF_PurposeLegitimateInterests Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de interés legítimo para la identificación del propósito n + 1; false y true respectivamente. p.ej. '1' en el índice 0 se establece un interés legítimo true para fines de identificación 1
IABTCF_SpecialFeaturesOptIns Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de suscripción para ID de función especial n + 1; false y true respectivamente. p.ej. '1' en el índice 0 es opt-in true para ID de función especial 1
IABTCF_PublisherRestrictions{ID} String ['0','1', or '2']: El valor en la posición n - dónde nLa indexación comienza en 0 - indica el tipo de restricción del editor (0-2) para el proveedor n + 1; (consulte Tipos de restricciones de editor). p.ej. '2' en el índice 0 es restrictionType 2 para la identificación del proveedor 1. {ID} se refiere a la identificación del propósito.
IABTCF_PublisherConsent Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de consentimiento del propósito para la identificación del propósito n + 1 para el editor, ya que corresponden a los propósitos de la Lista global de proveedores; false y true respectivamente. p.ej. '1' en el índice 0 es consentimiento true para fines de identificación 1
IABTCF_PublisherLegitimateInterests Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de interés legítimo del propósito para la identificación del propósito n + 1 para el editor, ya que corresponden a los propósitos de la Lista global de proveedores; false y true respectivamente. p.ej. '1' en el índice 0 se establece un interés legítimo true para fines de identificación 1
IABTCF_PublisherCustomPurposesConsents Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de consentimiento del propósito para la ID de propósito personalizado del editor n + 1 para el editor; false y true respectivamente. p.ej. '1' en el índice 0 es consentimiento true para ID de propósito personalizado 1
IABTCF_PublisherCustomPurposesLegitimateInterests Binary String: Los '0' or '1' en la posición n - dónde nLa indexación comienza en 0 - indica el estado de interés legítimo de propósito para la identificación de propósito personalizado del editor n + 1 para el editor; false y true respectivamente. p.ej. '1' en el índice 0 se establece un interés legítimo true para ID de propósito personalizado 1
IAB USPrivacidad  
IABUSPrivacy_String String: Se alinea con el IAB OpenRTB CCPA Advisory. La cadena codifica todas las opciones e información.
Cadena AC de Google  
IABTCF_AddtlConsent

String: Se alinea con la especificación técnica del Modo de consentimiento adicional de Google. 

Descripción general de la API

- (vacío) openCmpConsentToolView; Muestra una vista modal con la vista web de consentimiento, sin preguntar al servidor, si se necesita un nuevo consentimiento. Cuando se abra la vista web, se llamará a openListener. Si el cumplimiento es aceptado o rechazado, se llamará a una función de cierre. Puede configurar estas funciones por su cuenta y pasarlas por alto o después de la inicialización. Si desea agregar un closeListener solo para esta llamada de este método, puede sobrecargar esta función con una función closeListener adicional.
- (void) openCmpConsentToolView: (void (^) (void)) closeListener; Muestra una vista modal con la vista web de consentimiento, sin preguntar al servidor, si se necesita un nuevo consentimiento. Cuando se abra la vista web, se llamará a openListener. Si el cumplimiento es aceptado o rechazado, se llamará a una función de cierre. Puede configurar estas funciones por su cuenta y pasarlas por alto o después de la inicialización. Si desea agregar un closeListener solo para esta llamada de este método, puede sobrecargar esta función con una función closeListener adicional. CloseListener es una función llamada sin parámetro y no devuelve valores. Se llamará asincrónico.
- (NSString *) getVendorsString;  Si la pantalla consentScreen está cerrada, la lógica de ConsentString devuelve una versión extendida de consentmanager. La cadena de proveedor adicional contiene todos los proveedores que no se mencionan en CMPString. Esta cadena será devuelta. Cada proveedor está separado por un "_" y tendrá un "_" antes de sí mismo. "_C23_" sería un VendorsString válido generado por ConsentManager. Un VendorsString vacío será nulo, “” o “__”.
- (NSString *) getPurposesString; Si la pantalla consentScreen está cerrada, la lógica de ConsentString devuelve una versión extendida de consentmanager. La Cadena de Propósitos adicional contiene todos los propósitos que no se mencionan en CMPString. Esta cadena será devuelta. Cada Propósito está separado por un "_" y tendrá un "_" antes de sí mismo. "_P23_" sería un PurposeString válido generado por ConsentManager. Una PurposeString vacía será nula, “” o “__”.
- (NSString *) getUSPrivacyString;  Devuelve la cadena de privacidad de EE. UU., Que fue devuelta por el consentimiento del usuario en la pantalla de consentimiento de CMP.
- (BOOL) hasVendorConsent: (NSString *) vendorId vendorIsV1orV2: (BOOL) isIABVendor; Devuelve si un proveedor determinado tiene los derechos para configurar cookies. El parámetro vendorIsV1orV2 afirma, si el proveedor es mencionado por el IABString regular, o si está contenido en el vendorString generado por consentmanager.
- (BOOL) hasPurposeConsent: (NSString *) propósitoId propósitoIsV1orV2: (BOOL) isIABPurpose; Devoluciones si se acepta un Propósito determinado. El parámetro propósitoIsV1orV2 afirma, si el propósito es mencionado por el IABString regular, o si está contenido en el propósitoString generado por consentmanager.
- (BOOL) hasPurposeConsent: (int) propósitoId para el proveedor: (int) vendorId;

Devoluciones, si se otorgó el consentimiento para un propósito para un proveedor específico. Este Método solo dará una respuesta válida, si el Consentimiento fue dado en la versión V2.

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController addCloseListener: (void (^) (void)) closeListener;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void ( ^) (void)) openListener;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addCloseListener: (void ( ^) (void)) closeListener;

- (id) init: (NSString *) dominio addId: (NSString *) userId addAppName: (NSString *) appName addLanguage: (NSString *) idioma addViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void ( ^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void (^) (void)) openListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addCloseListener: (void (^) (void)) closeListener;

- (id) init: (CMPConfig *) config withViewController: (UIViewController *) viewController autoupdate: (BOOL) autoupdate addOpenListener: (void (^) (void)) openListener addCloseListener: (void (^) (void)) closeListener;

Crea una nueva instancia de CMPConsentTool.

@ param domain = La URL del dominio de consentmanager p.ej.: "www.consentmanager.net"

@ param userId = El ID de su cuenta de consentmanagers webste por ejemplo ,: 123

@ param appName = El nombre de su aplicación, por ejemplo: "Mi aplicación de prueba"

@param language = El idioma en el que se debe mostrar el consentimiento, por ejemplo: "de"

@param viewController = La instancia de ViewController principal de la aplicación

@param autoupdate = Si se establece, la aplicación comprobará por sí misma, si se necesita un nuevo consentimiento, si la aplicación se abrirá desde el fondo.

@param openListener = Este oyente dado como función se llamará asincrónico poco antes de que se abra la pantalla de consentimiento de CMP.

@param closeListener = Este Listener se llamará asincrónico, si el usuario dio su consentimiento y se cerró CMPConsentScreen. Este Oyente NO se llama, si el Usuario cierra la aplicación, sin dar su consentimiento.

@param config = El dominio de parámetros, userId, appName, idioma en un objeto de tipo CMPConfig.

Puede sobrecargar la función de inicialización, como puede ver en los siguientes constructores:

+ (NSString *) exportCMPData; Exporta la cadena CMPData actual. Puede importar fácilmente esta cadena en cualquier otro dispositivo con la función importCMPData.
+ (BOOL) importCMPData: (NSString *) cmpData; Importa la cadena CMPData proporcionada. Puede exportar fácilmente esta cadena a cualquier otro dispositivo con la función exportCMPData.
- (BOOL) llamado ThisDay;  devoluciones, si el CMPConsent Manager El servidor fue solicitado hoy, o el consentmanager ya se le preguntó al servidor, si es necesario volver a mostrar la pantalla de consentimiento de CMP.
- (BOOL) needAcceptance;  devuelve, ya sea que el usuario necesite dar un consentimiento, porque no lo hizo en el pasado, o porque el servidor de consentimiento regresó, que se requiere un nuevo consentimiento.
+ (anular) reiniciar; restablece todos los datos establecidos por consentCMPTool en las Preferencias compartidas.

 

Volver