Submit a TestFlight — VeriX (iOS)
Guía completa, ya probada de punta a punta, para subir un build de VeriX a TestFlight y que un tester lo instale en su iPhone. Incluye el método de autenticación que sí funciona en esta cuenta de Apple Developer (Nexus 33 Group LLC) y por qué el método "estándar" (API Key) no sirve aquí.
Requiere tener ya un build de iOS generado. Ver
BUILD.mdpara eso (scripts\build.ps1 -Env test -Platform ios).
⚠️ Importante: usar Apple ID + App-Specific Password, NO API Key
La forma "recomendada" por Expo para eas submit es una API Key de App Store Connect (.p8 + Key ID + Issuer ID). En esta cuenta esa forma no funciona — probamos 5 variantes distintas (key manual, .bat con variables de entorno, generación automática por EAS, servicio de credenciales cifrado eas credentials, y una segunda key nueva generada desde cero) y las 5 fallaron con el mismo error:
Error: Apple 403 detected - Access forbidden.
This request is forbidden for security reasons - The API key in use does not allow this request
× Failed to fetch App Store Connect API Key.
Se descartaron como causa: rol de la key (era Admin), tipo de key (Team Keys, que es el correcto), Términos y Condiciones (aceptados), membresía de Apple Developer (activa y pagada), y corrupción del archivo .p8 (se confirmó que nunca se abrió/editó). El patrón (2 keys distintas, mismo error exacto) apunta a una restricción a nivel de cuenta que Apple no expone con un mensaje claro — posiblemente ligada a que la membresía de la organización se aprobó recientemente.
La solución que sí funcionó: autenticar con Apple ID + una App-Specific Password, en vez de una API Key. Es un mecanismo distinto dentro de eas-cli que no pasa por la llamada que estaba fallando.
Paso 1 — Generar una App-Specific Password
Esto se hace en la cuenta personal de Apple, no en App Store Connect (son sitios distintos).
- Ve a https://appleid.apple.com (no
appstoreconnect.apple.com). - Inicia sesión con el Apple ID que tiene acceso al equipo Nexus 33 Group LLC (ej.
hectoregarciap@hotmail.com). - Click en Sign-In and Security.
- Busca la tarjeta App-Specific Passwords → click en ella.
- Click en + para generar una nueva.
- Ponle un nombre descriptivo, ej.
EAS Submit. - Apple muestra la contraseña en formato
abcd-efgh-ijkl-mnop. Cópiala en ese momento — Apple no la vuelve a mostrar después.
Cada dev del equipo que vaya a hacer
eas submitnecesita generar la suya propia con su propio Apple ID (si tiene acceso al equipo).
Paso 2 — Configurar eas.json
Agrega el appleId (esto no es secreto, se puede dejar en el repo) dentro del perfil de submit que uses:
"submit": {
"test": {
"ios": {
"appleId": "hectoregarciap@hotmail.com"
}
}
}
Paso 3 — Setear la contraseña como variable de entorno (por sesión, no se guarda en ningún archivo)
En PowerShell, antes de correr el submit:
$env:EXPO_APPLE_APP_SPECIFIC_PASSWORD = "abcd-efgh-ijkl-mnop"
No hay confirmación visual — es normal. Esta variable solo vive en esa ventana de terminal; se pierde al cerrarla (por diseño, para no dejarla en disco).
Para no repetir esto cada sesión (opcional, persiste solo en tu máquina, nunca en el repo):
[System.Environment]::SetEnvironmentVariable("EXPO_APPLE_APP_SPECIFIC_PASSWORD", "abcd-efgh-ijkl-mnop", "User")
(abre una terminal nueva para que tome efecto)
Paso 4 — Correr el submit
En la misma terminal donde seteaste la variable:
npx eas-cli submit -p ios --profile test
Selecciona el build que quieres subir cuando te pregunte. Con la contraseña específica ya en el entorno, no debería pedirte ninguna API Key — autentica directo con el Apple ID.
Al terminar deberías ver:
√ Submitted your app to Apple App Store Connect!
Your binary has been successfully uploaded to App Store Connect!
Apple tarda 5-10 minutos en procesar el build (a veces más). Llega un correo cuando termina.
Paso 5 — Agregar testers en App Store Connect
- Ve a https://appstoreconnect.apple.com → selecciona la app VerixApp.
- Pestaña TestFlight → sección iOS Builds.
- Una vez el build aparece con estado "Ready to Submit" o "Ready to Test", entra al build (click en el número/ícono).
- Si pide Export Compliance (uso de encriptación), respóndelo según corresponda a la app (la mayoría de apps que solo usan HTTPS estándar responden que no usan encriptación propia / usan solo la exenta).
- Vuelve a TestFlight → Internal Testing → el grupo ya existente (ej. "Team (Expo)", creado automáticamente por Expo).
- Click en el grupo → pestaña Testers → + para agregar un email.
Requisito: para poder agregar a alguien como tester interno, esa persona debe existir primero como usuario del equipo en Users and Access → People. Si su email no aparece, hay que invitarla ahí primero.
Paso 6 — El tester instala VeriX
Desde el iPhone de la persona invitada:
- Revisa el correo — llega una invitación de Apple/TestFlight con el nombre de la app y un código de 8 caracteres (ej.
BHHDZRWF). - Instala la app TestFlight desde el App Store, si no la tiene.
- Abre TestFlight → toca Redeem.
- Escribe el código del correo.
- VeriX aparece en la lista → toca Install.
El código de canje es único por invitación/persona — cada tester tiene el suyo, no se puede compartir entre dos personas.
Resumen rápido (una vez ya configurado todo)
# 1. Generar build (ver BUILD.md)
.\scripts\build.ps1 -Env test -Platform ios
# 2. Setear la contraseña (si no está persistida ya)
$env:EXPO_APPLE_APP_SPECIFIC_PASSWORD = "abcd-efgh-ijkl-mnop"
# 3. Submit
npx eas-cli submit -p ios --profile test
# 4. Esperar correo de Apple (~5-10 min)
# 5. Agregar tester en App Store Connect (si es alguien nuevo)
# 6. El tester canjea el código en TestFlight desde su iPhone
Ver también
BUILD.md— cómo generar el build (.ipa) con versión y nombre automáticos.distribucion-ios-eas.md— alternativa de distribución ad hoc (sin pasar por TestFlight, instalación directa en dispositivos registrados).distribucion-android-eas.md— equivalente para Android.
No comments to display
No comments to display