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)
Cómo funciona
- Integre el SDK en la aplicación y configure los ajustes del SDK
- 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
- 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.
- 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. - 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 '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 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.
moderna
Para integrar el SDK en su proyecto existente, siga estos pasos:
- Extrae los archivos de la carpeta
ConsentManager.framework
en la carpeta principal de tu aplicación: - Haga clic en su proyecto y vaya a la pestaña General y expandir la parte debajo Marcos, bibliotecas y contenido incrustado:
- Si el módulo aún no está incrustado, haga clic en + (Más)> Agregar otro> Agregar archivos ...:
- Seleccione la pestaña
ConsentManager.framework
carpeta de este proyecto y haga clic en Abierta: - Ahora debería ver el marco como "Insertar y firmar" en la lista:
- 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 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.
#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];
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í
Uso de la última versión del SDK
Para saber qué versión del SDK es la más reciente, consulte las etiquetas en nuestra reproducción:
Usando el SDK
Verificar consentimiento
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()
Pasar información de consentimiento a otras fuentes
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:
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
|
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 :
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 :
Desestablecer predeterminado - Los proveedores pueden usar este valor para determinar si se requiere el consentimiento para el propósito uno. |
IABTCF_UseNonStandardStacks |
Number :
|
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 |
|
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. Atención: La identificación del propósito es la misma que se muestra en la lista de propósitos y puede tener un prefijo como C
Ejemplo: "S |
- (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. |