Implementación en UIKit
Para implementar la versión iOS de SibboCMP deberá seguir los siguientes pasos:
1.
Abrimos el framework que le proporcionamos en un
editor de código. Hay dos directorios principales:
1.
ios-arm64_armv7 -> este es el directorio que se
va a utilizar en producción
2.
ios-arm64_i386_x86_64-simulator -> este es el
directorio que se va a utilizar en el simulador de XCode
2.
Abrimos el archivo
ios-arm64_armv7/SibboFramework.framework/index.html.
3.
Sustituir {{URL}} por la URL que le proporcionamos.
4.
Abrimos el archivo
ios-arm64_i386_x86_64-simulator/SibboFramework.framework/index.html.
5.
Sustituir {{URL}} por la URL que le proporcionamos.
6.
Abrimos el proyecto en XCode y añadimos el
framework a la sección Frameworks, Libraries, and Embedded Content de la
pestaña General en el Target elegido.
7.
Comprobamos que aparece como Embed & Sign
8.
Importamos la librería en el proyecto con el
siguiente import:
9.
Para iniciar la librería, instanciamos el objeto
shared de SibboCMP con:
let sibboCMP = SibboViewModel.shared
Con el shared instanciado podemos interactuar con la librería de la siguiente manera: Siempre al inicio de la aplicación, desde el método viewDidLoad hay que llamar al método showConsentTool pasándole el viewController desde el que se quiere lanzar, para que muestre la interfaz del CMP si es necesario. Para realizar esto se hace lo siguiente:
1.
let sibboCMP =
SibboViewModel.shared
2.
sibboCMP.showConsentTool(fromController: self,
forceOpen: true, completion: { showed in
3.
if showed {
4.
print ("CMP
shown")
5.
} else {
6.
print ("CMP not
shown")
7.
}
El parámetro dataSavedCallback es un bloque de código opcional que se ejecutará después de que los datos se hayan guardado. Este bloque no recibe ningún parámetro y no devuelve ningún valor. Puedes utilizar este bloque para realizar cualquier acción que necesites después de que los datos se hayan guardado, como actualizar la interfaz de usuario, enviar una notificación, etc.
Para utilizar el dataSavedCallback en UIKit , se realiza de la siguiente manera:
1.
sibboCMP.showConsentTool(fromController: self,
forceOpen: true, completion: { showed in
2.
if showed {
3.
print ("CMP
shown")
4.
} else {
5.
print ("CMP not
shown")
6.
}
7.
}, dataSavedCallback: {
8.
// This block is
executed after the consent data has been successfully saved
9.
// You can perform any
actions here that should take place after data is saved
10.
print("Data has been saved successfully.")
11.
}
12.})
Mostrar la interfaz de consentimiento desde nuestra app en otra sección
El valor dataSavedCallback es opcional.
1.
sibboCMP.showConsentTool(fromController: self,
forceOpen: true, completion: { showed in
2.
if showed {
3.
print ("CMP
shown")
4.
} else {
5.
print ("CMP not
shown")
6.
}
7.
}, dataSavedCallback: {
8.
// This block is
executed after the consent data has been successfully saved
9.
// You can perform any
actions here that should take place after data is saved
10.
print("Data has been saved successfully.")
11.
}
12.})
Es obligatorio añadir a la app que alberga el CMP, un enlace o botón con el texto Cookies o Configuración de cookies, que dispara el método
- sibboCMP.showConsentTool( fromController: self, forceOpen: true, completion: { showed in }, dataSavedCallback: {} )
esto reflotará el CMP.
Implementación en SwiftUI
Para implementar la versión iOS de SibboCMP deberá seguir los siguientes pasos:
- Abrimos el framework que le
proporcionamos en un editor de código. Hay dos directorios
principales:
1.
ios-arm64_armv7 -> este es el directorio que se
va a utilizar en producción
2.
ios-arm64_i386_x86_64-simulator -> este es el
directorio que se va a utilizar en el simulador de XCode
2.
Abrimos el archivo ios-arm64_armv7/SibboFramework.framework/index.html.
3.
Sustituir {{URL}} por la URL que le proporcionamos.
4.
Abrimos el archivo
ios-arm64_i386_x86_64-simulator/SibboFramework.framework/index.html.
5.
Sustituir {{URL}} por la URL que le proporcionamos.
6.
Abrimos el proyecto en XCode y añadimos el
framework a la sección Frameworks, Libraries, and Embedded Content de la
pestaña General en el Target elegido.
7.
Comprobamos que aparece como Embed & Sign
8.
Importamos la librería en el proyecto con el
siguiente import:
- Dentro de tu vista, crea una variable de estado
isPresented
que controlará si se muestra o no
la herramienta de consentimiento.
- @State private var isPresented = true.
- En el cuerpo de tu vista, usa el
modificador
fullScreenCover
para presentar la herramienta de
consentimiento como una vista de pantalla completa. Para controlar si se
muestra o no la vista, vincula isPresented
a fullScreenCover
.
struct ContentView: View {
@State
private var isPresented = true
var body:
some View {
Text("SibboFramework")
.fullScreenCover(isPresented: $isPresented) {
SibboViewModel.shared.consentToolViewSwiftUI(forceOpen: true) { showed
in
if showed {
print("Mostrado!!!")
} else {
print("No
mostrado!!!")
}
isPresented = false
}
.edgesIgnoringSafeArea(.all)
}
}
}
El primer parámetro es un indicador booleano que, si es true, forzará la apertura de la herramienta de consentimiento. El segundo parámetro es un bloque de finalización que se ejecutará cuando la función termine. Este bloque recibe un booleano que indica si la herramienta de consentimiento se mostró o no.
Cuando la herramienta de consentimiento se cierra, isPresented se establece en false para ocultar la vista.
Para la integración del CMP con la publicidad programática vea el apartado Métodos en iOS.
Para implementar el CMP en iOS debe hacernos llegar el Bundle Id de la app. De este modo podremos incluirla a nuestra whitelist. De lo contrario, al finalizar el proceso de implementación, recibirá un mensaje en la consola de XCode indicándole que la aplicación no está validada.
Gestión de entornos de desarrollo y producción en Swift con banderas de preprocesamiento
En este código Swift, la transición de un entorno de desarrollo a un entorno de producción se gestiona utilizando la característica de preprocesamiento de Swift. Al construir tu proyecto en Xcode, puedes definir varias configuraciones de compilación. Aquí se define y activa una bandera de preprocesamiento llamada DEBUG cuando estás en un entorno de desarrollo. Esta bandera se utiliza para determinar el valor del enum Environment que se debe usar.
- #if DEBUG
- private let environment: Environment = .development
- #else
- private let environment: Environment = .production
- #endif
Esto significa que cuando estás compilando y ejecutando tu proyecto en un entorno de desarrollo (probablemente en un simulador o en un dispositivo a través de Xcode), la variable de entorno se establecerá en .development. Por otro lado, cuando compilas tu proyecto para un entorno de producción (probablemente cuando estás preparando una versión para distribución en la App Store o para usuarios finales), la bandera DEBUG no estará definida. En consecuencia, la variable de entorno se establecerá en .production.
Esta configuración es una práctica común en el desarrollo de iOS para diferenciar entre diferentes entornos en tiempo de compilación. Permite a los desarrolladores utilizar diferentes configuraciones o ajustes en función de si están en proceso de desarrollo y prueba de su aplicación, en comparación con cuando están preparando una versión de lanzamiento para distribución.
Por ejemplo, es posible que desees utilizar diferentes URL de servidor, habilitar registros adicionales o utilizar diferentes ajustes de aplicación en un entorno de desarrollo en comparación con un entorno de producción. La bandera DEBUG y el valor resultante del enum Environment te permiten realizar estos ajustes automáticamente en función de la configuración de compilación actual.