Apps Móviles
Recoge el payload cifrado del dispositivo con el SDK nativo y reenvíalo a tu backend para que lo registre en SmartID.
Antes de integrar, instala el SDK en Getting Started → Instalar el SDK →
GetRawData
Recoge la huella del dispositivo de forma asíncrona y la devuelve codificada. Llama este método justo antes de que el usuario envíe el formulario de login.
SmartId
.getInstance()
.GetRawData(getApplicationContext(), "https://your-backend.com")
.onSuccess { time, response ->
// response: encoded device payload
// forward to your backend alongside user credentials
}
.onFailure { time, message, errorCode ->
// still submit the login — send data as empty string
}
.start() SID.shared.startLocation()
SID.shared
.getRawData("https://your-backend.com")
.onSuccess(success: { time, encodedData in
// encodedData: encoded device payload
// forward to your backend alongside user credentials
})
.onFailure(failure: { time, message, errorCode in
// still submit the login — send data as empty string
})
.start() // Just before form submission
SmartID.getRawData(
applicationBackendDomain: 'https://your-backend.com',
)
.onSuccess((time, response) {
// response: encoded device payload
// forward to your backend alongside user credentials
})
.onFailure((time, message, errorCode) {
// still submit the login — send data as empty string
})
.start() import { SmartID } from 'capacitor-smartid';
// iOS only — initialize GPS sensor
await SmartID.startLocation();
try {
const result = await SmartID.getRawData({
backendDomain: 'https://your-backend.com'
});
// result.data: encoded device payload
// forward to your backend alongside user credentials
} catch (error) {
// still submit the login — send data as empty string
} Parámetros del método
| Parámetro | Plataforma | Tipo | Descripción |
|---|---|---|---|
context | Android | Context | Contexto de la aplicación. Requerido. |
applicationBackendDomain (backendDomain en Capacitor) | Todas | String | URL de tu backend. Opcional. Usado para SSL pinning y detección de pharming. |
Parámetros del callback
| Parámetro | Callback | Tipo | Descripción |
|---|---|---|---|
time | Éxito / Falla | Long | Duración de la ejecución en milisegundos |
response | Éxito | String | Payload cifrado del dispositivo. Envíalo tal cual al campo data de la API. |
message | Falla | String | Descripción del error |
errorCode | Falla | Int | Código del error |
Si el SDK devuelve un callback de Failure, aún debes enviar la solicitud de login a tu backend, pero con un campo data vacío.
Flujo completo de login
El SDK corre en el cliente. El único que llama a la API de SmartID es tu backend.
App llama GetRawData
Android/iOS/Flutter: en el callback onSuccess, el parámetro response contiene el payload cifrado. Capacitor: el resultado está en result.data del bloque try. Guárdalo hasta que el usuario envíe el formulario.
App envía credenciales + payload a tu backend
Incluye el valor de response junto al usuario y contraseña en tu request a tu propio servidor. Si el SDK falló, usa un string vacío.
Tu backend llama a la API de SmartID
Tu servidor hace un POST al endpoint de login con los atributos del usuario y el payload cifrado.
/api/v5/analytics/app/login curl -X POST https://<api-url>/api/v5/analytics/app/login \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer <license>" \\
-d '{
"channelId": 2,
"user": "jlopez",
"session": "445613456fa",
"publicIp": "20.201.64.54",
"data": "<response from GetRawData, empty string on failure>"
}' | Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
channelId | integer | Requerido | Identificador de tu canal SmartID |
user | string | Requerido | Nombre de usuario o identificador único |
session | string | Opcional | Token de sesión de tu aplicación |
publicIp | string | Requerido | IP pública del usuario |
data | string | Requerido | Payload cifrado de GetRawData. String vacío si el SDK falló. |
SmartID responde 200 OK
SmartID registra el evento y responde con 200 OK. Procede con tu lógica normal de login.
Logout
Cuando el usuario cierra sesión, notifica a SmartID desde tu backend. No se necesita llamada al SDK desde el cliente.
/api/v5/analytics/app/logout curl -X POST https://<api-url>/api/v5/analytics/app/logout \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer <license>" \\
-d '{
"channelId": 2,
"user": "jlopez",
"session": "445613456fa"
}' publicIp y data son opcionales en el logout. channelId, user y session son suficientes para cerrar el evento.