Guide

Publicera spel i App Store utan Mac: vår byggrutt i molnet

Så tog vi ett HTML5-spel från en Windows-dator till App Store-granskning med Capacitor, Codemagic och TestFlight, och de misstag som kostade oss byggen.

Huvudbild från Sunset Rally-mallen i Polar Games Marketplace.

Ja, du kan publicera ett spel i App Store utan Mac. Mac behövs fortfarande, men du hyr den: ett HTML5-spel omsluts med Capacitor på din dator, en molntjänst som Codemagic kompilerar och signerar det på sina egna Mac-datorer, bygget går till App Store Connect och TestFlight, och du slutför annonsen, sekretessuppgifterna och inlämningen i webbläsaren. Det du inte kan hoppa över är en iPhone, eftersom någon måste spela bygget innan Apple gör det.

Vi gjorde det från Windows med vårt eget actionspel, Little Ninja Dash. Det första lyckade molnbygget tog ungefär sex minuter, och appen skickades till App Review den 19 oktober 2026. Våra register visar den statusen som Waiting for Review (väntar på granskning). Den här guiden redovisar inget granskningsutfall. Fakta om Apple och Codemagic kommer från deras officiella sidor, lästa 30 oktober 2026. Resten är vad våra anteckningar säger hände, även de delar som gick fel.

Vad du behöver för att publicera i App Store utan Mac

  • Ett medlemskap i Apple Developer Program: 99 USD per medlemsår. Privatpersoner och organisationer kan registrera sig. Organisationer behöver ett D-U-N-S-nummer och en publik webbplats.
  • Ett Codemagic-konto. Dess kostnadsfria individuella plan har 500 macOS M2-byggminuter i månaden och ett bygge åt gången. Därefter kostar Mac mini M2-minuter 0,095 USD styck. De kostnadsfria minuterna gäller enskilda användare, inte team.
  • Ett privat Git-förråd med ditt projekt. Codemagic bygger från förrådet du kopplar. Med våra mallar krävs ett privat förråd: ett publikt skulle sprida källkoden vidare, vilket licensen förbjuder.
  • En iPhone med appen TestFlight, för att testa det riktiga bygget.
  • Ett spel som fungerar offline från sin egen mapp, omslutet med Capacitor.

Sedan 28 april 2026 kräver Apple att appar som laddas upp till App Store Connect byggs med Xcode 26 eller nyare och en iOS 26-SDK. Capacitors iOS-sida anger också Xcode 26.0 eller nyare och stöder iOS 15 och uppåt. Xcode körs bara på macOS, och det är därför bygget sker på Codemagics maskiner och inte på din dator.

Våra mallar är webbläsarspel. Varje utgåvesida anger att native-appbyggen inte ingår. En licens gäller en slutprodukt, och du får publicera just det spelet var du vill, även i App Store och Google Play. Du får inte sälja mallen själv vidare. Om du tänker ta betalt av spelarna, med en betald app eller köp i appen, fråga oss först.

Bläddra bland mallarna och se vad varje utgåva innehåller

Steg 1: lägg till iOS-projektet på Windows

Har du redan ett Capacitor-projekt för Android installerar du @capacitor/ios och kör npx cap add ios. Det skapar mappen ios/, även på Windows. Du kan inte öppna den i Xcode lokalt, så varje ändring i det native-projektet är en filredigering som du kontrollerar i nästa molnbygge.

  • Ikon: en PNG på 1024 gånger 1024 pixlar utan transparens.
  • Enheter och orientering: vårt spel är bara för iPhone och bara i liggande läge. Stöd för iPad lägger till skärmbilder för iPad och fler layouter att testa.
  • Kryptering: Apples hjälpsida om exportkontroll säger att du ska uppdatera appens Info.plist, så att du inte behöver svara på krypteringsfrågorna vid varje inlämning. Vårt spel använder bara systemets HTTPS, så vi satte ITSAppUsesNonExemptEncryption till false.
  • Bara medföljande filer: spelet ligger inne i appen och laddar aldrig vår webbplats. Apples riktlinje 4.2 kräver appar som går längre än en ompaketerad webbplats.

Börjar du från en mall? Velvet Pool är ett spel vi omslöt med Capacitor för Google Play, så dess spelmapp har redan gått igenom det här steget på Android. Ingen av våra mallar har ännu gått igenom App Store-granskningen.

Se Velvet Pool, en mall vi redan omslöt med Capacitor

Steg 2: signering utan Mac eller Keychain

Signeringen är den del som tidigare krävde en Mac. Med en API-nyckel för App Store Connect kan Codemagic göra det i molnet.

  1. Skapa ett App ID (paket-ID) för spelet på Apple Developer-sajten, med In-App Purchase om du säljer något i det.
  2. Skapa appposten i App Store Connect med det paket-ID:t, ett SKU och huvudspråket.
  3. Generera en API-nyckel för App Store Connect. Codemagics dokumentation rekommenderar en särskild nyckel för Codemagic. Lägg den i Codemagics integrationsinställningar och lägg aldrig nyckelfilen i ditt förråd.
  4. Låt Codemagic skapa distributionscertifikatet och hämta provisioneringsprofilen med nyckeln. Den kan hämta certifikat som skapats tidigare och profiler från Apple Developer-portalen.

Vad gick fel för oss

  • Våra två första byggen misslyckades eftersom ingen provisioneringsprofil hade satts upp för paket-ID:t ännu. Sätt upp certifikatet och profilen före det första bygget.
  • En profil som importerats utan referensnamn i Codemagic fungerade inte, och knappen misslyckades tyst. Fyll alltid i namnet.
  • Den första API-nyckelinställningen misslyckades eftersom vi skrev fel Issuer ID. Kopiera och klistra in det från Apples sida för nycklar.
  • Byggnummer måste alltid gå uppåt. Att fråga Apple efter det senaste numret misslyckades medan en tidigare uppladdning fortfarande behandlades, så vi bytte till ett nummer som härleds från klockan.

Steg 3: bygg på Codemagic och testa på TestFlight

Byggreceptet ligger i en fil codemagic.yaml i förrådet. Vårt installerar beroendena, förbereder spelfilerna, synkar dem till iOS-projektet med npx cap sync ios, tillämpar profilerna och bygger IPA-filen på en Mac mini M2-maskin. Codemagic publicerar sedan bygget till App Store Connect. Vårt första lyckade bygge tog ungefär sex minuter, och det senare produktionsbygget under fyra.

En överraskning: med submit_to_testflight satt till false laddade Codemagic ändå upp bygget till App Store Connect. Codemagics dokumentation beskriver alternativet som det som krävs för distribution till betagrupper.

Begränsningar i TestFlight

  • Interna testare: upp till 100 användare i App Store Connect i ditt team.
  • Externa testare: upp till 10 000, efter att ditt första bygge för externa tester har godkänts av App Review.
  • Ett bygge är tillgängligt för testare i upp till 90 dagar.

En inbjudan till en intern testare väntar tills den accepteras från TestFlight-mejlet, och appen syns inte i TestFlight förrän dess. Kolla skräpposten.

Det iPhone hittade som Windows inte kunde

  • Inspelade ljudfiler laddades inte. Inne i appen gav fetch status 0 med rätt bytes, och vår kod behandlade det som ett fel. Att godta status 0 för lokala filer löste det.
  • Knappar klipptes i liggande läge nära urtaget (notch). Vi arbetade om resultatlayouten och testade varje hörn.
  • Köpskärmar som delades med Android sa fortfarande Google Play. På iOS står det nu App Store.
  • Testköp gjorda i TestFlight kunde inte återställas, så testbyggen fick en knapp för att simulera att man inte har köpt. Butiksbyggen har den inte.

Steg 4: App Store Connect-annonsen, sekretess och åldersgräns

Resten görs i webbläsaren. Det här är ordningen som fungerade för oss.

  1. App Information (appinformation): undertitel, kategori och frågeformuläret för åldersgräns. Svara ärligt utifrån vad spelet verkligen visar.
  2. Pricing and Availability (pris och tillgänglighet): pris och länder. Tillgänglighet för Mac och Apple Vision Pro var påslagen som standard. Vi stängde av den, eftersom vårt spel är gjort för beröring.
  3. App Privacy (sekretess): Apple kräver dessa uppgifter för nya appar och uppdateringar, inklusive tredjepartspartners praxis vars kod finns i appen, till exempel annonsnätverk och SDK:er. En offentlig webbadress till en integritetspolicy krävs.
  4. Köp i appen, om sådana finns: namn, beskrivningar, en granskningsskärmbild och anteckningar till granskaren.
  5. Versionssidan: beskrivning, nyckelord, webbadresser för support och marknadsföring, copyright, bygget, anteckningar till granskningen och släppalternativet. Vi valde manuell publicering.
  6. Skärmbilder, sedan varje extra språk med egen text och egna bilder.
  • Skärmbilder: riktlinje 2.3.3 säger att de ska visa appen i användning, inte bara titelgrafik eller en startskärm. Våra är riktiga bilder från spelet.
  • Appnamn: ett namn vi ville ha fanns redan i App Store. Ha ett andra namn, eller ett namn med en kort beskrivande del, redo.
  • Anteckningar till granskningen: vi skrev att spelet är komplett inne i appen, fungerar offline, inte kräver inloggning och var man hittar köp- och återställningsknappen.

Läs våra licensvillkor innan du publicerar en mall som app

Steg 5: skicka in, och vad Apple kontrollerar

Vid inlämningen ska du publicera svaren om App Privacy och bekräfta att de stämmer, och sedan skicka utkastet. Vårt gick in den 19 oktober 2026 med appversionen och dess engångsköp, och statusen blev Waiting for Review. Kommer en granskning tillbaka med avslag går svaret genom Resolution Center, med fakta och inte en blind ny inlämning.

För ett spel gjort av en mall är tre riktlinjer viktigast. 4.2 kräver mer än en ompaketerad webbplats, så håll spelet inne i appen. 4.3(a) säger att du inte ska skapa flera paket-ID:n för samma app. 4.3(b) säger att Apple inte vill ha appar som inte går att skilja från det som redan är allmänt tillgängligt. En reskin måste ändra regler, innehåll och gränssnitt, inte bara grafiken.

Vad våra mallar innehåller, och vad vi kan göra åt dig

Varje mall kommer med den färdiga spelmappen för hosting, läsbar källkod, en manual och 6 månaders support, eller 12 med tillägget. Supporten täcker installation och användning av de levererade filerna samt rättning av reproducerbara fel. Ett iOS-omslag, inbyggda annonser, köp i appen, uppsättningen av molnbygget och annonsen i App Store är separata tjänster.

Vill du hellre inte sätta upp signering och Codemagic själv skickar du mallen, din Apple-kontoplan och din deadline. Vi svarar med omfattning, pris och tidplan innan något arbete börjar. Vi publicerar ingen prislista för skräddarsytt arbete.

Begär en offert för att föra ditt spel till App Store

Vanliga frågor

Kan jag publicera ett iPhone-spel utan att äga en Mac?

Ja. Du behöver fortfarande macOS och Xcode för bygget, men en molntjänst som Codemagic tillhandahåller dem. Allt annat, från App Store Connect till TestFlight, fungerar i en webbläsare och på en iPhone.

Hur mycket kostar det att publicera i App Store?

Apple Developer Program kostar 99 USD per medlemsår. Codemagics kostnadsfria individuella plan inkluderar 500 macOS M2-minuter i månaden, och extra minuter faktureras per minut. Lägg till spellicensen och butiksgrafiken.

Behöver jag en iPhone?

För riktig testning, ja. Vår iPhone hittade saknat ljud, klippta knappar och fel butiksnamn som Windows-bygget och webbläsartesterna inte visade.

Godkänner Apple ett HTML5-spel omslutet i en app?

Vi kan inte lova ett resultat. Riktlinje 4.2 kräver mer än en ompaketerad webbplats, så vi paketerar hela spelet i appen, gör det fungerande offline och ger det native-funktioner. Riktlinje 4.3 gäller också reskins.

Innehåller era mallar ett iOS-bygge?

Nej. Våra utgåvor är webbläsarspel, och produktsidorna anger att native-appbyggen inte ingår. Du kan följa den här rutten själv eller beställa den av oss efter offert.