Registro de cambios
[1.2.10] - 2023-10-11 - hoy en día
Agregado
- Detección de comunicación.
- Tipo de red Sim (2G,3G,4G,5G)
Cambiado
Eliminado
[1.2.9] - 2023-05-18 - 2023-10-11
Agregado
- Se agregó la versión sdk al modelo de transacción.
Cambiado
Eliminado
[1.2.8] - 2023-05-12 - 2023-05-12
[1.2.7] - 2023-03-23 - 2023-05-05Agregado
Cambiado
Eliminado
- Se modificó el modelo de transacción para eliminar información sobre las tarjetas SIM y eSIM del dispositivo.
Agregado
- Se ha hecho que Commons se vincule a LBFraud y no se embeba.
Cambiado
Eliminado
[1.2.6] - 2023-03-15 - 2023-03-23
Agregado
- Se modificó el modelo de transacción para agregar información sobre las tarjetas SIM y eSIM del dispositivo.
Cambiado
Eliminado
[1.2.5] - 2023-02-02 - 2023-03-15
Agregado
Cambiado
- Se modificó el modelo de transacción para agregar los estados de los permisos solicitados.
- Se modificó el modelo de transacción para agregar si los proveedores de gps y wifi están habilitados.
Eliminado
[1.2.4] - 2022-12-20 - 2023-02-02
Agregado
Cambiado
- Solucionado el problema al validar la aplicación en Apple Store.
- Logs del servicio de ubicación para las versiones de iOS 13.
Eliminado
[1.2.3] - 2022-12-09 - 2022-12-20
Agregado
Cambiado
- Se solucionó el problema con la identificación de la huella digital.
- Manejar llamadas HTTP externas.
Eliminado
[1.2.2] - 2022-11-30 - 2022-12-09
Agregado
Cambiado
- Cambiar alguna propiedad del dispositivo en el modelo de transacción.
Eliminado
[1.2.1] - 2022-11-22 - 2022-11-30
Agregado
Cambiado
- Refactorización de nombres de clase.
- Se cambiaron las etiquetas en los registros para que coincidan con la refactorización.
- Fraud constructor ya no admite un host de URL, solo permite seleccionar el entorno deseado.
- Servicio GPS, lanza error cuando el permiso no esta aceptado o la localizacion esta desabilitada
Eliminado
[1.2.0] - 2022-10-31 - 2022-11-22
Agregado
- Debug Logs
Cambiado
- Cambios en el modelo de transacción.
- Gestión de nuevos errores en la biblioteca de Commons.
Eliminado
- Errores de red, ahora lanza los genéricos no personalizados
[1.1.8] - 2022-10-25 - 2022-10-31
Agregado
Cambiado
- La versión 1.1.7 se promociona a 1.1.8 por motivos organizativos.
Eliminado
[1.1.7] - 2022-10-25 - 2022-10-25
Agregado
- Compatibilidad para versiones 13+.
Cambiado
- Cambiar URL de Nexus a GitHub.
Eliminado
[1.1.6] - 2022-09-14 - 2022-10-25
Agregado
Cambiado
Eliminado
- Prints innecesarios.
[1.1.5] - 2022-09-14 - 2022-09-14
Agregado
- En la libreria de commons, gestion de errores personalizados, y LBFraud los relanza.
Cambiado
- Cambiar el nombre de los servicios de la libreria commons.
Eliminado
[1.1.4] - 2022-09-12 - 2022-09-14
Agregado
- Agregado el archivo CHANGELOG al proyecto.
Cambiado
- Se han cambiado los nombres de los parámetros del modelo y su estructura.
Eliminado
[1.1.2] - 2022-09-03 - 2022-09-12
Agregado
Cambiado
- Cambiar el nombre del repositorio de nexus de .xcframework.zip.
Eliminado
[1.1.1] - 2022-08-27 - 2022-09-03
Agregado
- Ahora el proyecto tiene dos .xcframework uno de la libreria Commons y el otro de LBFraud.
Cambiado
- Ahora el paquete Swift está obteniendo el .xcframework de uno remoto, no local.
Eliminado
[1.1.0] - 2022-08-24 - 2022-08-27
Agregado
- Archivo de LICENCIA agregado al proyecto.
Cambiado
Eliminado
[1.0.9] - 2022-08-23
Agregado
- Primera versión estable de SwiftPackage con un XCFramework llamado LBFraudSDKiOS.xcframework.
- Añadido archivo gitignore.Cambiado
Eliminado
Configuración
Versiones soportadas
Plataforma | Versiones soportadas |
---|---|
iOS | 13.0.0+ |
Agregue el SDK de autenticación basada en la ubicación de Ironchip
Usando Xcode: Para importar esta dependencia de paquete rápido, en xcode, vaya a la raíz de su aplicación, por ejemplo, ExampleApp.xcodeproj, en la parte superior de PROYECTO, seleccione el elemento ExampleApp y vaya a la tercera pestaña, Dependencias del paquete, seleccione el botón +.
Se abrirá una ventana emergente y en la búsqueda o ingrese la url, copie la url del repositorio y presione el botón Agregar paquete.
En este caso: https://github.com/Ironchip-Security/LBFraud-SDK-iOS.git
Aparece una nueva ventana, en regla de dependencia, puede seleccionar una versión exacta, un rango de versiones, una rama… en este caso para probarlo puede elegir la versión exacta 1.2.9 y finalmente agregar el paquete para usarlo, o un rango como 1.0.9 < 1.2.10, recomendamos para facilitar las actualizaciones de paquetes que utilice un rango de versiones
Para poder usar Ironchip LBFraud como SwiftPackage, deberá agregar una capacidad al objetivo de su aplicación, así que vaya a inicio de sesión y capacidades y agregue acceder a la información de Wi-Fi.
Luego, en la pestaña Destino de la aplicación en info, debe agregar los valores clave del permiso de ubicación.
- Privacidad - Ubicación siempre y cuando esté en uso Descripción de uso e inserte la descripción como cadena
- Privacidad - Ubicación cuando está en uso Descripción de uso e inserte la descripción como cadena
- Privacidad - Ubicación Siempre Descripción de uso e inserté la descripción como cadena
- LSApplicationQueriesSchemes, inserte la descripción (este permiso es para poder saber si el dispositivo tiene jailbreak)
En primer lugar, debe solicitar el permiso de ubicación en su aplicación:
import CoreLocation
let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()
Uso
Usar en una aplicación
El método de inicialización de la libreria debe llamarse en el hilo principal.
import LBFraudSDKiOS
...
// Reemplace apikey con la clave API generada deseada.
let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
// Por defecto nuestro SDK apunta al entorno de producción.
// En caso de que desee apuntar a un entorno diferente:
// let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", environment: Environment.Testing)
//public enum Environment: String {
// case Production
// case Testing
// case Development
//}
//Llame a Ironchip Location Based Antifraud para analizar la transacción
let data: [String: Any] = [
"concept": "Book august",
"amount": 60,
"operation": "booking"
]
//TransactionID (obligatorio, único): solicitud de identificador de transacción para resultados de fraude
//ID de usuario (obligatorio): identificador de usuario
//ExtraData (opcional): información extra para análisis
// SendTransaction se puede proporcionar con 2 devoluciones de llamada, una se ejecuta cuando finaliza la transacción
// y el otro se llama en caso de que haya ocurrido un error durante el proceso de transacción.
ironchipLBFraud.sendTransaction(transactionId: "random_identifier_generated", userId: "john.doe@gmail.com", extraData: extraData, finish: {
// Agregue aquí cualquier código que desee que se ejecute una vez finalizada la transacción.
}, onError: { err in
// Añade aquí cualquier código que quieras ejecutar en caso de 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
import LBFraudSDKiOS
import Foundation
import CommonCrypto
// Reemplaza apikey con la clave API generada deseada.
let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
// Función para realizar el inicio de sesión y llamar a la transacción si es exitosa
func login(username: String, password: String) {
Task {
let loginSuccessful = await performLogin(username: username, password: password)
if loginSuccessful {
// Si el inicio de sesión es exitoso, 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
]
// Llama a sendTransaction después de un inicio de sesión exitoso
await sendTransactionAfterLogin(transactionID: transactionID, anonymizedUserID: anonymizedUserID, extraData: extraData)
} else {
// Manejar el fallo del inicio de sesión
}
}
}
// Función de inicio de sesión simulado asíncrono
func performLogin(username: String, password: String) async -> Bool {
await Task.sleep(2 * 1_000_000_000)
return true
}
// Función para enviar la transacción después del inicio de sesión exitoso
func sendTransactionAfterLogin(transactionID: String, anonymizedUserID: String, extraData: [String: Any]) async {
// Envía la transacción
ironchipLBFraud.sendTransaction(transactionId: transactionID, userId: anonymizedUserID, extraData: extraData, finish: {
// Agrega aquí cualquier código que quieras ejecutar después de que la transacción haya terminado.
}, onError: { err in
// Agrega aquí cualquier código que quieras ejecutar en caso de un error durante la transacción.
})
}
// Función para generar un ID de transacción
func generateRandomTransactionID(length: Int) -> String {
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var randomID = ""
for _ in 0..<length {
if let randomCharacter = characters.randomElement() {
randomID.append(randomCharacter)
}
}
return randomID
}
// Función para recortar, convertir a minúsculas y hashear el userId
func anonymizeUserID(_ userId: String) -> String {
let trimmedLowercaseUserID = userId.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
return sha256Hash(trimmedLowercaseUserID)
}
// Función para realizar hashing usando SHA-256
func 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()
}