[iOS] 2. Documentación de la API
El sistema CMPManager
La clase proporciona métodos para gestionar el consentimiento del usuario para el procesamiento y seguimiento de datos. Esta documentación cubre los principales métodos disponibles para la integración de aplicaciones móviles.
Inicialización
establecerUrlConfig(:UrlConfig)
Establece la configuración de URL para el Consent Manager.
parámetros:
-
config
: UnUrlConfig
objeto que contiene las siguientes propiedades:-
id
: Cadena - El ID de CMP -
domain
: Cadena: el dominio para la gestión del consentimiento -
language
: Cadena: el código de idioma (por ejemplo, "EN") -
appName
: Cadena: el nombre de su aplicación
-
Devoluciones: Void
Ejemplo:
CMPManager.shared.setUrlConfig(UrlConfig(
id: "0a000000000a1",
domain: "delivery.consentmanager.net",
language: "EN",
appName: "MyApp"
))
setWebViewConfig(_ :ConsentLayerUIConfig)
Configura la apariencia y comportamiento del WebView de consentimiento. Puedes establecer la posición en la que aparecerá el objeto WKWebiew que muestra la capa de consentimiento, como pantalla completa, en la mitad inferior de la pantalla o en la mitad superior de la misma. También se puede aplicar el estilo de fondo, así como el radio de las esquinas, si respetará la zona segura del dispositivo, así como si responderá a los cambios de orientación o no, en caso de que tu móvil funcione solo en una única orientación, lo que suele ocurrir con los juegos que solo utilizan la configuración horizontal de la pantalla del dispositivo.
parámetros:
-
config
: UnConsentLayerUIConfig
objeto con las siguientes propiedades:-
position
: Posición: la posición de la vista web (por ejemplo, .fullScreen) -
backgroundStyle
: BackgroundStyle - El estilo de fondo (por ejemplo, .dimmed) -
cornerRadius
: CGFloat - El radio de la esquina de WebView -
respectsSafeArea
: Bool - Si se debe respetar el área segura -
allowsOrientationChanges
: Bool - Si se permiten cambios de orientación
-
Devoluciones: Void
Ejemplo:
CMPManager.shared.setWebViewConfig(ConsentLayerUIConfig(
position: .fullScreen,
backgroundStyle: .dimmed(.black, 0.5),
cornerRadius: 10,
respectsSafeArea: true,
allowsOrientationChanges: true
))
setPresentingViewController(_ :controladorvista)
Establece el controlador de vista que presentará la capa de consentimiento. Normalmente, se pasa self
como el controlador de vista actual.
parámetros:
-
viewController
:UIViewController: el controlador de vista para presentar la capa de consentimiento
Devoluciones: Void
Ejemplo:
CMPManager.shared.setPresentingViewController(self)
Gestión de la capa de consentimiento
checkIfConsentIsRequired(:completado)
Comprueba si se requiere el consentimiento del usuario. Esto realizará una llamada de red a nuestros servidores a través del WKWebView creado dentro de nuestro SDK, que enviará un mensaje a nuestro backend a través de JavaScript. Nuestro backend detectará si el dispositivo tiene un consentimiento válido o no y el mensaje se enviará de vuelta al WKWebView, determinando si es necesario mostrarlo o no. Consumiendo una página vista En el proceso. Según el mensaje devuelto, el SDK lo interpretará y devolverá sus resultados a través del controlador de finalización.
parámetros:
-
completion
: (Bool) -> Void - Un cierre llamado con el resultado, ya seatrue
orfalse
.
Devoluciones: Voz
Ejemplo:
CMPManager.shared.checkIfConsentIsRequired { required in
print("Consent is required: \(required)")
}
checkWithServerAndOpenIfNecessary(:finalización)
Consulta con el servidor si se requiere consentimiento y abre la capa de consentimiento si es necesario. Esto hará una llamada de red a nuestros servidores a través de WKWebView creado dentro de nuestro SDK. Consumiendo una página vista en el proceso. Esta llamada de red enviará un mensaje a nuestro backend a través de JavaScript, que detectará si el dispositivo tiene un consentimiento válido o no, lo que a su vez determinará si es necesario mostrar la capa de consentimiento o no.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa.
Devoluciones: Void
Ejemplo:
CMPManager.shared.checkWithServerAndOpenIfNecessary { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Check completed successfully")
}
}
jumpToSettings(:finalización)
Abre la capa de consentimiento y salta directamente a la página de configuración. Esto hará una llamada de red a nuestros servidores. Consumiendo una página vista En el proceso, se invoca la visualización de WKWebView, pero se muestra la página de configuración en lugar de la página inicial de la capa de consentimiento, que ofrece a los usuarios la opción de aceptar todos los consentimientos o rechazarlos todos. Esto, en cambio, conducirá a la página en la que se ofrece a los usuarios un control más granular sobre los consentimientos, lo que les permite ajustar sus opciones.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.jumpToSettings { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Jumped to settings successfully")
}
}
openConsentLayer(:completado)
Abre la capa de consentimiento. Realiza una llamada de red a nuestro backend. Consumiendo una página vista en el proceso. Mostrará la capa de consentimiento que permite al usuario aceptar todas o rechazar todas las opciones o, según el diseño del CMP, permitirle controlar los consentimientos de una manera más granular.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa, devolviendo un éxito o un error.
Devoluciones: Void
Visitas de página consumidas: 1
Ejemplo:
CMPManager.shared.openConsentLayer { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Consent layer opened successfully")
}
}
Estado de consentimiento
exportarCMPInfo()
Exporta la información de consentimiento actual almacenada en el dispositivo como una cadena. Este método recupera la cadena de consentimiento del área UserDefaults del dispositivo y la devuelve. Por lo general, esta información se pasa al importCMPInfo
método.
Devoluciones: Cadena: la información de consentimiento exportada
Ejemplo:
let cmpInfo = CMPManager.shared.exportCMPInfo()
print("Exported CMP info: \(cmpInfo)")
tienePropósitoConsentimiento(id:)
Comprueba si se ha otorgado el consentimiento para un fin específico y si este consentimiento se almacena en el dispositivo. Comprueba el área UserDefaults para ver los consentimientos aceptados o rechazados y filtra el ID que se pasa como parámetro, devolviendo verdadero si el consentimiento fue aceptado o falso en caso contrario.
Nota: ¡Siempre verifique primero si hay una opción disponible para el usuario! En los casos en que no exista ninguna opción, la función puede devolver valores de retorno inesperados.
parámetros:
-
id
: Cadena: el ID del propósito a verificar
Devoluciones: Bool
- True
Si se da el consentimiento, false
de otra manera
Ejemplo:
let hasPurposeConsent = CMPManager.shared.hasPurposeConsent(id: "c53")
print("Has consent for purpose c53: \(hasPurposeConsent)")
tieneSelecciónDeUsuario()
Comprueba si el usuario ha elegido los consentimientos y si estos se almacenan en el dispositivo. Esto significa que el usuario aceptó todos los consentimientos, los rechazó todos o eligió una combinación de consentimientos aceptados y rechazados, según el diseño de la CMP, lo que podría permitir a los usuarios aceptar algunos de los consentimientos y rechazar otros. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: bool - true
Si el usuario ha hecho una elección, false
de otra manera
Ejemplo:
let hasChoice = CMPManager.shared.hasUserChoice()
print("User has made a choice: \(hasChoice)")
hasVendorConsent(:Cadena)
Comprueba si se ha dado el consentimiento para un proveedor específico y este consentimiento se almacena en el dispositivo, de acuerdo con las configuraciones de CMP. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
parámetros:
-
id
: Cadena: el ID del proveedor a verificar
Devoluciones: Bool
- True
Si se da el consentimiento, false
de otra manera
Ejemplo:
let hasVendorConsent = CMPManager.shared.hasVendorConsent(id: "s2789")
print("Has consent for vendor s2789: \(hasVendorConsent)")
Propósito y gestión de proveedores
obtenerIDsDeTodosLosPropósitos()
Recupera todos los ID de propósito almacenados en el dispositivo, de acuerdo con las configuraciones de CMP. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de identificaciones para todos los propósitos
Ejemplo:
let allPurposes = CMPManager.shared.getAllPurposesIDs()
print("All purposes: \(allPurposes)")
obtenerIDDeTodosLosProveedores()
Recupera todos los ID de proveedores almacenados en el dispositivo, de acuerdo con las configuraciones de CMP. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de todos los ID de proveedores
Ejemplo:
let allVendors = CMPManager.shared.getAllVendorsIDs()
print("All vendors: \(allVendors)")
obtenerIDsPropósitosDeshabilitados()
Recupera los ID de todas las finalidades deshabilitadas almacenadas en el dispositivo, según las configuraciones de CMP y las elecciones del usuario. Si el usuario acepta todos los consentimientos, este campo estará vacío. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de identificaciones de propósitos deshabilitados
Ejemplo:
let disabledPurposes = CMPManager.shared.getDisabledPurposesIDs()
print("Disabled purposes: \(disabledPurposes)")
obtenerID de proveedores deshabilitados()
Recupera los ID de todos los proveedores deshabilitados almacenados en el dispositivo, según las configuraciones de CMP. Si el usuario acepta todos los consentimientos, este campo estará vacío. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de identificaciones de proveedores deshabilitados
Ejemplo:
let disabledVendors = CMPManager.shared.getDisabledVendorsIDs()
print("Disabled vendors: \(disabledVendors)")
obtenerEnabledPurposesIDs()
Recupera los ID de todas las finalidades habilitadas almacenadas en el dispositivo, según las configuraciones del CMP. Si el usuario rechaza todos los consentimientos, este campo quedará vacío. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de identificaciones de propósitos habilitados
Ejemplo:
let enabledPurposes = CMPManager.shared.getEnabledPurposesIDs()
print("Enabled purposes: \(enabledPurposes)")
obtenerEnabledVendorsIDs()
Recupera los ID de todos los proveedores habilitados almacenados en el dispositivo. Si el usuario rechaza todos los consentimientos, este campo estará vacío. Esta información solo se actualizará después de que el consentimiento se conserve correctamente en el área UserDefaults, por lo que si realiza la verificación inmediatamente después de usar métodos que desencadenan cambios en el consentimiento como openConsentLayer
, acceptAll
or rejectAll
, por ejemplo, entonces Espere hasta que se active la devolución de llamada de esos métodos antes de acceder al método. hasUserChoice
, Para asegurarse de que la información esté actualizada.
Devoluciones: [Cadena] - Una matriz de identificaciones de proveedores habilitados
Ejemplo:
let enabledVendors = CMPManager.shared.getEnabledVendorsIDs()
print("Enabled vendors: \(enabledVendors)")
Modificación del consentimiento
acceptAll(:completado)
Acepta el consentimiento para todos los propósitos y proveedores, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en WKWebView, que activará la aceptación de todos los consentimientos, según la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un resultado exitoso o fallido, lo que significa que nuestro backend la procesó con éxito y se mantuvo en el dispositivo.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.acceptAll { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("All consents accepted successfully")
}
}
acceptPurposes(:purposes:updatePurpose:finalización)
Acepta el consentimiento para fines específicos, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en el WKWebView, que activará la aceptación de los propósitos determinados pasados como parámetro, según la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un éxito o un fracaso, lo que significa que fue procesada con éxito por nuestro backend y persistida en el dispositivo.
parámetros:
-
purposes
: [Cadena] - Una matriz de identificaciones de propósito para aceptar -
updatePurpose
: Bool - Si se deben actualizar los propósitos relacionados -
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.acceptPurposes(["c52", "c53"], updatePurpose: true) { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Purposes accepted successfully")
}
}
acceptVendors(:vendedores:finalización)
Acepta el consentimiento de proveedores específicos, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en WKWebView, que activará la aceptación de los proveedores determinados que se pasan como parámetro, de acuerdo con la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un resultado exitoso o fallido, lo que significa que nuestro backend la procesó con éxito y se mantuvo en el dispositivo.
parámetros:
-
vendors
: [Cadena] - Una matriz de identificaciones de proveedores para aceptar -
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.acceptVendors(["s2790", "s2791"]) { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Vendors accepted successfully")
}
}
importCMPInfo(:String:finalización)
Importa información de consentimiento de una cadena CMP. Esto recibirá una cadena que contiene los datos de consentimiento, generalmente obtenidos a través de exportCMPInfo
método. Esta información se conserva en el área UserDefaults del dispositivo y, al mismo tiempo, se envía a nuestro backend a través de un mensaje inyectado en WKWebView. consumiendo una página vista en el proceso.
parámetros:
-
cmpString
: Cadena: la cadena CMP que se importará -
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
let cmpString = "Q1FERkg3QVFERkg3QUFmR01CSVRCQkVnQUFBQUFBQUFBQWlnQUFBQUFBQUEjXzUxXzUyXzUzXzU0XzU1XzU2XyNfczI3ODlfczI3OTBfczI3OTFfczI2OTdfczk3MV9VXyMxLS0tIw"
CMPManager.shared.importCMPInfo(cmpString) { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("CMP info imported successfully")
}
}
rechazarTodo(:completado)
Rechaza el consentimiento para todos los fines y proveedores, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en WKWebView, que activará el rechazo de todos los consentimientos, según la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un resultado exitoso o fallido, lo que significa que nuestro backend la procesó con éxito y se mantuvo en el dispositivo.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.rejectAll { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("All consents rejected successfully")
}
}
rechazarPropósitos(:propósitos:actualizarProveedor:finalización)
Rechaza el consentimiento para fines específicos, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en el WKWebView, que activará el rechazo de los propósitos determinados pasados como parámetro, según la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un éxito o un fracaso, lo que significa que fue procesada con éxito por nuestro backend y persistida en el dispositivo.
parámetros:
-
purposes
: [Cadena] - Una matriz de identificaciones de propósitos para rechazar -
updateVendor
: Bool - Si se deben actualizar los proveedores relacionados -
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.rejectPurposes(["c52", "c53"], updateVendor: true) { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Purposes rejected successfully")
}
}
rechazarProveedores(:proveedores:finalización)
Rechaza el consentimiento para proveedores específicos, Consumiendo una página vista en el proceso. Realiza una llamada de red a nuestro backend a través de un mensaje inyectado en WKWebView, que activará el rechazo de los proveedores determinados que se pasan como parámetro, según la configuración de CMP. Esta información solo estará disponible para los demás métodos después de que la devolución de llamada devuelva un éxito o un fracaso, lo que significa que fue procesada con éxito por nuestro backend y persistida en el dispositivo.
parámetros:
-
vendors
: [Cadena] - Una matriz de identificaciones de proveedores para rechazar -
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.rejectVendors(["s2790", "s2791"]) { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Vendors rejected successfully")
}
}
resetConsentManagementData(finalización:)
Restablece todos los datos de gestión de consentimientos. Esto borra por completo todas las entradas del área UserDefaults relacionadas con los consentimientos aceptados o rechazados por el usuario. Es similar a eliminar por completo la aplicación del dispositivo.
parámetros:
-
completion
:Un cierre llamado cuando la operación se completa
Devoluciones: Void
Ejemplo:
CMPManager.shared.resetConsentManagementData { error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Consent management data reset successfully")
}
}
Transparencia de seguimiento de aplicaciones (ATT)
requestATTAuthorization(finalización:)
Solicita la autorización de transparencia de seguimiento de aplicaciones del usuario. Para obtener más información, consulte la documentación oficial de Apple.
parámetros:
-
completion
: (ATTAuthorizationStatus) -> Void: un cierre llamado con el estado de autorización resultante
Devoluciones: Void
Disponibilidad: iOS 14.0 +
Ejemplo:
if #available(iOS 14, *) {
CMPManager.shared.requestATTAuthorization { status in
switch status {
case .authorized:
print("ATT: User authorized tracking")
case .denied:
print("ATT: User denied tracking")
case .restricted:
print("ATT: Tracking is restricted")
case .notDetermined:
print("ATT: Status not determined")
@unknown default:
print("ATT: Unknown status")
}
}
} else {
print("ATT is not available on this device")
}
obtenerEstadoAutorizaciónATT()
Obtiene el estado actual de la autorización de transparencia de seguimiento de aplicaciones. Para obtener más información, consulte la documentación oficial de Apple.
Disponibilidad: iOS 14.0 +
Ejemplo:
if #available(iOS 14, *) {
let status = CMPManager.shared.getATTAuthorizationStatus()
print("Current ATT status: \(status)")
} else {
print("ATT is not available on this device")
}
Eventos de CMPManagerDelegate
didReceiveConsent(consentimiento: String, jsonObject: [String: Cualquiera])
Esto se activa cuando la capa de consentimiento se cerró después de que el usuario actualizó sus consentimientos O cuando se invocan métodos que provocan cambios en los consentimientos, como acceptAll, rejectAll, acceptVendors, rejectVendors, etc. Significa que el usuario aceptó o rechazó algunos o todos los consentimientos, y que estos se guardaron correctamente en el dispositivo.
¿Mostró la capa de consentimiento?
Esto se activa cuando se muestra realmente la capa de consentimiento. Significa que no había un consentimiento válido en el dispositivo, por lo que se debe recopilar uno nuevo.
¿Cerrar capa de consentimiento?
Esto se activa cuando el SDK verificó la necesidad de un consentimiento, pero no fue necesario y la capa no se mostró. Significa que ya existe uno válido en el dispositivo, por lo que no es necesario uno nuevo y la capa de consentimiento no se mostrará.
Error de recepción
Esto se activa cuando el SDK detecta algún error y devuelve su código.