Útmutató

HTML5 játék az App Store-ban Mac nélkül: a mi felhős buildünk

Hogyan vittünk egy HTML5 játékot Windows PC-ről az App Store felülvizsgálatáig Capacitorral, Codemagickel és TestFlighttal, és mely hibák kerültek nekünk buildekbe.

Sunset Rally főgrafika a Polar Games Marketplace sablonjából.

Igen, HTML5 játékot közzé lehet tenni az App Store-ban Mac nélkül. Macre továbbra is szükség van, de bérelni kell: a HTML5 játékot a PC-don Capacitorral csomagolod be, egy felhős szolgáltatás, például a Codemagic a saját Mac gépein fordítja és írja alá, a build az App Store Connectbe és a TestFlightba kerül, a listát, az adatvédelmi adatokat és a beküldést pedig a böngészőben fejezed be. Egyet nem lehet kihagyni: egy iPhone-t, mert valakinek le kell játszania a buildet, mielőtt az Apple megteszi.

Mi Windowsról csináltuk, a saját akciójátékunkkal, a Little Ninja Dash-sel. Az első sikeres felhős build körülbelül hat percet vett igénybe, az alkalmazást pedig 2026. október 19-én küldtük az App Store felülvizsgálatára, ahol a nyilvántartásunk szerint Waiting for Review (várakozás felülvizsgálatra) állapotban szerepel. Ez az útmutató nem közöl felülvizsgálati eredményt. Az Apple-re és a Codemagicre vonatkozó tények a hivatalos oldalaikról származnak, 2026. október 30-án olvasva. A többi az, amit a jegyzeteink szerint történt, a félresikerült részekkel együtt.

Mire van szükség az App Store-os közzétételhez Mac nélkül

  • Apple Developer Program tagság: 99 USD tagsági évenként. Magánszemélyek és szervezetek is csatlakozhatnak. A szervezeteknek D-U-N-S számra és nyilvános weboldalra van szükségük.
  • Codemagic-fiók. Az ingyenes egyéni csomagjában havonta 500 macOS M2 build-perc van, egyszerre egy build futtatható; utána a Mac mini M2 perce 0,095 USD. Az ingyenes percek egyfelhasználós használatra szólnak, nem csapatokra.
  • Privát Git-tároló a projekttel. A Codemagic a csatlakoztatott tárolóból épít. A mi sablonjainknál a privát tároló kötelező: a nyilvános tároló újraterjesztené a forráskódot, amit a licenc tilt.
  • iPhone a TestFlight alkalmazással a valódi build teszteléséhez.
  • Olyan játék, amely offline működik a saját mappájából, és Capacitorral van becsomagolva.

Az Apple 2026. április 28. óta megköveteli, hogy az App Store Connectbe feltöltött alkalmazásokat Xcode 26 vagy újabb verzióval és iOS 26 SDK-val építsék. A Capacitor iOS-oldala is az Xcode 26.0 vagy újabb verziót sorolja fel, és iOS 15-től támogatja az eszközöket. Az Xcode csak macOS-en fut, ezért a build a Codemagic gépein történik, nem a PC-den.

A sablonjaink böngészős játékok. Minden kiadás oldalán az szerepel, hogy a natív alkalmazásbuildek nincsenek benne. Egy licenc egy végterméket fed, és a játékot bárhol közzéteheted, az App Store-t és a Google Play-t is beleértve. Magát a sablont viszont nem adhatod tovább. Ha fizetős appot vagy alkalmazáson belüli vásárlásokat tervezel, előbb kérdezz nálunk.

Böngészd a sablonokat, és nézd meg, mit tartalmaz az egyes kiadások

1. lépés: az iOS-projekt hozzáadása Windowson

Ha már van Capacitor-projekted Androidra, telepítsd az @capacitor/ios csomagot, és futtasd az npx cap add ios parancsot. Ez létrehozza az ios/ mappát, Windowson is. Helyben nem tudod megnyitni Xcode-ban, így a natív projekt minden változtatása egy fájlszerkesztés, amelyet a következő felhős buildben ellenőrzöl.

  • Ikon: egy 1024 × 1024 pixeles PNG, átlátszóság nélkül.
  • Eszközök és tájolás: a játékunk csak iPhone-ra és csak fekvő tájolásra készült. Az iPad támogatása iPad-képernyőképeket és több elrendezést tesztel.
  • Titkosítás: az Apple exportmegfelelőségi súgója szerint frissítsd az alkalmazás Info.plist fájlját, hogy ne kelljen minden beküldésnél megválaszolni a titkosítási kérdéseket. A mi játékunk csak a rendszer HTTPS-ét használja, ezért az ITSAppUsesNonExemptEncryption értékét false-ra állítottuk.
  • Csak a csomagolt fájlok: a játék az alkalmazáson belül van, és sosem tölti be a weboldalunkat. Az Apple 4.2-es irányelve olyan alkalmazásokat kér, amelyek többet nyújtanak egy újracsomagolt weboldalnál.

Sablonból indulsz? A Velvet Pool-t Capacitorral csomagoltuk Google Play-re, így a játék mappája Androidon már átesett ezen a lépésen. Egyik sablonunk sem ment még át App Store-felülvizsgálaton.

Nézd meg a Velvet Pool-t, egy sablont, amelyet már becsomagoltunk Capacitorral

2. lépés: aláírás Mac és Keychain nélkül

Az aláírás volt az a rész, amelyhez régen Mac kellett. App Store Connect API-kulccsal a Codemagic a felhőben el tudja végezni.

  1. Az Apple Developer oldalon hozz létre egy App ID-t (csomagazonosítót) a játékhoz, és ha valamit belül is eladsz, az In-App Purchase (alkalmazáson belüli vásárlás) képességgel.
  2. Az App Store Connectben hozd létre az alkalmazásrekordot ezzel a csomagazonosítóval, egy SKU-val és az elsődleges nyelvvel.
  3. Hozz létre egy App Store Connect API-kulcsot. A Codemagic dokumentációja a Codemagicnek szánt külön kulcsot javasolja. Add hozzá a Codemagic integrációs beállításaihoz, és a kulcsfájlt soha ne tedd a tárolóba.
  4. Hagyd, hogy a Codemagic a kulccsal létrehozza a terjesztési tanúsítványt, és lekérje a provisioning profilt. Korábban létrehozott tanúsítványt is le tud kérni, a profilokat pedig az Apple Developer portálról.

Mi ment nálunk rosszul

  • Az első két build meghiúsult, mert a csomagazonosítóhoz még nem volt beállítva provisioning profil. A tanúsítványt és a profilt az első build előtt állítsd be.
  • Egy profil, amelyet a Codemagicbe név nélkül importáltunk, nem működött, és a gomb csendben meghiúsult. Mindig töltsd ki a nevet.
  • Az első API-kulcs beállítása elbukott, mert rossz Issuer ID-t írtunk be. Másold be az Apple kulcsok oldaláról.
  • A build-számoknak mindig növekedniük kell. Az utolsó szám lekérdezése az Apple-től meghiúsult, mert egy korábbi feltöltés még feldolgozás alatt állt, ezért az órából származtatott számra váltottunk.

3. lépés: build a Codemagicen, tesztelés TestFlighton

A build receptje a tárolóban lévő codemagic.yaml fájlban van. A miénk telepíti a függőségeket, előkészíti a játékfájlokat, az npx cap sync ios paranccsal szinkronizálja őket az iOS-projektbe, alkalmazza a profilokat, majd egy Mac mini M2 gépen elkészíti az IPA-t. A Codemagic ezután közzéteszi a buildet az App Store Connectben. Az első sikeres buildünk körülbelül hat percig tartott, a későbbi éles build pedig négy perc alatt lefutott.

Egy meglepetés: a submit_to_testflight értékét hamisra állítva is a Codemagic feltöltötte a buildet az App Store Connectbe. A Codemagic dokumentációja szerint ez az opció a béta csoportokhoz való terjesztéshez szükséges.

A TestFlight korlátai

  • Belső tesztelők: legfeljebb 100 App Store Connect-felhasználó a csapatodban.
  • Külső tesztelők: legfeljebb 10 000, miután az első külső tesztelési build átment az App Review-n.
  • Egy build legfeljebb 90 napig érhető el a tesztelőknek.

A belső tesztelői meghívó addig függőben marad, amíg el nem fogadják a TestFlight e-mailjéből, és az alkalmazás addig nem jelenik meg a TestFlightban. Nézd meg a spam mappát.

Amit az iPhone talált, és a Windows nem

  • A rögzített hangfájlok nem töltődtek be. Az alkalmazáson belül a fetch 0-s státuszt adott, a helyes bájtokkal, a kódunk pedig ezt hibának tekintette. A helyi fájloknál a 0-s státusz elfogadása megoldotta.
  • A gombok fekvő tájolásban a bevágás mellett levágódtak. Az eredményképernyő elrendezését újraírtuk, és minden sarkot teszteltünk.
  • Az Androiddal közös vásárlási képernyők még Google Play feliratot mutattak. iOS-en már App Store a felirat.
  • A TestFlightban tett próbavásárlásokat nem lehetett visszaállítani, ezért a tesztbuildek kaptak egy gombot, amellyel szimulálhatod, hogy nem vettél meg semmit. Az éles buildekben ez a gomb nincs.

4. lépés: App Store Connect lista, adatvédelem és korhatár

A többi lépés a böngészőben történik. Ez a sorrend működött nálunk.

  1. App-információk: alcím, kategória és a korhatár-kérdőív. Válaszolj őszintén arra, amit a játék ténylegesen mutat.
  2. Árazás és elérhetőség: ár és országok. A Mac és az Apple Vision Pro elérhetőségét alapból bekapcsolva kaptuk. Kikapcsoltuk, mert a játékunk érintésre készült.
  3. App Privacy (adatvédelem): az Apple ezt az adatot új alkalmazásoknál és frissítéseknél megköveteli, beleértve a kódban szereplő harmadik fél partnerek, például hirdetési hálózatok és SDK-k gyakorlatait is. Nyilvános adatvédelmi szabályzat URL-je kötelező.
  4. Alkalmazáson belüli vásárlás, ha van: nevek, leírások, egy képernyőkép a felülvizsgálathoz és megjegyzések a bírálónak.
  5. Verzió oldala: leírás, kulcsszavak, támogatási és marketing URL-ek, szerzői jog, a build, felülvizsgálati megjegyzések és a közzétételi lehetőség. Mi a manuális közzétételt választottuk.
  6. Képernyőképek, majd minden további nyelv saját szöveggel és felvételekkel.
  • Képernyőképek: a 2.3.3-as irányelv szerint az alkalmazást használat közben kell mutatniuk, nem csak címgrafikát vagy indítóképernyőt. A mieink valódi felvételek a játékról.
  • Alkalmazásnév: az egyik kívánt nevet az App Store-ban már foglalták. Legyen kész egy második név, vagy egy név rövid leíró résszel.
  • Felülvizsgálati megjegyzések: azt írtuk, hogy a játék az alkalmazáson belül teljes, offline működik, nem kell bejelentkezni, és hol találja a vásárlást és a visszaállítás gombot.

Olvasd el a licencfeltételeinket, mielőtt sablont alkalmazásként teszel közzé

5. lépés: beküldés, és mit néz az Apple

A beküldés előtt az App Privacy válaszait közzé kell tenned, és meg kell erősítened, hogy igazak, majd el kell küldened a piszkozatot. A miénk 2026. október 19-én ment el az alkalmazásverzióval és az egyszeri vásárlással, az állapot pedig Waiting for Review lett. Ha egy felülvizsgálat elutasítással jön vissza, a válasz a Resolution Center (megoldási központ) útján megy, tényekkel, nem vak újrabeküldéssel.

Sablonból készült játéknál három irányelv a legfontosabb. A 4.2 több követel, mint egy újracsomagolt weboldal, ezért a játékot tartsd az alkalmazáson belül. A 4.3(a) azt kéri, hogy ne hozz létre több csomagazonosítót ugyanabból az alkalmazásból. A 4.3(b) szerint az Apple nem akarja azokat az alkalmazásokat, amelyek nem különböztethetők meg attól, ami már széles körben elérhető. Egy átdolgozásnak a szabályokat, a tartalmat és a felületet kell megváltoztatnia, nem csak a grafikát.

Mit tartalmaznak a sablonjaink, és mit vállalhatunk el helyetted

Minden sablon a kész, tárhelyre feltölthető játékmappával, olvasható forráskóddal, kézikönyvvel és 6 hónap támogatással érkezik, a bővítménnyel 12 hónappal. A támogatás a mellékelt fájlok telepítését és használatát, valamint a reprodukálható hibák javítását fedi. Az iOS-burkoló, a natív reklámok, az alkalmazáson belüli vásárlások, a felhős build beállítása és az App Store-os lista külön szolgáltatások.

Ha nem akarod magad beállítani az aláírást és a Codemagicet, küldd el nekünk a sablont, az Apple-fiókod csomagját és a határidőt. Mielőtt bármi munka indulna, válaszolunk a terjedelemmel, az árral és az időzítéssel. Egyedi munkák árait nem közöljük nyilvános árlistán.

Kérj árajánlatot, hogy a játékodat az App Store-ba vigyük

Gyakran ismételt kérdések

Közzétehetek iPhone-játékot Mac nélkül?

Igen. A buildhez továbbra is kell a macOS és az Xcode, de ezeket egy felhős szolgáltatás, például a Codemagic adja. Minden más, az App Store Connecttől a TestFlightig, böngészőben és iPhone-on működik.

Mennyibe kerül az App Store-os közzététel?

Az Apple Developer Program 99 USD tagsági évenként. A Codemagic ingyenes egyéni csomagja havi 500 macOS M2 percet tartalmaz, a további perceket percenként számlázzák. Ehhez jön a játéklicenc és a bolti grafika.

Kell iPhone?

Valódi teszteléshez igen. Az iPhone-unk hiányzó hangokat, levágott gombokat és rossz bolti neveket talált, amelyeket a Windows-os build és a böngészős tesztek nem mutattak.

Elfogadja az Apple egy alkalmazásba csomagolt HTML5 játékot?

Eredményt nem ígérhetünk. A 4.2-es irányelv többet kér, mint egy újracsomagolt weboldal, ezért a teljes játékot az alkalmazásba tesszük, offline működtetjük, és natív funkciókat adunk hozzá. A 4.3-as irányelv az átdolgozásokra is vonatkozik.

A sablonjaid tartalmaznak iOS-buildet?

Nem. A kiadásaink böngészős játékok, a termékoldalak pedig jelzik, hogy natív alkalmazásbuildek nincsenek bennük. Ezt a folyamatot magad is végigviheted, vagy árajánlat alapján megrendelheted tőlünk.