# Modo Device Owner / MDM básico — guía paso a paso desde cero

Esto es para los equipos que **compres nuevos** y quieras dejar bajo
control total de la empresa (no se puede desinstalar TecnoTrack). Para
equipos que el personal ya trae configurados, sigue usando el QR de
"Vincular" normal del README principal — ese no requiere nada de esto.

No necesitas experiencia previa. Vamos a hacer 4 cosas, en orden:

1. Crear tu firma digital (keystore) — la "llave" que identifica tus
   apps como tuyas, para siempre.
2. Compilar el APK de TecnoTrack firmado con esa llave.
3. Calcular dos códigos (checksums) a partir de ese APK y guardarlos
   en el panel.
4. Configurar un teléfono/tablet nuevo escaneando el QR de
   aprovisionamiento.

---

## Parte 1 — Crear el keystore (tu firma digital)

El keystore es un archivo que solo tú tienes. **Guárdalo con backup en
dos lugares** (ej. tu computadora + una USB o la nube) — si lo pierdes,
nunca más podrás publicar una actualización de la misma app; tendrías
que hacer una app nueva desde cero.

Necesitas tener instalado el JDK (viene incluido con Android Studio).
Abre una terminal en tu computadora y ejecuta:

```bash
keytool -genkeypair -v \
  -keystore tecnotrack-release.keystore \
  -alias tecnotrack \
  -keyalg RSA -keysize 2048 -validity 10000
```

Te va a preguntar:
- Una contraseña para el keystore (anótala, la necesitas siempre).
- Una contraseña para el "alias" (puede ser la misma).
- Tu nombre, empresa (TecnoMania), ciudad, país (GT), etc. — puedes
  poner datos genéricos, no afecta el funcionamiento.

Al terminar tendrás un archivo `tecnotrack-release.keystore`. Guárdalo
fuera de la carpeta del proyecto (nunca lo subas a git/GitHub).

---

## Parte 2 — Compilar el APK firmado

### Opción A: desde Android Studio (más fácil, recomendada)

1. Abre la carpeta `mobile/` de este proyecto en Android Studio.
2. Menú **Build → Generate Signed Bundle / APK…**
3. Elige **APK** (no "Android App Bundle") → Next.
4. En "Key store path" da clic en el archivo, selecciona tu
   `tecnotrack-release.keystore`, pon las contraseñas que creaste, y
   el alias `tecnotrack`.
5. Elige **release** como build variant → Finish.
6. Android Studio te muestra al terminar una notificación
   "APK(s) generated successfully" con un link **locate** — ahí está
   tu archivo, normalmente en
   `mobile/app/release/app-release.apk`.

### Opción B: por línea de comandos

```bash
cd mobile
./gradlew assembleRelease \
  -Pandroid.injected.signing.store.file=/ruta/a/tecnotrack-release.keystore \
  -Pandroid.injected.signing.store.password=TU_PASSWORD_KEYSTORE \
  -Pandroid.injected.signing.key.alias=tecnotrack \
  -Pandroid.injected.signing.key.password=TU_PASSWORD_ALIAS
```

El APK queda en `mobile/app/build/outputs/apk/release/app-release.apk`.

---

## Parte 3 — Calcular los checksums y subir el APK

Necesitas 2 códigos que van fijos en `application/config/mdm.php` del
backend (los mismos para todos los equipos, no cambian por empleado).

### 3.1 — Checksum del archivo APK completo

```bash
openssl dgst -binary -sha256 app-release.apk | openssl base64 | tr '+/' '-_' | tr -d '='
```

Copia el resultado y pégalo en `application/config/mdm.php`, en
`$config['mdm_apk_checksum']`.

### 3.2 — Checksum del certificado con el que firmaste

```bash
keytool -exportcert -alias tecnotrack -keystore tecnotrack-release.keystore \
  | openssl dgst -binary -sha256 | openssl base64 | tr '+/' '-_' | tr -d '='
```

Te pedirá la contraseña del keystore. Copia el resultado en
`$config['mdm_cert_checksum']`.

### 3.3 — Sube el APK a tu servidor

Sube `app-release.apk` a una URL pública y directa por HTTPS, por
ejemplo `https://app.tecnomaniagt.com/descargas/tecnotrack.apk` (sin
login, sin redirecciones — el teléfono nuevo lo va a descargar solo
durante la configuración de fábrica, antes de tener ninguna cuenta).
Pon esa URL en `$config['mdm_apk_url']`.

Con esos 3 valores guardados, ya puedes generar QRs de aprovisionamiento
desde el panel (`Empleados → Aprovisionar (equipo nuevo)`).

---

## Parte 4 — Configurar un teléfono/tablet nuevo

Esto se hace **una vez por equipo**, apenas lo compras, antes de
dárselo al empleado.

1. Si el equipo ya tiene algo configurado, resetéalo primero:
   **Ajustes → Sistema → Restablecer opciones → Borrar todos los datos
   (reset de fábrica)**. Tiene que quedar en la pantalla de bienvenida
   ("¡Hola!" / "Welcome"), sin ninguna cuenta de Google metida.
2. En la pantalla de bienvenida, **toca 6 veces seguidas en cualquier
   parte vacía de la pantalla**. Esto activa el modo de aprovisionamiento
   por código QR (es un gesto oficial de Android, no un truco raro).
3. El teléfono te va a pedir conectarte a una red WiFi — conéctalo (o
   usa datos si el equipo ya trae un chip con línea).
4. Te va a pedir escanear un código QR. Ahí escaneas el que generaste
   en el panel (`Empleados → Aprovisionar → [empleado]`), usando otro
   teléfono o impreso.
5. El equipo automáticamente:
   - Descarga el APK de TecnoTrack desde tu URL.
   - Verifica que el archivo y la firma coincidan con los checksums
     del QR (por seguridad, si no coinciden, se detiene y no instala
     nada raro).
   - Instala la app y la vuelve "Device Owner".
   - Abre la app sola, ya emparejada con el empleado (no hace falta
     escanear el QR de vinculación otra vez).
6. Verifica que quedó protegida: intenta desinstalarla manualmente
   desde **Ajustes → Apps → TecnoTrack → Desinstalar** — debe salir
   bloqueado o sin la opción de desinstalar.
7. Ahora sí, entrega el equipo al empleado con su cuenta de Google
   normal (la puede agregar después sin problema, eso no afecta el
   Device Owner).

### Cómo liberar un equipo (cuando un empleado se va)

Ese equipo queda "atado" a TecnoTrack como Device Owner. Para
reasignarlo a otro empleado o dejar de gestionarlo:

```bash
adb shell dpm remove-active-admin --user 0 com.tecnomania.tecnotrack/.service.TecnoTrackDeviceAdminReceiver
```

(requiere conectar el equipo por USB con depuración activada), o
simplemente vuelve a hacer un reset de fábrica completo — ambos
liberan el Device Owner y puedes aprovisionarlo de nuevo para otro
empleado.

---

## Preguntas frecuentes

**¿Esto funciona en un equipo que el empleado ya trae de su casa?**
No. Device Owner solo se puede activar en el momento del
reset/configuración de fábrica, antes de cualquier cuenta. Para
equipos personales o ya configurados, usa el QR de "Vincular" normal
— la app funciona igual, solo que el empleado sí podría desinstalarla
si quisiera (y tú lo verías reflejado como "desconectado" en el mapa).

**¿Puedo usar las dos formas al mismo tiempo en la empresa?**
Sí. Cada empleado/equipo decide su propio camino: "Vincular QR" para
los que ya tienen equipo, "Aprovisionar" para los que compres nuevos
de aquí en adelante.

**¿Necesito publicar la app en Google Play para esto?**
No. Puedes distribuirla instalando el APK directo (como se hace aquí)
sin pasar por Play Store — es habitual para apps internas de empresa.
