Publicar juego en App Store sin Mac: la ruta que usamos en la nube
Cómo llevamos un juego HTML5 de una PC con Windows a la revisión de Apple con Capacitor, Codemagic y TestFlight, y los errores que nos costaron builds.

Sí, se puede publicar un juego en la App Store sin Mac. La Mac sigue haciendo falta, pero la rentas: el juego HTML5 se empaqueta con Capacitor en tu PC, un servicio en la nube como Codemagic lo compila y lo firma en sus propias Mac, el build llega a App Store Connect y a TestFlight, y la ficha, la privacidad y el envío los terminas en el navegador. Lo que no te puedes saltar es un iPhone, porque alguien tiene que jugar el build antes que Apple.
Lo hicimos desde Windows con nuestro juego de acción Little Ninja Dash. El primer build exitoso en la nube tardó unos seis minutos, y la app pasó a revisión de Apple el 19 de octubre de 2026, donde nuestros registros la muestran como Waiting for Review. Esta guía no reporta un resultado de la revisión. Los datos de Apple y Codemagic salen de sus páginas oficiales, consultadas el 30 de octubre de 2026. El resto es lo que registran nuestras notas, incluido lo que salió mal.
Lo que necesitas, y lo que haría una Mac
- Membresía del Apple Developer Program: 99 dólares por año de membresía. Pueden inscribirse personas y organizaciones. Las organizaciones necesitan un número D-U-N-S y un sitio web público.
- Una cuenta de Codemagic. Su plan individual gratis trae 500 minutos de build al mes en macOS M2 y un build a la vez; después, el minuto de Mac mini M2 cuesta US$0.095. Los minutos gratis son para un solo usuario, no para equipos.
- Un repositorio Git privado con tu proyecto. Codemagic compila desde el repositorio que conectas. Con nuestras plantillas, el repositorio tiene que ser privado: uno público redistribuiría el código fuente, y la licencia lo prohíbe.
- Un iPhone con la app TestFlight, para probar el build real.
- Un juego que funcione sin conexión desde su propia carpeta, empaquetado con Capacitor.
Desde el 28 de abril de 2026, Apple exige que las apps que se suben a App Store Connect estén compiladas con Xcode 26 o posterior y un SDK de iOS 26. La página de iOS de Capacitor también pide Xcode 26.0 o posterior y soporta iOS 15 en adelante. Xcode solo corre en macOS, y por eso el build ocurre en las máquinas de Codemagic y no en tu PC.
Nuestras ediciones de plantilla son juegos para navegador. La página de cada edición dice que no incluye versiones nativas de app. Una licencia cubre un producto final, y puedes publicar ese juego donde quieras, la App Store y Google Play incluidas. No puedes revender la plantilla en sí. Si piensas cobrarles a los jugadores, con una app de pago o compras dentro de la app, pregúntanos antes.
Ver las plantillas y lo que incluye cada edición
Paso 1: crear el proyecto iOS en Windows
Si ya tienes un proyecto de Capacitor para Android, instala @capacitor/ios y ejecuta npx cap add ios. Eso crea la carpeta ios/, incluso en Windows. No puedes abrirla en Xcode en tu equipo, así que cada cambio al proyecto nativo es una edición de archivo que revisas en el siguiente build en la nube.
- Ícono: un PNG de 1024 por 1024 sin transparencia.
- Dispositivos y orientación: nuestro juego es solo para iPhone y solo en horizontal. Aceptar iPad suma capturas de iPad y más diseños que probar.
- Cifrado: la ayuda de cumplimiento de exportación de Apple indica actualizar el Info.plist para no contestar las preguntas de cifrado en cada envío. Nuestro juego solo usa el HTTPS del sistema, así que pusimos ITSAppUsesNonExemptEncryption en false.
- Solo archivos incluidos: el juego va dentro de la app y nunca carga nuestro sitio. La pauta 4.2 de Apple pide apps que vayan más allá de un sitio web reempaquetado.
¿Vas a partir de una plantilla? Velvet Pool es una que empaquetamos con Capacitor para Google Play, así que la carpeta del juego ya pasó por este paso en Android. Ninguna de nuestras plantillas ha pasado todavía por la revisión de la App Store.
Ver Velvet Pool, una plantilla que ya empaquetamos con Capacitor
Paso 2: firmar sin Mac y sin Keychain
La firma era la parte que pedía una Mac. Con una clave de la API de App Store Connect, Codemagic la hace en la nube.
- En el sitio de desarrolladores de Apple, crea un App ID (bundle identifier) para el juego, con In-App Purchase si vas a vender algo dentro.
- En App Store Connect, crea el registro de la app con ese bundle ID, un SKU y el idioma principal.
- Genera una clave de la API de App Store Connect. La documentación de Codemagic recomienda una clave dedicada para Codemagic. Agrégala en las integraciones de Codemagic y nunca pongas el archivo de la clave en el repositorio.
- Deja que Codemagic genere el certificado de distribución y obtenga el perfil de aprovisionamiento con la clave. Puede recuperar certificados que él mismo generó y perfiles del portal de desarrolladores de Apple.
Lo que nos salió mal
- Los dos primeros builds fallaron porque todavía no había perfil de aprovisionamiento para el bundle ID. Prepara certificado y perfil antes del primer build.
- Un perfil importado sin reference name en Codemagic no funcionó, y el botón falló sin avisar. Llena siempre el nombre.
- El primer registro de la clave falló porque escribimos mal el Issuer ID. Cópialo y pégalo desde la página de claves de Apple.
- El número de build siempre tiene que subir. Pedirle a Apple el último número falló mientras una subida anterior seguía procesándose, así que pasamos a un número sacado del reloj.
Paso 3: build en Codemagic y prueba en TestFlight
La receta del build vive en un archivo codemagic.yaml en el repositorio. El nuestro instala las dependencias, prepara los archivos del juego, los sincroniza con el proyecto iOS con npx cap sync ios, aplica los perfiles y genera el IPA en una máquina Mac mini M2. Luego Codemagic publica el build en App Store Connect. El primer build exitoso tardó unos seis minutos, y el de producción, más adelante, menos de cuatro.
Una sorpresa: con submit_to_testflight en false, Codemagic igual subió el build a App Store Connect. La documentación de Codemagic describe esa opción como la necesaria para distribuir a grupos de prueba.
Límites de TestFlight
- Testers internos: hasta 100 usuarios de App Store Connect de tu equipo.
- Testers externos: hasta 10,000, después de que App Review aprueba el primer build para prueba externa.
- Un build queda disponible para los testers hasta por 90 días.
La invitación de tester interno queda pendiente hasta que se acepta desde el correo de TestFlight, y la app no aparece en TestFlight antes de eso. Revisa la carpeta de spam.
Lo que encontró el iPhone y Windows no
- Los archivos de audio grabados no cargaban. Dentro de la app, fetch devolvía status 0 con los bytes correctos, y nuestro código lo tomaba como error. Aceptar status 0 para archivos locales lo resolvió.
- Botones cortados en horizontal cerca del notch. Rehicimos el diseño de la pantalla de resultados y probamos cada esquina.
- Las pantallas de compra compartidas con Android seguían diciendo Google Play. En iOS ahora dicen App Store.
- Las compras de prueba hechas en TestFlight no se podían deshacer, así que los builds de prueba recibieron un botón que simula no haber comprado. Los builds de la tienda no lo tienen.
Paso 4: ficha en App Store Connect, privacidad y clasificación
Lo demás pasa en el navegador. Este fue el orden que nos funcionó.
- Información de la app: subtítulo, categoría y el cuestionario de clasificación por edad. Contesta con honestidad según lo que el juego muestra de verdad.
- Precio y disponibilidad: precio y países. La disponibilidad en Mac y Apple Vision Pro venía activada por defecto. La apagamos porque nuestro juego está hecho para pantalla táctil.
- Privacidad de la app: Apple pide estos datos para apps nuevas y actualizaciones, incluidas las prácticas de los socios cuyo código va en la app, como redes de anuncios y SDK. El enlace a una política de privacidad pública es obligatorio.
- Compra dentro de la app, si la hay: nombres, descripciones, una captura para la revisión y notas para el revisor.
- Página de la versión: descripción, palabras clave, URL de soporte y de marketing, copyright, el build, notas para la revisión y la forma de lanzamiento. Elegimos lanzamiento manual.
- Capturas y después cada idioma extra con sus propios textos y capturas.
- Capturas: la pauta 2.3.3 dice que deben mostrar la app en uso, no solo el arte del título o la pantalla de inicio. Las nuestras son capturas reales del juego.
- Nombre de la app: un nombre que queríamos ya estaba ocupado en la App Store. Ten listo un segundo nombre, o un nombre con una parte descriptiva corta.
- Notas para la revisión: escribimos que el juego está completo dentro de la app, funciona sin conexión, no pide inicio de sesión y dónde están la compra y el botón de restaurar.
Leer los términos de licencia antes de publicar una plantilla como app
Paso 5: enviar, y lo que revisa Apple
Al enviar publicas las respuestas de Privacidad de la app, confirmas que son verdaderas y mandas el borrador de envío. El nuestro entró el 19 de octubre de 2026 con la versión de la app y su compra única, y el estado pasó a Waiting for Review. Si la revisión vuelve con un rechazo, la respuesta va por el Resolution Center, con hechos, y no con un reenvío a ciegas.
Para un juego hecho con una plantilla, tres pautas pesan más. La 4.2 pide más que un sitio web reempaquetado, así que mantén el juego dentro de la app. La 4.3(a) pide no crear varios bundle IDs de la misma app. La 4.3(b) dice que Apple no quiere apps que no se distinguen de lo que ya abunda. Un reskin tiene que cambiar reglas, contenido e interfaz, no solo el arte.
Lo que incluyen nuestras plantillas, y la parte que podemos hacer
Cada plantilla trae la carpeta del juego lista para alojar, código legible, manual y 6 meses de soporte, o 12 con la extensión. El soporte cubre instalar y usar los archivos entregados y corregir defectos que se puedan reproducir. El empaquetado para iOS, los anuncios nativos, las compras dentro de la app, la configuración del build en la nube y la ficha de la App Store son servicios aparte.
Si prefieres no configurar la firma ni Codemagic, mándanos la plantilla, cómo será tu cuenta de Apple y el plazo. Te respondemos con alcance, precio y tiempos antes de empezar. No publicamos lista de precios para trabajo a medida.
Pedir una cotización para llevar tu juego a la App Store
Preguntas frecuentes sobre publicar un juego en App Store sin Mac
¿Se puede publicar un juego para iPhone sin tener una Mac?
Sí. El build sigue necesitando macOS y Xcode, pero un servicio en la nube como Codemagic los pone. Todo lo demás, de App Store Connect a TestFlight, funciona en el navegador y en un iPhone.
¿Cuánto cuesta publicar en la App Store?
El Apple Developer Program cuesta 99 dólares por año de membresía. El plan individual gratis de Codemagic incluye 500 minutos al mes en macOS M2, y los minutos extra se cobran por minuto. Suma la licencia del juego y el arte de la tienda.
¿Necesito un iPhone?
Para probar de verdad, sí. Nuestro iPhone encontró audio que no sonaba, botones cortados y nombres de tienda equivocados, cosas que el build en Windows y las pruebas en el navegador no mostraron.
¿Apple acepta un juego HTML5 dentro de una app?
No podemos prometer un resultado. La pauta 4.2 pide más que un sitio web reempaquetado, así que metemos el juego completo en la app, lo hacemos funcionar sin conexión y le damos funciones nativas. La pauta 4.3 también aplica a los reskins.
¿Sus plantillas incluyen versión para iOS?
No. Nuestras ediciones son juegos para navegador, y las páginas de cada artículo dicen que no incluyen versiones nativas de app. Puedes seguir esta ruta por tu cuenta o encargárnosla por cotización.
