Udgiv et spil på App Store uden Mac: vores cloud-build-rute
Sådan fik vi et HTML5-spil fra en Windows-pc til App Store-review med Capacitor, Codemagic og TestFlight, og de fejl der kostede os builds.

Ja, du kan udgive et spil på App Store uden Mac. Du har stadig brug for en Mac, men du lejer den: et HTML5-spil pakkes ind med Capacitor på din pc, en cloudtjeneste som Codemagic kompilerer og signerer det på sine egne Mac-maskiner, buildet sendes til App Store Connect og TestFlight, og du færdiggør opslaget, privatlivsdetaljerne og indsendelsen i browseren. Det, du ikke kan springe over, er en iPhone, for nogen skal spille buildet, før Apple gør det.
Vi gjorde det fra Windows med vores eget actionspil, Little Ninja Dash. Den første vellykkede cloud-build tog cirka seks minutter, og appen gik til App Review den 19. oktober 2026, hvor vores optegnelser viser den som Waiting for Review. Denne guide melder ikke noget resultat af vurderingen. Fakta om Apple og Codemagic stammer fra deres officielle sider, læst 30. oktober 2026. Resten er, hvad vores noter siger skete, inklusive de dele, der gik galt.
Det skal du bruge for at udgive på App Store uden Mac
- Et medlemskab af Apple Developer Program: 99 USD pr. medlemsår. Privatpersoner og organisationer kan tilmelde sig. Organisationer skal have et D-U-N-S Number og en offentlig hjemmeside.
- En Codemagic-konto. Dens gratis individuelle plan har 500 macOS M2-buildminutter om måneden og ét build ad gangen; derefter koster Mac mini M2-minutter 0,095 USD hver. Gratisminutterne er til enkeltbrugere, ikke til teams.
- Et privat Git-repository med dit projekt. Codemagic bygger fra det repository, du forbinder. Med vores skabeloner er et privat repository påkrævet: et offentligt ville videredistribuere kildekoden, hvilket licensen forbyder.
- En iPhone med TestFlight-appen til at teste det rigtige build.
- Et spil, der virker offline fra sin egen mappe, og som er pakket ind med Capacitor.
Siden 28. april 2026 har Apple krævet, at apps uploadet til App Store Connect bygges med Xcode 26 eller nyere og en iOS 26 SDK. Capacitors iOS-side lister også Xcode 26.0 eller nyere og understøtter iOS 15 og op. Xcode kører kun på macOS, og derfor sker buildet på Codemagics maskiner og ikke på din pc.
Vores skabelonudgaver er browserspil. Hver udgaveside lister native app-builds som ikke inkluderet. Én licens dækker ét slutprodukt, og du må udgive det spil, hvor du vil, inklusive App Store og Google Play. Selve skabelonen må du ikke videresælge. Planlægger du at tage betaling af spillerne, med en betalt app eller køb i appen, så spørg os først.
Se skabelonerne, og hvad hver udgave inkluderer
Trin 1: tilføj iOS-projektet på Windows
Har du allerede et Capacitor-projekt til Android, så installér @capacitor/ios og kør npx cap add ios. Det opretter mappen ios/, også på Windows. Du kan ikke åbne den i Xcode lokalt, så hver ændring i det native projekt er en filredigering, som du kontrollerer i næste cloud-build.
- Ikon: ét 1024 x 1024 PNG uden gennemsigtighed.
- Enheder og retning: vores spil er kun til iPhone og kun i liggende format. Understøttelse af iPad tilføjer iPad-skærmbilleder og flere layouts at teste.
- Kryptering: Apples hjælp til eksportoverholdelse siger, at du skal opdatere appens Info.plist, så du ikke skal besvare krypteringsspørgsmålene ved hver indsendelse. Vores spil bruger kun systemets HTTPS, så vi satte ITSAppUsesNonExemptEncryption til false.
- Kun bundtede filer: spillet ligger inde i appen og indlæser aldrig vores hjemmeside. Apples retningslinje 4.2 kræver apps, der går ud over en genpakket hjemmeside.
Starter du fra en skabelon? Velvet Pool er en, vi har pakket ind med Capacitor til Google Play, så dens spilmappe har allerede været igennem dette trin på Android. Ingen af vores skabeloner har endnu været igennem App Store-review.
Se Velvet Pool, en skabelon vi allerede har pakket ind med Capacitor
Trin 2: signering uden Mac eller Keychain
Signering er den del, der tidligere krævede en Mac. Med en API-nøgle til App Store Connect kan Codemagic klare den i cloud'en.
- På Apple Developer-siden: opret et App ID (bundle identifier) til spillet, med In-App Purchase, hvis du sælger noget i det.
- I App Store Connect: opret app-posten med det bundle-ID, en SKU og hovedsproget.
- Generér en API-nøgle til App Store Connect. Codemagics dokumentation anbefaler en dedikeret nøgle til Codemagic. Læg den i Codemagics integrationsindstillinger, og læg aldrig nøglefilen i dit repository.
- Lad Codemagic generere distributionscertifikatet og hente provisioning-profilen med nøglen. Den kan hente certifikater, den har genereret før, og profiler fra Apple Developer-portalen.
Hvad gik galt for os
- Vores to første builds fejlede, fordi der endnu ikke var sat en provisioning-profil op til bundle-ID'et. Opsæt certifikat og profil, før det første build.
- En profil importeret uden et referencenavn i Codemagic virkede ikke, og knappen fejlede lydløst. Udfyld altid navnet.
- Den første opsætning af API-nøglen fejlede, fordi vi skrev et forkert Issuer ID. Kopiér det fra Apples nøglesider og indsæt det.
- Build-numre skal altid stige. At spørge Apple om det sidste nummer fejlede, mens en tidligere upload stadig blev behandlet, så vi skiftede til et nummer udledt af uret.
Trin 3: byg på Codemagic og test på TestFlight
Build-opskriften ligger i en codemagic.yaml-fil i repositoryet. Vores installerer afhængighederne, klargør spilfilerne, synkroniserer dem ind i iOS-projektet med npx cap sync ios, anvender profilerne og bygger IPA'en på en Mac mini M2-maskine. Codemagic udgiver derefter buildet til App Store Connect. Vores første vellykkede build tog cirka seks minutter, og det senere produktionsbuild under fire.
En overraskelse: med submit_to_testflight sat til false uploadede Codemagic stadig buildet til App Store Connect. Codemagics dokumentation beskriver den indstilling som den, der kræves for distribution til beta-grupper.
TestFlight-grænser
- Interne testere: op til 100 App Store Connect-brugere på dit team.
- Eksterne testere: op til 10.000, når dit første build til ekstern test er godkendt af App Review.
- Et build er tilgængeligt for testerne i op til 90 dage.
En invitation til en intern tester står som afventende, indtil den accepteres fra TestFlight-mailen, og appen vises ikke i TestFlight før da. Tjek spam-mappen.
Det iPhone fandt, som Windows ikke kunne
- Optagede lydfiler indlæstes ikke. Inde i appen returnerede fetch status 0 med de rigtige bytes, og vores kode behandlede det som en fejl. Ved at acceptere status 0 for lokale filer blev det rettet.
- Knapper blev skåret af i liggende format ved notchen. Vi omarbejdede resultatlayoutet og testede hvert hjørne.
- Købsskærme, der var delt med Android, stod stadig Google Play. På iOS står der nu App Store.
- Testkøb foretaget i TestFlight kunne ikke nulstilles, så testbuilds fik en knap, der simulerer, at man ikke har købt. Butiksbuilds har den ikke.
Trin 4: App Store Connect-opslag, privatliv og aldersvurdering
Resten sker i browseren. Det er den rækkefølge, der virkede for os.
- App Information: undertitel, kategori og spørgeskemaet til aldersvurdering. Besvar det ærligt for det, spillet faktisk viser.
- Pricing and Availability: pris og lande. Mac og Apple Vision Pro var slået til som standard. Vi slog dem fra, fordi vores spil er lavet til touch.
- App Privacy: Apple kræver disse oplysninger for nye apps og opdateringer, herunder praksis hos tredjepartspartnere, hvis kode er i appen, som annoncenetværk og SDK'er. En offentlig URL til privatlivspolitikken er påkrævet.
- In-app purchase, hvis der er nogen: navne, beskrivelser, et skærmbillede til reviewet og noter til anmelderen.
- Version-siden: beskrivelse, søgeord, support- og markedsførings-URL'er, copyright, buildet, reviewnoter og udgivelsesvalget. Vi valgte manuel udgivelse.
- Skærmbilleder, derefter hvert ekstra sprog med egen tekst og egne optagelser.
- Skærmbilleder: retningslinje 2.3.3 siger, at de skal vise appen i brug, ikke kun titelgrafik eller en splash-skærm. Vores er rigtige optagelser af spillet.
- Appnavn: ét af de navne, vi ønskede, var allerede taget på App Store. Hav et andet navn, eller et navn med en kort beskrivende del, klar.
- Reviewnoter: vi skrev, at spillet er komplet inde i appen, virker offline, ikke kræver login, og hvor man finder købet og knappen Restore.
Læs vores licensvilkår, før du udgiver en skabelon som app
Trin 5: indsend, og hvad Apple tjekker
Ved indsendelse skal du offentliggøre svarene om App Privacy og bekræfte, at de er sande, og derefter sende udkastet til indsendelse. Vores gik afsted den 19. oktober 2026 med appversionen og dens engangskøb, og status blev Waiting for Review. Kommer en afvisning tilbage, besvares den via Resolution Center, med fakta, ikke med en blind genindsendelse.
For et spil lavet af en skabelon er tre retningslinjer vigtigst. 4.2 kræver mere end en genpakket hjemmeside, så hold spillet inde i appen. 4.3(a) beder dig om ikke at oprette flere bundle-ID'er af samme app. 4.3(b) siger, at Apple ikke ønsker apps, der ikke kan skelnes fra det, der allerede er bredt tilgængeligt. En reskin skal ændre regler, indhold og grænseflade, ikke kun grafikken.
Hvad vores skabeloner inkluderer, og den del vi kan gøre for dig
Hver skabelon kommer med den færdige spilmappe klar til hosting, læsbar kildekode, en manual og 6 måneders support, eller 12 med tillægget. Support dækker installation og brug af de leverede filer samt rettelse af reproducerbare fejl. En iOS-indpakning, native reklamer, køb i appen, opsætning af cloud-build og App Store-opslaget er særskilte ydelser.
Hvis du hellere ikke selv vil opsætte signering og Codemagic, så send os skabelonen, din Apple-kontoplan og deadlinen. Vi svarer med omfang, pris og tidsplan, før noget arbejde starter. Vi offentliggør ikke en prisliste for skræddersyet arbejde.
Bed om et tilbud på at få dit spil til App Store
Ofte stillede spørgsmål
Kan jeg udgive et iPhone-spil uden at eje en Mac?
Ja. Du har stadig brug for macOS og Xcode til buildet, men en cloudtjeneste som Codemagic leverer dem. Alt det andet, fra App Store Connect til TestFlight, virker i en browser og på en iPhone.
Hvad koster det at udgive på App Store?
Apple Developer Program koster 99 USD pr. medlemsår. Codemagics gratis individuelle plan inkluderer 500 macOS M2-minutter om måneden, og ekstra minutter faktureres pr. minut. Læg spillicensen og butiksgrafikken til.
Har jeg brug for en iPhone?
Til rigtig test, ja. Vores iPhone fandt manglende lyd, afskårne knapper og forkerte butiksnavne, som Windows-buildet og browsertestene ikke viste.
Vil Apple acceptere et HTML5-spil pakket ind i en app?
Vi kan ikke love et resultat. Retningslinje 4.2 kræver mere end en genpakket hjemmeside, så vi bundter det fulde spil inde i appen, får det til at virke offline og giver det native funktioner. Retningslinje 4.3 gælder også for reskins.
Inkluderer jeres skabeloner et iOS-build?
Nej. Vores udgaver er browserspil, og produktsiderne siger, at native app-builds ikke er inkluderet. Du kan følge denne vej selv, eller bestille den hos os efter tilbud.
