Juhend

Mängu avaldamine App Store'is ilma Macita: meie pilvekoostmise tee

Kuidas viisime HTML5 mängu Windowsi arvutist App Store'i ülevaatusele Capacitoriga, Codemagicu ja TestFlightiga ning vead, mis maksid meile koostamisi.

Pealkirjapilt Sunset Rally mallist Polar Games Marketplace'ist.

Jah, mängu saab App Store'is avaldada ilma Macita. Maci vajad siiski, aga sa üürid selle: HTML5 mäng pakitakse Capacitoriga sinu arvutis, pilveteenus nagu Codemagic koostab ja allkirjastab selle oma Maci masinatel, koostis läheb App Store Connecti ja TestFlighti ning nimekirja, privaatsusandmed ja esitamise lõpetad brauseris. Mida vahele jätta ei saa, on iPhone, sest keegi peab koostise mängima enne Apple'it.

Tegime seda Windowsist oma tegevusmänguga Little Ninja Dash. Esimene edukas pilvekoostis võttis umbes kuus minutit ja rakendus läks App Review'le (Apple'i ülevaatus) 19. oktoobril 2026; meie andmete järgi on see olekus Waiting for Review (ootab ülevaatust). See juhend ei teata ülevaatuse tulemust. Faktid Apple'i ja Codemagicu kohta pärinevad nende ametlikelt lehtedelt, loetud 30. oktoobril 2026. Ülejäänu on see, mida meie märkmed ütlevad juhtunud olevat, sealhulgas osad, mis läksid valesti.

Mida vajad App Store'is avaldamiseks ilma Macita

  • Apple Developer Programi liikmelisus: 99 $ liikmelisuse aasta kohta. Eraisikud ja organisatsioonid saavad liituda. Organisatsioonid vajavad D-U-N-S Numbrit ja avalikku veebilehte.
  • Codemagicu konto. Selle tasuta individuaalplaanil on 500 macOS M2 koostamisminutit kuus ja üks koostamine korraga; pärast seda maksab Mac mini M2 minut 0,095 $. Tasuta minutid on mõeldud üksikkasutajatele, mitte tiimidele.
  • Privaatne Giti hoidla oma projektiga. Codemagic koostab hoidlast, mille ühendad. Meie mallidega on privaatne hoidla nõutav: avalik hoidla jagaks lähtekoodi edasi, mida litsents keelab.
  • iPhone koos TestFlighti rakendusega, et testida päris koostist.
  • Mäng, mis töötab võrguühenduseta oma kaustast ja on pakitud Capacitoriga.

Apple nõuab alates 28. aprillist 2026, et App Store Connecti üleslaaditud rakendused oleksid koostatud Xcode 26 või uuemaga ja iOS 26 SDK-ga. Capacitori iOS-lehel on samuti märgitud Xcode 26.0 või uuem ning toetatakse iOS 15 ja uuemaid versioone. Xcode töötab ainult macOS-il, seepärast koostatakse Codemagicu masinatel, mitte sinu arvutis.

Meie mallide väljaanded on brauserimängud. Iga väljaande lehel on öeldud, et natiivsed rakenduste koostised ei ole kaasas. Üks litsents katab ühte lõpptoodet ja selle mängu võid avaldada kus soovid, sealhulgas App Store'is ja Google Play's. Malli ennast edasi müüa ei tohi. Kui plaanid mängijatelt raha küsida, tasulise rakenduse või rakendusesisese ostuna, küsi enne meilt.

Vaata malle ja seda, mida iga väljaanne sisaldab

1. samm: lisa iOS-projekt Windowsis

Kui sul on juba Androidi jaoks Capacitori projekt, paigalda @capacitor/ios ja käivita npx cap add ios. See loob kausta ios/ isegi Windowsis. Seda ei saa kohalikult Xcode'is avada, seega iga muudatus natiivses projektis on failimuudatus, mille kontrollid järgmises pilvekoostises.

  • Ikoon: üks 1024 × 1024 PNG-fail ilma läbipaistvuseta.
  • Seadmed ja suund: meie mäng on ainult iPhone'ile ja ainult horisontaalne. iPadi toetus lisab iPadi ekraanipildid ja rohkem paigutusi, mida testida.
  • Krüptimine: Apple'i ekspordivastavuse abi ütleb, et rakenduse Info.plist tuleb uuendada, et sa ei peaks iga esitusega krüptimisküsimustele vastama. Meie mäng kasutab ainult süsteemi HTTPS-i, seega seadsime ITSAppUsesNonExemptEncryption väärtuseks false.
  • Ainult kaasasolevad failid: mäng on rakenduse sees ega laadi kunagi meie veebilehte. Apple'i juhis 4.2 nõuab rakendusi, mis ulatuvad kaugemale ümbrisega veebilehest.

Alustad mallist? Velvet Pool on see, mille oleme Google Play jaoks Capacitoriga pakkinud, seega on selle mängukaust Androidil juba selle sammu läbinud. Ühtki meie malli pole veel App Store'i ülevaatusest läbi käinud.

Vaata Velvet Poolit, malli, mille oleme juba Capacitoriga pakkinud

2. samm: allkirjastamine ilma Macita ja Keychainita

Allkirjastamine oli see osa, mis varem nõudis Maci. App Store Connecti API-võtmega saab Codemagic seda teha pilves.

  1. Apple Developeri lehel loo mängu jaoks App ID (bundle identifier), koos In-App Purchase'iga, kui sa midagi selles müüd.
  2. App Store Connectis loo rakenduse kirje selle bundle ID-ga, SKU-ga ja põhikeelega.
  3. Loo App Store Connecti API-võti. Codemagicu dokumentatsioon soovitab Codemagicule eraldi võtit. Lisa see Codemagicu integratsiooni seadetesse ja ära pane võtmefaili kunagi oma hoidlasse.
  4. Lase Codemagicul luua levitussertifikaat ja tuua võtmega provisioning profile. Ta suudab tuua varem loodud sertifikaadid ja profiilid Apple Developeri portaalist.

Mis meil valesti läks

  • Esimesed kaks koostist ebaõnnestusid, sest bundle ID jaoks polnud veel väljaandeprofiili seadistatud. Seadista sertifikaat ja profiil enne esimest koostist.
  • Profiil, mis imporditi Codemagicus ilma viitenimeta, ei töötanud ja nupp ebaõnnestus vaikselt. Täida alati nimi.
  • Esimene API-võtme seadistus ebaõnnestus, sest kirjutasime vale Issuer ID. Kopeeri see Appi võtmete lehelt.
  • Koostenumbrid peavad alati kasvama. Viimase numbri päring Apple'ilt ebaõnnestus, kuna eelmine üleslaadimine oli veel töötlemisel, seega läksime üle kellaajast tuletatud numbrile.

3. samm: koosta Codemagicus ja testi TestFlightis

Koostamisretsept asub hoidlas failis codemagic.yaml. Meie oma paigaldab sõltuvused, valmistab mängufailid ette, sünkroonib need iOS-projektiga käsuga npx cap sync ios, rakendab profiilid ja koostab IPA-faili Mac mini M2 masinal. Seejärel avaldab Codemagic koostise App Store Connectis. Esimene edukas koostis võttis umbes kuus minutit, hilisem tootmiskoostis alla nelja.

Üks üllatus: kui submit_to_testflight oli seatud väärtusele false, laadis Codemagic koostise ikkagi App Store Connecti. Codemagicu dokumentatsioon kirjeldab seda valikut kui vajalikku levitamiseks beetagruppidele.

TestFlighti piirangud

  • Sisemised testijad: kuni 100 App Store Connecti kasutajat sinu tiimis.
  • Välised testijad: kuni 10 000, pärast seda, kui App Review on kinnitanud sinu esimese välise testimise koostise.
  • Koostis on testijatele kättesaadav kuni 90 päeva.

Sisemise testija kutse jääb ootele, kuni see on TestFlighti e-kirjast vastu võetud, ja enne seda rakendus TestFlightis ei ilmu. Vaata rämpsposti kausta.

Mida iPhone leidis, mida Windows ei leidnud

  • Salvestatud helifailid ei laadinud. Rakenduse sees andis fetch staatuse 0 õigete baitidega ja meie kood käsitles seda veana. Staatuse 0 aktsepteerimine kohalike failide puhul parandas selle.
  • Nupud lõigati horisontaalses režiimis väljalõike (notch) lähedal ära. Tegime tulemuste paigutuse ümber ja testisime iga nurka.
  • Ostuekraanid, mis olid Androidiga ühised, ütlesid veel Google Play. iOS-il ütlevad nad nüüd App Store.
  • TestFlightis tehtud testoste ei saanud lähtestada, seega said testkoostised nupu, millega simuleerida, et ost puudub. Poekoostistel seda nuppu ei ole.

4. samm: App Store Connecti nimekiri, privaatsus ja vanusehinnang

Ülejäänu toimub brauseris. See on järjekord, mis meile töötas.

  1. App Information: alapealkiri, kategooria ja vanusehinnangu küsimustik. Vasta ausalt sellele, mida mäng tegelikult näitab.
  2. Pricing and Availability (hind ja saadavus): hind ja riigid. Mac ja Apple Vision Pro saadavus olid vaikimisi sisse lülitatud. Lülitasime need välja, sest meie mäng on tehtud puuteekraanile.
  3. App Privacy: Apple nõuab neid andmeid uutele rakendustele ja uuendustele, sealhulgas kolmandate osapoolte partnerite tavasid, kelle kood on rakenduses, näiteks reklaamivõrgud ja SDK-d. Nõutav on avalik privaatsuspoliitika URL.
  4. In-app purchase, kui on: nimed, kirjeldused, arvustuse ekraanipilt ja märkused ülevaatajale.
  5. Version page (versioonilehekülg): kirjeldus, märksõnad, toe- ja turunduse URL-id, autoriõigus, koostis, ülevaatuse märkused ja avaldamise valik. Valisime käsitsi avaldamise.
  6. Ekraanipildid, seejärel iga lisakeel oma tekstide ja piltidega.
  • Ekraanipildid: juhis 2.3.3 ütleb, et need peaksid näitama rakendust kasutamisel, mitte ainult pealkirjapilti ega avakuva. Meie omad on mängu päris kaadrid.
  • Rakenduse nimi: nimi, mida tahtsime, oli App Store'is juba võetud. Hoia valmis teine nimi või nimi lühikese kirjeldava osaga.
  • Ülevaatuse märkused: kirjutasime, et mäng on rakenduse sees täielik, töötab võrguühenduseta ja ei nõua sisselogimist, ning kust leida ost ja taasta-nupp.

Loe enne malli rakendusena avaldamist meie litsentsitingimusi

5. samm: esita ja mida Apple kontrollib

Esitamine nõuab, et avaldad App Privacy vastused ja kinnitad, et need on tõesed, ning seejärel saadad mustandi esituse. Meie läks sisse 19. oktoobril 2026 rakenduse versiooni ja selle ühekordse ostuga ning olek muutus olekuks Waiting for Review (ootab ülevaatust). Kui ülevaatus tuleb tagasi tagasilükkamisega, läheb vastus läbi Resolution Centeri, faktidega, mitte pimesi uuesti esitades.

Mallist tehtud mängu puhul on kolm juhist kõige tähtsamad. 4.2 nõuab rohkem kui ümbrisega veebilehte, seega hoia mäng rakenduse sees. 4.3(a) palub mitte luua sama rakenduse mitut bundle ID-d. 4.3(b) ütleb, et Apple ei soovi rakendusi, mida ei saa eristada juba laialdaselt saadaolevast. Ümberkujundatud (reskin) mäng peab muutma reegleid, sisu ja liidest, mitte ainult graafikat.

Mida meie mallid sisaldavad ja mida saame sinu heaks teha

Iga mall tuleb valmis majutatava mängukaustaga, loetava lähtekoodi, juhendi ja 6 kuu toega, või 12 kuuga laiendusega. Tugi hõlmab kaasasolevate failide paigaldamist ja kasutamist ning korduvate vigade parandamist. iOS-ümbris, natiivsed reklaamid, rakendusesisesed ostud, pilvekoostise seadistus ja App Store'i nimekiri on eraldi teenused.

Kui sa ei soovi allkirjastamist ja Codemagicut ise seadistada, saada meile mall, oma Apple'i konto plaan ja tähtaeg. Vastame ulatuse, hinna ja ajakava kohta enne mis tahes töö algust. Kohandatud töö hinnakirja ei avalda.

Küsi pakkumist, kuidas viia oma mäng App Store'i

Korduma kippuvad küsimused

Kas saan avaldada iPhone'i mängu ilma Maci omamata?

Jah. Koostamiseks vajad siiski macOS-i ja Xcode'i, aga need annab pilveteenus nagu Codemagic. Kõik muu, App Store Connectist TestFlightini, töötab brauseris ja iPhone'is.

Kui palju maksab App Store'is avaldamine?

Apple Developer Program maksab 99 $ liikmelisuse aasta kohta. Codemagicu tasuta individuaalplaanil on 500 macOS M2 minutit kuus ja lisaminuteid arvestatakse minuti kaupa. Lisa juurde mängu litsents ja poe graafika.

Kas vajan iPhone'i?

Päris testimiseks jah. Meie iPhone leidis puuduvad helid, lõigatud nupud ja valed poenimed, mida Windowsi koostis ja brauseritestid ei näidanud.

Kas Apple aktsepteerib rakendusse pakitud HTML5-mängu?

Tulemust ei saa lubada. Juhis 4.2 nõuab rohkem kui ümbrisega veebilehte, seega paneme kogu mängu rakenduse sisse, teeme selle töötavaks võrguühenduseta ja anname sellele natiivsed funktsioonid. Juhis 4.3 kehtib ka ümberkujundustele.

Kas sinu mallid sisaldavad iOS-koostist?

Ei. Meie väljaanded on brauserimängud ja toote lehtedel on öeldud, et natiivsed rakenduste koostised ei ole kaasas. Selle tee saad ise läbida või tellida selle meilt pakkumise alusel.