Add v9.1.1: Device registry and remote blocking system
- Implement DeviceRegistry for remote device management - Add dashboard for device tracking and blocking - Remote device blocking capability with admin control - Support for device aliasing and notes - Enhanced device management interface - Dashboard with real-time device status - Configurable registry URL in build config 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
25
README.md
25
README.md
@@ -120,6 +120,31 @@ Si por algún motivo olvidas subir el manifiesto, la app igualmente tomará el p
|
||||
- Si `minSupportedVersionCode` es mayor al instalado la app bloqueará el uso hasta actualizar, cumpliendo con el requerimiento de controlar instalaciones.
|
||||
- La descarga se gestiona con `DownloadManager` y, una vez completada, se lanza el instalador usando FileProvider.
|
||||
|
||||
### Dashboard de Dispositivos y Bloqueo Remoto
|
||||
|
||||
Para saber en qué equipo está instalada la app y bloquear el acceso cuando lo necesites, se incluye un dashboard liviano en `dashboard/`:
|
||||
|
||||
1. Instala dependencias y ejecuta el servidor:
|
||||
|
||||
```bash
|
||||
cd dashboard
|
||||
npm install
|
||||
npm start # escucha en http://localhost:4000
|
||||
```
|
||||
|
||||
2. Ajusta `DEVICE_REGISTRY_URL` en `app/build.gradle` para apuntar al dominio/puerto donde despliegues el servidor (por defecto `http://localhost:4000`).
|
||||
3. Distribuye el APK; cada vez que se abra la app enviará un registro a `POST /api/devices/register` con su `ANDROID_ID`, modelo y versión.
|
||||
4. Entra a `http://TU_HOST:4000/` para ver el listado, asignar alias o bloquear/desbloquear dispositivos.
|
||||
|
||||
El servidor guarda los datos en `dashboard/data/devices.json`, por lo que puedes versionarlo o respaldarlo fácilmente. Cada registro almacena:
|
||||
|
||||
- `deviceId`: `Settings.Secure.ANDROID_ID` del equipo
|
||||
- `deviceName`, `manufacturer`, `model`, `osVersion`
|
||||
- `appVersionName`/`Code`
|
||||
- `firstSeen`, `lastSeen`, `blocked`, `notes`
|
||||
|
||||
Cuando presionas “Bloquear”, la app recibe la respuesta `{"blocked": true}` y muestra un diálogo irreversible hasta que lo habilites. Esto añade una capa adicional de control aparte del sistema de actualizaciones.
|
||||
|
||||
## 📱 Estructura del Proyecto
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user