SDK para iOS
El SDK de iOS recoge las señales del dispositivo y de su entorno en cada operación sensible y las envía al motor antifraude de Ironchip. Úsalo si tu aplicación móvil es nativa de iOS.
Requisitos
Sección titulada «Requisitos»| Plataforma | Versiones soportadas |
|---|---|
| iOS | 13.0.0+ |
Instalación
Sección titulada «Instalación»Añadir el paquete con Xcode
Sección titulada «Añadir el paquete con Xcode»-
En Xcode, ve a la raíz de tu aplicación (por ejemplo,
ExampleApp.xcodeproj), selecciona el elementoExampleAppen PROJECT y abre la tercera pestaña, Package Dependencies. -
Haz clic en el botón +.
-
En la ventana emergente, pega la URL del repositorio en el campo de búsqueda y haz clic en Add Package: https://github.com/Ironchip-Security/LBFraud-SDK-iOS.git
-
En Dependency Rule, elige una versión exacta, un rango de versiones o una rama. Elige la versión exacta
1.2.10(la última publicada) o la regla Up to Next Major Version desde1.2.10, que facilita las actualizaciones del paquete.
Añadir la capacidad de Wi-Fi
Sección titulada «Añadir la capacidad de Wi-Fi»Para usar Ironchip LBFraud como Swift Package, añade una capacidad al target de tu aplicación: ve a Signing & Capabilities y añade Access WiFi Information.

Añadir los permisos de ubicación
Sección titulada «Añadir los permisos de ubicación»En el target de la aplicación, abre la pestaña Info y añade estas claves. En cada una, escribe la descripción como cadena de texto:
Privacy - Location Always and When In Use Usage DescriptionPrivacy - Location When In Use Usage DescriptionPrivacy - Location Always Usage DescriptionLSApplicationQueriesSchemes: este permiso sirve para saber si el dispositivo tiene jailbreak.

Solicitar el permiso de ubicación
Sección titulada «Solicitar el permiso de ubicación»Antes de usar el SDK, la aplicación debe solicitar el permiso de ubicación:
import CoreLocation
let locationManager = CLLocationManager()locationManager.requestWhenInUseAuthorization()Uso en una aplicación
Sección titulada «Uso en una aplicación»Llama al método de inicialización de la biblioteca en el hilo principal.
import LBFraudSDKiOS...
// Sustituye apikey por la API key generada en la consola.let ironchipLBFraud = LBFraudSDK.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")// El SDK envía las transacciones al entorno de producción de Ironchip.
// Analiza una transacción con el motor antifraude de Ironchiplet extraData: [String: Any] = [ "concept": "Book august", "amount": 60, "operation": "booking"]
// transactionId (obligatorio, único): identificador con el que después pedirás el informe// userId (obligatorio): identificador del usuario// extraData (opcional): información adicional para el análisis
// sendTransaction admite dos callbacks: el primero se ejecuta al terminar la transacción// y el segundo si se produce un error durante el proceso.
ironchipLBFraud.sendTransaction(transactionId: "random_identifier_generated", userId: "john.doe@gmail.com", extraData: extraData, finish: { // Código a ejecutar cuando la transacción ha terminado. }, onError: { err in
// Código a ejecutar si se produce un error durante la transacción.
// Ejemplo: //if(err is TransactionError) {
// let transactionError = err as! TransactionError
// print(transactionError.traceability_id) // print(transactionError.message) // print(transactionError.http_code) // print(transactionError.code) //} else { // print("NetworkError: ", err) //} })Ejemplo
Sección titulada «Ejemplo»Ejemplo completo: tras un inicio de sesión correcto, se anonimiza el identificador del usuario con SHA-256 y se envía la transacción.
import LBFraudSDKiOSimport Foundationimport CommonCrypto
// Sustituye apikey por la API key generada en la consola.let ironchipLBFraud = LBFraudSDK.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
// Inicia sesión y envía la transacción si es correctafunc login(username: String, password: String) { Task { let loginSuccessful = await performLogin(username: username, password: password)
if loginSuccessful { // Si el inicio de sesión es correcto, llama a sendTransaction con los parámetros necesarios let transactionID = generateRandomTransactionID(length: 10) // Genera un ID de transacción único let anonymizedUserID = anonymizeUserID(username) // ID de usuario anonimizado
let extraData: [String: Any] = [ "amount": 30, // Usa una cantidad apropiada "operation": "login" // Especifica la operación ]
await sendTransactionAfterLogin(transactionID: transactionID, anonymizedUserID: anonymizedUserID, extraData: extraData) } else { // Gestiona el fallo del inicio de sesión } }}
// Inicio de sesión simulado y asíncronofunc performLogin(username: String, password: String) async -> Bool { try? await Task.sleep(nanoseconds: 2 * 1_000_000_000)
return true}
// Envía la transacción tras un inicio de sesión correctofunc sendTransactionAfterLogin(transactionID: String, anonymizedUserID: String, extraData: [String: Any]) async { ironchipLBFraud.sendTransaction(transactionId: transactionID, userId: anonymizedUserID, extraData: extraData, finish: { // Código a ejecutar cuando la transacción ha terminado. }, onError: { err in // Código a ejecutar si se produce un error durante la transacción. })}
// Genera un ID de transacciónfunc generateRandomTransactionID(length: Int) -> String { let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" var randomID = "" for _ in 0..<length { if let randomCharacter = characters.randomElement() { randomID.append(randomCharacter) } } return randomID}
// Recorta, convierte a minúsculas y calcula el hash del userIdfunc anonymizeUserID(_ userId: String) -> String { let trimmedLowercaseUserID = userId.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() return sha256Hash(trimmedLowercaseUserID)}
// Calcula el hash con SHA-256func sha256Hash(_ input: String) -> String { let inputData = Data(input.utf8) var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH)) inputData.withUnsafeBytes { _ = CC_SHA256($0.baseAddress, CC_LONG(inputData.count), &hash) }
return hash.map { String(format: "%02x", $0) }.joined()}Registro de cambios
Sección titulada «Registro de cambios»1.2.10 (2023-10-11)
Sección titulada «1.2.10 (2023-10-11)»Añadido
- Detección de comunicación.
- Tipo de red de la SIM (2G, 3G, 4G, 5G).
1.2.9 (2023-05-18)
Sección titulada «1.2.9 (2023-05-18)»Añadido
- Se añade la versión del SDK al modelo de transacción.
1.2.8 (2023-05-12)
Sección titulada «1.2.8 (2023-05-12)»Eliminado
- Se modifica el modelo de transacción para eliminar la información sobre las tarjetas SIM y eSIM del dispositivo.
1.2.7 (2023-03-23)
Sección titulada «1.2.7 (2023-03-23)»Añadido
- Commons se enlaza desde LBFraud en lugar de estar embebido.
1.2.6 (2023-03-15)
Sección titulada «1.2.6 (2023-03-15)»Añadido
- Se modifica el modelo de transacción para incluir información sobre las tarjetas SIM y eSIM del dispositivo.
1.2.5 (2023-02-02)
Sección titulada «1.2.5 (2023-02-02)»Cambiado
- Se modifica el modelo de transacción para incluir el estado de los permisos solicitados.
- Se modifica el modelo de transacción para incluir si los proveedores de GPS y Wi-Fi están habilitados.
1.2.4 (2022-12-20)
Sección titulada «1.2.4 (2022-12-20)»Cambiado
- Corregido el problema al validar la aplicación en la App Store.
- Logs del servicio de ubicación para iOS 13.
1.2.3 (2022-12-09)
Sección titulada «1.2.3 (2022-12-09)»Cambiado
- Corregido un problema con la identificación de la huella digital (fingerprint).
- Gestión de llamadas HTTP externas.
1.2.2 (2022-11-30)
Sección titulada «1.2.2 (2022-11-30)»Cambiado
- Cambian algunas propiedades del dispositivo en el modelo de transacción.
1.2.1 (2022-11-22)
Sección titulada «1.2.1 (2022-11-22)»Cambiado
- Refactorización de nombres de clase.
- Las etiquetas de los logs se cambian para que coincidan con la refactorización.
- El constructor ya no admite un host de URL, solo permite seleccionar el entorno deseado.
- El servicio de GPS lanza un error cuando el permiso no está concedido o la localización está deshabilitada.
1.2.0 (2022-10-31)
Sección titulada «1.2.0 (2022-10-31)»Añadido
- Registros de depuración (logs).
Cambiado
- Cambios en el modelo de transacción.
- Gestión de nuevos errores en la biblioteca Commons.
Eliminado
- Errores de red personalizados: ahora se lanzan los genéricos.
1.1.8 (2022-10-25)
Sección titulada «1.1.8 (2022-10-25)»Cambiado
- La versión 1.1.7 se promociona a 1.1.8 por motivos organizativos.
1.1.7 (2022-10-25)
Sección titulada «1.1.7 (2022-10-25)»Añadido
- Compatibilidad con iOS 13 y posteriores.
Cambiado
- La URL del paquete pasa a GitHub.
1.1.6 (2022-09-14)
Sección titulada «1.1.6 (2022-09-14)»Eliminado
printinnecesarios.
1.1.5 (2022-09-14)
Sección titulada «1.1.5 (2022-09-14)»Añadido
- La biblioteca Commons lanza errores personalizados y LBFraud los relanza.
Cambiado
- Se renombran los servicios de la biblioteca Commons.
1.1.4 (2022-09-12)
Sección titulada «1.1.4 (2022-09-12)»Añadido
- Fichero
CHANGELOGen el proyecto.
Cambiado
- Cambian los nombres y la estructura de los parámetros del modelo.
1.1.2 (2022-09-03)
Sección titulada «1.1.2 (2022-09-03)»Cambiado
- Cambia el nombre del repositorio del
.xcframework.zip.
1.1.1 (2022-08-27)
Sección titulada «1.1.1 (2022-08-27)»Añadido
- Ahora el proyecto tiene dos
.xcframework: uno de la biblioteca Commons y otro de LBFraud.
Cambiado
- Ahora el paquete Swift obtiene el
.xcframeworkde un repositorio remoto, no de uno local.
1.1.0 (2022-08-24)
Sección titulada «1.1.0 (2022-08-24)»Añadido
- Fichero de licencia (
LICENSE) en el proyecto.
1.0.9 (2022-08-23)
Sección titulada «1.0.9 (2022-08-23)»Añadido
- Primera versión estable del Swift Package con un XCFramework llamado
LBFraudSDKiOS.xcframework.
¿Te ha resultado útil esta página?
Gracias. Lo tendremos en cuenta para mejorar la documentación. Si quieres contarnos qué falta o qué no está claro, escríbenos a support@ironchip.com.