Instalación y soporte
Datos que registra la app
Además de los datos del trabajo, como partes, servicios o materiales, la app recoge información sobre quién lo hace, dónde y con qué dispositivo. Este artículo reúne qué recoge, cuándo, dónde acaba y qué permisos del dispositivo pide, para responder a las preguntas de un cliente o de su responsable de protección de datos sin tener que ir al código.
Ubicación al marcar#
Cada vez que se inicia o se para un servicio desde el marcaje, la app toma la posición del dispositivo y la guarda en el servicio, en SERVICIOS_PARTE:
| Momento | Campos |
|---|---|
| Al iniciar el servicio | GEO_LATITUDENTRADA, GEO_LONGITUDENTRADA |
| Al parar el servicio | GEO_LATITUDSALIDA, GEO_LONGITUDSALIDA |
No hay ningún ajuste para desactivarlo. La app pide la posición con la máxima precisión que permita el dispositivo; si el usuario solo ha concedido la ubicación aproximada, se guarda esa. Espera a tenerla antes de crear el servicio, sin tiempo límite, así que con mala señal de GPS el inicio puede tardar; la hora de inicio es la del momento en que se pulsa. Funciona igual sin conexión. Si no consigue la posición, porque el permiso está denegado o la ubicación del dispositivo está apagada, el servicio se guarda sin coordenadas y sin avisar a nadie. Los campos GEO_IPENTRADA, GEO_IPSALIDA, GEO_NAVEGADORENTRADA y GEO_NAVEGADORSALIDA existen en la entidad, pero la app no los rellena.
La app también usa la posición para centrar el mapa del calendario, pero esa no la guarda.
Firmas#
Al recoger una firma, la app crea un registro en DOCUMENTACION con el guion API_GuardarDocumento y sube la imagen al campo contenedor DOCUMENTO. El registro guarda:
| Campo | Contenido |
|---|---|
DNI_FIRMANTE |
El DNI del firmante. Es obligatorio, aunque la app no comprueba su formato |
OBSERVACIONES_FIRMA |
Las observaciones que se escriban |
DESCRIPCION |
«Firma capturada desde la app móvil el», con la fecha, la hora y el nombre de la persona de la app que la ha recogido |
CONFORME_FIRMA |
Siempre 1 |
ES_FIRMA, ES_MOVIL, DESDE_APP |
1 |
La app no pide el nombre del firmante.
FIRMADO, en el parte o en el presupuesto, es un campo calculado de FileMaker a partir de sus documentos de firma: el registro cuenta como firmado en cuanto su firma llega a FileMaker. Sin conexión, la firma y su imagen se guardan en el dispositivo y se envían al sincronizar, y después la app vuelve a leer el parte o el presupuesto para que su copia local también conste como firmada. Mientras la firma está pendiente, la app la tiene en cuenta para dejar iniciar servicios y salir del parte, pero no marca nada como firmado.
Fotos y documentos#
Las fotos del marcaje se guardan como documentos del parte, en DOCUMENTACION, con la descripción «Foto - Capturada desde la app móvil el», la fecha, la hora y el nombre de la persona. Se suben a la resolución de la cámara, sin comprimir, así que con mala cobertura pueden tardar o no llegar a subirse; en ese caso la app guarda una copia y la reintenta al sincronizar. Sin conexión, la foto se guarda en el dispositivo y se envía al sincronizar.
Los documentos se eligen con el selector de ficheros del sistema y pueden ser de cualquier tipo. Van al mismo campo contenedor DOCUMENTO, salvo los recibos de gasto, que van al campo RECIBO de GASTOS_PARTE.
Dictado por voz#
Los campos de descripción de la tarea y de descripción del trabajo y observaciones internas del parte, y el parte rápido del calendario, se pueden dictar. El audio lo transcribe el reconocedor de voz del propio sistema, el de Google en Android o el de Apple en iOS, que puede enviarlo a sus servidores. La app solo guarda el texto resultante, en el campo correspondiente.
Inicio de sesión#
En cada inicio de sesión, la app consulta su IP pública al servicio ipify y envía al guion AuthApp, junto con el usuario y la contraseña, la versión de la app, la IP pública, la IP local del dispositivo y el nombre de la empresa. Cuando las credenciales son buenas, el guion crea un registro en LOG_SESION con:
| Campo | Contenido |
|---|---|
Desde_App |
1 |
AccountName |
El usuario |
AppVersion |
La versión de la app |
SystemIPAddress_User |
La IP pública |
SystemIPAddress_Host |
La IP local del dispositivo |
Empresa |
El nombre de la empresa |
ConectaA3erp, ConectaA3factura |
Si la empresa tiene la integración activada |
CurrentHostTimestamp |
Fecha y hora del servidor |
LOG_SESION es también la forma más rápida de saber qué versión de la app usa cada persona.
Registro de errores#
Cuando algo falla, la app guarda el error en el dispositivo y lo envía a LOG_ERRORES_APP, por la presentación API_LOG_ERRORES, en la siguiente sincronización. Registra los errores que la propia app captura y también los cierres inesperados.
| Campo | Contenido |
|---|---|
ID_EMPRESA, ID_PERSONA |
Quién estaba trabajando |
ORIGEN |
Dónde se produjo el error, por ejemplo la operación de la cola que falló |
MENSAJE, STACK_TRACE |
El error y su traza, recortados a 4.000 caracteres |
TIPO |
CAPTURADO o NO_CAPTURADO, que es un cierre inesperado |
VERSION_APP |
Versión y compilación, por ejemplo 3.8.5+132 |
PLATAFORMA, MODELO_DISPOSITIVO, VERSION_SO |
El dispositivo |
CONEXION |
ONLINE u OFFLINE, en el momento del error |
FECHA_HORA_APP |
Fecha y hora del dispositivo |
Antes de guardar el mensaje y la traza, la app quita lo que pueda parecer una credencial: tokens, cabeceras de autorización y valores de campos de contraseña. Un mismo error no se registra más de una vez cada 10 minutos. Si el dispositivo acumula más de 200 errores sin enviar, descarta los más antiguos.
Permisos del dispositivo#
| Permiso | Cuándo lo pide la app | Para qué |
|---|---|---|
| Ubicación, mientras se usa la app | Al iniciar o parar un servicio, al abrir el mapa y, en Android, al buscar impresoras Bluetooth | Registrar dónde se marca, centrar el mapa y buscar impresoras |
| Cámara | Al hacer una foto o leer un código de barras | Fotos del marcaje y documentos, y lectura de códigos de artículos |
| Micrófono y reconocimiento de voz | Al abrir el calendario después de iniciar sesión, no al pulsar el micrófono | Dictar descripciones y observaciones |
| Bluetooth | Al imprimir | Conectar con la impresora portátil de tickets |
| Fotos | Al adjuntar una imagen de la galería | Adjuntar imágenes como documentos |
Si el usuario deniega la cámara, la app le avisa y le ofrece abrir los ajustes del sistema. Si deniega la ubicación, el marcaje funciona igual, pero sin coordenadas.
En iOS, los textos que ve el usuario al concederlos explican para qué se usa cada permiso. En la configuración de iOS figuran además la ubicación «siempre», la fototeca y la biblioteca de música, aunque la app no las use.
Servicios externos#
Aparte de FileMaker, la app se comunica con estos servicios:
| Servicio | Para qué y cuándo |
|---|---|
| ipify | Obtener la IP pública, en cada inicio de sesión |
| OpenStreetMap | Las teselas del mapa del calendario |
| Geocodificador del sistema | Traducir entre direcciones y coordenadas en el mapa |
| Reconocedor de voz del sistema | El dictado |
| Google Play y App Store | Comprobar si hay una versión nueva, al arrancar |
| Web de Esofitec | Descargar el PDF del contrato de licencia, en cada arranque |
| Google Maps y el portal de Gabilos | Solo se abren si el usuario pulsa la dirección de un cliente o el acceso al fichaje |
| Aplicación de correo del dispositivo | Enviar el PDF de un documento o la solicitud de cuenta |
Datos que quedan en el dispositivo#
El dispositivo guarda una copia de los datos con los que trabaja y los cambios pendientes de enviar, que pueden incluir firmas con el DNI del firmante. Las credenciales y la configuración de acceso van en el almacenamiento seguro del sistema. El detalle está en Sincronización y caché local.