Pubblicare un gioco sull'App Store senza Mac: la nostra build in cloud
Come abbiamo portato un gioco HTML5 da un PC Windows alla revisione dell'App Store con Capacitor, Codemagic e TestFlight, e gli errori che ci sono costati delle build.

Sì, si può pubblicare un gioco sull'App Store senza Mac. Il Mac serve comunque, ma lo prendi in affitto: un gioco HTML5 viene incapsulato con Capacitor sul tuo PC, un servizio cloud come Codemagic lo compila e lo firma sulle proprie macchine Mac, la build arriva in App Store Connect e TestFlight, e la scheda, i dettagli sulla privacy e l'invio li completi dal browser. Quello che non puoi saltare è un iPhone, perché qualcuno deve giocare la build prima di Apple.
Lo abbiamo fatto da Windows con un nostro gioco d'azione, Little Ninja Dash. La prima build in cloud riuscita ha richiesto circa sei minuti, e l'app è stata inviata ad App Review il 19 ottobre 2026, dove i nostri registri la indicano come In attesa di revisione. Questa guida non riporta un esito della revisione. I dati su Apple e Codemagic vengono dalle loro pagine ufficiali, consultate il 30 ottobre 2026. Il resto è ciò che le nostre note dicono sia successo, comprese le parti andate storte.
Cosa serve per pubblicare sull'App Store senza Mac
- Un'iscrizione all'Apple Developer Program: 99 dollari USA per anno di iscrizione. Possono iscriversi persone fisiche e organizzazioni. Le organizzazioni hanno bisogno di un numero D-U-N-S e di un sito web pubblico.
- Un account Codemagic. Il suo piano gratuito per singoli include 500 minuti di build macOS M2 al mese e una build alla volta; oltre, i minuti su Mac mini M2 costano US$0.095 ciascuno. I minuti gratuiti sono per utenti singoli, non per team.
- Un repository Git privato con il tuo progetto. Codemagic compila dal repository che colleghi. Con i nostri template il repository privato è obbligatorio: uno pubblico ridistribuirebbe il codice sorgente, cosa che la licenza vieta.
- Un iPhone con l'app TestFlight, per provare la build reale.
- Un gioco che funzioni offline dalla propria cartella, incapsulato con Capacitor.
Dal 28 aprile 2026 Apple richiede che le app caricate su App Store Connect siano compilate con Xcode 26 o successivo e con un SDK iOS 26. Anche la pagina iOS di Capacitor indica Xcode 26.0 o successivo e supporta iOS 15 e superiori. Xcode gira solo su macOS, ed è per questo che la build avviene sulle macchine di Codemagic e non sul tuo PC.
Le edizioni dei nostri template sono giochi per browser. Ogni pagina di edizione indica le build di app native come non incluse. Una licenza copre un prodotto finale e puoi pubblicare quel gioco dove vuoi, App Store e Google Play compresi. Non puoi rivendere il template in sé. Se pensi di far pagare i giocatori, con un'app a pagamento o acquisti in-app, chiedici prima.
Sfoglia i template e cosa include ogni edizione
Passo 1: aggiungere il progetto iOS su Windows
Se hai già un progetto Capacitor per Android, installa @capacitor/ios ed esegui npx cap add ios. Questo crea la cartella ios/, anche su Windows. Non puoi aprirla in Xcode in locale, quindi ogni modifica al progetto nativo è una modifica di file che verifichi nella build in cloud successiva.
- Icona: un PNG 1024 per 1024 senza trasparenza.
- Dispositivi e orientamento: il nostro gioco è solo per iPhone e solo in orizzontale. Supportare l'iPad aggiunge screenshot per iPad e altri layout da provare.
- Crittografia: la guida di Apple sulla conformità all'esportazione dice di aggiornare l'Info.plist dell'app per non dover rispondere alle domande sulla crittografia a ogni invio. Il nostro gioco usa solo l'HTTPS di sistema, quindi abbiamo impostato ITSAppUsesNonExemptEncryption su false.
- Solo file inclusi: il gioco è dentro l'app e non carica mai il nostro sito. La linea guida 4.2 di Apple chiede app che vadano oltre un sito web reimpacchettato.
Parti da un template? Velvet Pool è uno di quelli che abbiamo incapsulato con Capacitor per Google Play, quindi la sua cartella di gioco ha già superato questo passaggio su Android. Nessuno dei nostri template è ancora passato dalla revisione dell'App Store.
Scopri Velvet Pool, un template che abbiamo già incapsulato con Capacitor
Passo 2: la firma senza Mac né Portachiavi
La firma è la parte che prima richiedeva un Mac. Con una chiave API di App Store Connect, Codemagic può farla in cloud.
- Sul sito Apple Developer, crea un App ID (bundle identifier) per il gioco, con In-App Purchase se vendi qualcosa al suo interno.
- In App Store Connect, crea la scheda dell'app con quel bundle ID, uno SKU e la lingua principale.
- Genera una chiave API di App Store Connect. La documentazione di Codemagic consiglia una chiave dedicata a Codemagic. Aggiungila alle impostazioni di integrazione di Codemagic e non mettere mai il file della chiave nel repository.
- Lascia che Codemagic generi il certificato di distribuzione e recuperi il profilo di provisioning con la chiave. Può recuperare i certificati generati in precedenza e i profili dal portale Apple Developer.
Cosa è andato storto per noi
- Le nostre prime due build sono fallite perché non era ancora stato configurato un profilo di provisioning per il bundle ID. Configura certificato e profilo prima della prima build.
- Un profilo importato in Codemagic senza nome di riferimento non funzionava, e il pulsante falliva senza dare errori. Compila sempre il nome.
- La prima configurazione della chiave API è fallita perché avevamo digitato male l'Issuer ID. Copialo e incollalo dalla pagina delle chiavi di Apple.
- I numeri di build devono sempre salire. Chiedere ad Apple l'ultimo numero falliva mentre un caricamento precedente era ancora in elaborazione, quindi siamo passati a un numero ricavato dall'orologio.
Passo 3: build su Codemagic e test su TestFlight
La ricetta di build sta in un file codemagic.yaml nel repository. La nostra installa le dipendenze, prepara i file del gioco, li sincronizza nel progetto iOS con npx cap sync ios, applica i profili e genera l'IPA su una macchina Mac mini M2. Codemagic poi pubblica la build su App Store Connect. La nostra prima build riuscita ha richiesto circa sei minuti, quella di produzione successiva meno di quattro.
Una sorpresa: con submit_to_testflight impostato su false, Codemagic ha caricato comunque la build su App Store Connect. La documentazione di Codemagic descrive quell'opzione come quella necessaria per distribuire ai gruppi beta.
I limiti di TestFlight
- Tester interni: fino a 100 utenti App Store Connect del tuo team.
- Tester esterni: fino a 10.000, dopo che la tua prima build per i test esterni è stata approvata da App Review.
- Una build resta disponibile per i tester fino a 90 giorni.
L'invito a un tester interno resta in sospeso finché non viene accettato dall'email di TestFlight, e prima di allora l'app non compare in TestFlight. Controlla la cartella spam.
Cosa ha trovato l'iPhone che Windows non poteva trovare
- I file audio registrati non si caricavano. Dentro l'app, fetch restituiva lo stato 0 con i byte corretti, e il nostro codice lo trattava come un errore. Accettare lo stato 0 per i file locali ha risolto.
- In orizzontale i pulsanti vicino al notch venivano tagliati. Abbiamo rifatto il layout dei risultati e provato ogni angolo.
- Le schermate di acquisto condivise con Android dicevano ancora Google Play. Su iOS ora dicono App Store.
- Gli acquisti di prova fatti in TestFlight non si potevano azzerare, quindi le build di test hanno un pulsante per simulare di non aver comprato. Le build per lo store non ce l'hanno.
Passo 4: scheda di App Store Connect, privacy e classificazione per età
Il resto si fa nel browser. Questo è l'ordine che ha funzionato per noi.
- Informazioni sull'app: sottotitolo, categoria e questionario per la classificazione per età. Rispondi con onestà in base a ciò che il gioco mostra davvero.
- Prezzi e disponibilità: prezzo e Paesi. La disponibilità su Mac e Apple Vision Pro era attiva di default. L'abbiamo disattivata perché il nostro gioco è pensato per il touch.
- Privacy dell'app: Apple richiede questi dettagli per nuove app e aggiornamenti, comprese le pratiche dei partner terzi il cui codice è nell'app, come reti pubblicitarie e SDK. È obbligatorio l'URL pubblico di una privacy policy.
- Acquisto in-app, se c'è: nomi, descrizioni, uno screenshot per la revisione e note per il revisore.
- Pagina della versione: descrizione, parole chiave, URL di supporto e marketing, copyright, la build, note per la revisione e opzione di rilascio. Noi abbiamo scelto il rilascio manuale.
- Screenshot, poi ogni lingua aggiuntiva con i propri testi e le proprie catture.
- Screenshot: la linea guida 2.3.3 dice che devono mostrare l'app in uso, non solo la grafica del titolo o una schermata iniziale. I nostri sono catture reali del gioco.
- Nome dell'app: un nome che volevamo era già occupato sull'App Store. Tieni pronto un secondo nome, o un nome con una breve parte descrittiva.
- Note per la revisione: abbiamo scritto che il gioco è completo dentro l'app, funziona offline, non richiede login, e dove si trovano l'acquisto e il pulsante di ripristino.
Leggi i nostri termini di licenza prima di pubblicare un template come app
Passo 5: l'invio e cosa controlla Apple
Per inviare devi pubblicare le risposte sulla privacy dell'app e confermare che sono vere, poi spedire la bozza di invio. La nostra è partita il 19 ottobre 2026 con la versione dell'app e il suo acquisto una tantum, e lo stato è diventato In attesa di revisione. Se la revisione torna con un rifiuto, la risposta passa dal Centro risoluzioni, con fatti, non con un nuovo invio alla cieca.
Per un gioco nato da un template contano soprattutto tre linee guida. La 4.2 chiede più di un sito web reimpacchettato, quindi tieni il gioco dentro l'app. La 4.3(a) chiede di non creare più bundle ID della stessa app. La 4.3(b) dice che Apple non vuole app indistinguibili da ciò che è già ampiamente disponibile. Un reskin deve cambiare regole, contenuti e interfaccia, non solo la grafica.
Cosa includono i nostri template e la parte che possiamo fare noi
Ogni template include la cartella del gioco pronta da pubblicare, codice sorgente leggibile, un manuale e 6 mesi di supporto, o 12 con l'estensione. Il supporto copre l'installazione e l'uso dei file forniti e la correzione di difetti riproducibili. Wrapper iOS, annunci nativi, acquisti in-app, configurazione della build in cloud e scheda dell'App Store sono servizi separati.
Se preferisci non configurare tu la firma e Codemagic, inviaci il template, il piano per il tuo account Apple e la scadenza. Ti rispondiamo con perimetro, prezzo e tempi prima di iniziare qualsiasi lavoro. Non pubblichiamo un listino per i lavori su misura.
Chiedi un preventivo per portare il tuo gioco sull'App Store
Domande frequenti
Posso pubblicare un gioco per iPhone senza avere un Mac?
Sì. Per la build servono comunque macOS e Xcode, ma li fornisce un servizio cloud come Codemagic. Tutto il resto, da App Store Connect a TestFlight, funziona in un browser e su un iPhone.
Quanto costa pubblicare sull'App Store?
L'Apple Developer Program costa 99 dollari USA per anno di iscrizione. Il piano gratuito per singoli di Codemagic include 500 minuti macOS M2 al mese, e i minuti in più si pagano al minuto. Aggiungi la licenza del gioco e la grafica per lo store.
Mi serve un iPhone?
Per i test veri, sì. Il nostro iPhone ha trovato audio mancante, pulsanti tagliati e nomi di store sbagliati che la build su Windows e i test nel browser non mostravano.
Apple accetterà un gioco HTML5 incapsulato in un'app?
Non possiamo promettere un esito. La linea guida 4.2 chiede più di un sito web reimpacchettato, quindi inseriamo il gioco completo dentro l'app, lo facciamo funzionare offline e gli diamo funzioni native. Anche la linea guida 4.3 si applica ai reskin.
I vostri template includono una build iOS?
No. Le nostre edizioni sono giochi per browser, e le pagine dei prodotti indicano che le build di app native non sono incluse. Puoi seguire questo percorso da solo o ordinarlo a noi su preventivo.
