Objava igre v App Store brez Maca: naša pot z gradnjo v oblaku
Kako smo HTML5 igro s računalnika Windows pripeljali do pregleda v App Storu s Capacitorjem, Codemagicom in TestFlightom ter katere napake so nas stale gradnje.

Da, igro lahko objaviš v App Storu brez Maca. Mac še vedno potrebuješ, ampak ga najameš: HTML5 igro na računalniku zaviješ s Capacitorjem, storitev v oblaku, kot je Codemagic, jo prevede in podpiše na svojih strojih Mac, gradnja gre v App Store Connect in TestFlight, seznam, podatke o zasebnosti in oddajo pa dokončaš v brskalniku. Česa ne moreš preskočiti, je iPhone, saj mora nekdo igrati gradnjo, preden jo testira Apple.
To smo naredili iz sistema Windows z lastno akcijsko igro Little Ninja Dash. Prva uspešna gradnja v oblaku je trajala približno šest minut, aplikacija pa je 19. oktobra 2026 odšla na pregled (App Review), kjer jo naši zapiski kažejo kot Waiting for Review (čaka na pregled). Ta vodnik ne poroča o izidu pregleda. Dejstva o Appleu in Codemagicu prihajajo z njunih uradnih strani, prebranih 30. oktobra 2026. Ostalo je tisto, kar pravijo naši zapiski o tem, kaj se je zgodilo, vključno z deli, ki so šli narobe.
Kaj potrebuješ za objavo v App Storu brez Maca
- Članstvo v Apple Developer Program: 99 $ na članski leto. Vpišejo se posamezniki in organizacije. Organizacije potrebujejo številko D-U-N-S in javno spletno stran.
- Račun na Codemagicu. Njegov brezplačni osebni paket ima 500 minut gradnje na macOS M2 na mesec in eno gradnjo naenkrat; potem stane minuta na stroju Mac mini M2 0,095 $. Brezplačne minute so za posameznike, ne za ekipe.
- Zasebni repozitorij Git s tvojim projektom. Codemagic gradi iz repozitorija, ki ga povežeš. Pri naših predlogah je zasebni repozitorij obvezen: javni bi razkril izvorno kodo, kar licenca prepoveduje.
- iPhone z aplikacijo TestFlight za testiranje prave gradnje.
- Igra, ki deluje brez povezave iz svoje mape in je zavita s Capacitorjem.
Od 28. aprila 2026 Apple zahteva, da se aplikacije, naložene v App Store Connect, gradijo z Xcode 26 ali novejšim in SDK za iOS 26. Stran Capacitorja za iOS prav tako navaja Xcode 26.0 ali novejši in podpira iOS 15 in novejše. Xcode deluje samo na macOS, zato gradnja poteka na strojih Codemagica in ne na tvojem računalniku.
Naše izdaje predlog so spletne igre. Vsaka stran izdaje navaja, da nativne gradnje za aplikacije niso vključene. Ena licenca velja za en končni izdelek, to igro pa smeš objaviti kjerkoli, vključno z App Storom in Google Play. Samih predlog ne smeš preprodajati. Če nameravaš od igralcev zahtevati plačilo, s plačljivo aplikacijo ali nakupi v aplikaciji (in-app purchases), nas najprej vprašaj.
Poglej predloge in kaj vključuje vsaka izdaja
1. korak: dodaj projekt iOS v Windows
Če že imaš projekt Capacitor za Android, namesti @capacitor/ios in zaženi npx cap add ios. To ustvari mapo ios/, tudi v sistemu Windows. Lokalno je ne moreš odpreti v Xcodu, zato je vsaka sprememba nativnega projekta urejanje datoteke, ki ga preveriš pri naslednji gradnji v oblaku.
- Ikona: ena datoteka PNG 1024 × 1024 slikovnih točk brez prosojnosti.
- Naprave in usmeritev: naša igra je samo za iPhone in samo v ležečem položaju. Podpora za iPad doda posnetke zaslona za iPad in več postavitev za preizkus.
- Šifriranje: pomoč Applea za skladnost izvoza pravi, da je treba posodobiti Info.plist aplikacije, da na vsaki oddaji ne odgovarjaš na vprašanja o šifriranju. Naša igra uporablja samo HTTPS sistema, zato smo ITSAppUsesNonExemptEncryption nastavili na false.
- Samo priložene datoteke: igra je znotraj aplikacije in nikoli ne naloži naše spletne strani. Smernica 4.2 Applea zahteva aplikacije, ki gredo onkraj ponovno zapakirane spletne strani.
Začenjaš s predlogo? Velvet Pool smo zavili s Capacitorjem za Google Play, zato je njena mapa igre na Androidu že prestala ta korak. Nobena naša predloga še ni prestala pregleda v App Storu.
Poglej Velvet Pool, predlogo, ki smo jo že zavili s Capacitorjem
2. korak: podpisovanje brez Maca ali Keychaina
Podpisovanje je bil del, ki je nekoč zahteval Mac. S ključem API za App Store Connect ga Codemagic lahko opravi v oblaku.
- Na spletni strani Apple Developer ustvari App ID (identifikator paketa) za igro, z In-App Purchase, če znotraj nje kaj prodajaš.
- V App Store Connect ustvari zapis aplikacije s tem identifikatorjem paketa, SKU in primarnim jezikom.
- Ustvari ključ API za App Store Connect. Dokumentacija Codemagica priporoča namenski ključ za Codemagic. Dodaj ga v nastavitve integracije Codemagica in datoteke ključa nikoli ne daj v repozitorij.
- Naj Codemagic ustvari potrdilo za distribucijo in s ključem pridobi profil za izdajo (provisioning profile). Lahko pridobi potrdila, ki jih je ustvaril prej, in profile iz portala Apple Developer.
Kaj je šlo pri nas narobe
- Prvi dve gradnji sta spodleteli, ker za identifikator paketa še ni bil nastavljen profil za izdajo. Potrdilo in profil nastavi pred prvo gradnjo.
- Profil, uvožen v Codemagic brez referenčnega imena, ni deloval, gumb pa je tiho odpovedal. Ime vedno vpiši.
- Prva nastavitev ključa API je spodletela, ker smo napisali napačen Issuer ID. Kopiraj ga in prilepi s Applove strani s ključi.
- Številke gradenj morajo vedno naraščati. Vprašanje Applu po zadnji številki je spodletelo, ker je prejšnja naložitev še obdelovala, zato smo prešli na številko, izpeljano iz ure.
3. korak: gradnja v Codemagicu in preizkus v TestFlightu
Recept za gradnjo je v datoteki codemagic.yaml v repozitoriju. Naš namesti odvisnosti, pripravi datoteke igre, jih z npx cap sync ios sinhronizira v projekt iOS, uporabi profile in zgradi IPA na stroju Mac mini M2. Codemagic nato objavi gradnjo v App Store Connect. Prva uspešna gradnja je trajala približno šest minut, pozneje produkcijska pa manj kot štiri.
Presenečenje: pri nastavitvi submit_to_testflight na false je Codemagic vseeno naložil gradnjo v App Store Connect. Dokumentacija Codemagica opisuje to možnost kot tisto, ki je potrebna za distribucijo beta skupinam.
Omejitve TestFlight
- Notranji testerji: do 100 uporabnikov App Store Connect v tvoji ekipi.
- Zunanji testerji: do 10.000, potem ko App Review odobri tvojo prvo gradnjo za zunanje testiranje.
- Gradnja je testerjem na voljo do 90 dni.
Povabilo notranjemu testerju ostane na čakanju, dokler ga ne sprejme iz e-pošte TestFlight, aplikacija pa se pred tem ne prikaže v TestFlightu. Preveri mapo z neželeno pošto.
Kaj je iPhone našel, česar Windows ni mogel
- Posneti zvočni posnetki se niso naložili. V aplikaciji je fetch vrnil status 0 s pravilnimi bajti, naša koda pa je to obravnavala kot napako. Sprejemanje statusa 0 za lokalne datoteke je to popravilo.
- Gumbi so bili v ležečem položaju ob zarezi odrezani. Ponovno smo oblikovali postavitev rezultatov in preizkusili vsak kot.
- Zaslon nakupov, deljen z Androidom, je še pisal Google Play. Na iOS zdaj piše App Store.
- Testnih nakupov v TestFlightu ni bilo mogoče ponastaviti, zato so testne gradnje dobile gumb, ki simulira, da nakup ni bil opravljen. Trgovinske gradnje tega gumba nimajo.
4. korak: seznam v App Store Connect, zasebnost in starostna ocena
Preostalo opraviš v brskalniku. Tak je zaporedje, ki nam je uspelo.
- App Information (podatki o aplikaciji): podnaslov, kategorija in vprašalnik o starostni oceni. Odgovori iskreno glede na to, kaj igra dejansko prikazuje.
- Pricing and Availability (cene in razpoložljivost): cena in države. Razpoložljivost za Mac in Apple Vision Pro je bila privzeto vklopljena. Izklopili smo ju, ker je naša igra narejena za dotik.
- App Privacy (zasebnost aplikacije): Apple zahteva te podatke za nove aplikacije in posodobitve, vključno s prakso tretjih partnerjev, katerih koda je v aplikaciji, na primer oglaševalskih mrež in SDK. Zahtevan je javni naslov pravilnika o zasebnosti.
- Nakupi v aplikaciji, če obstajajo: imena, opisi, posnetek zaslona za pregled in opombe za pregledovalca.
- Stran različice: opis, ključne besede, naslovi podpore in marketinški naslovi, avtorske pravice, gradnja, opombe za pregled in možnost izdaje. Izbrali smo ročno izdajo.
- Posnetki zaslona, nato vsak dodatni jezik z lastnim besedilom in posnetki.
- Posnetki zaslona: smernica 2.3.3 pravi, da morajo kazati aplikacijo v uporabi, ne le naslovne grafike ali zaslona s pozdravom. Naši so pravi posnetki igre.
- Ime aplikacije: eno ime, ki smo ga želeli, je bilo v App Storu že zasedeno. Pripravi drugo ime ali ime s kratkim opisnim delom.
- Opombe za pregled: zapisali smo, da je igra v aplikaciji popolna, deluje brez povezave, ne zahteva prijave in kje najti nakup ter gumb za obnovitev.
Preberi naše pogoje licence, preden predlogo objaviš kot aplikacijo
5. korak: oddaja in kaj Apple preverja
Oddaja zahteva, da objaviš odgovore o zasebnosti aplikacije in potrdiš, da so resnični, nato pošlješ osnutek oddaje. Naša je šla 19. oktobra 2026 z različico aplikacije in njenim enkratnim nakupom, status pa je postal Waiting for Review. Če pride zavrnitev, odgovoriš prek Resolution Center z dejstvi, ne s slepim ponovnim pošiljanjem.
Pri igri, narejeni iz predloge, so najpomembnejše tri smernice. 4.2 zahteva več kot ponovno zapakirano spletno stran, zato igro ohrani znotraj aplikacije. 4.3(a) zahteva, da ne ustvarjaš več identifikatorjev paketa za isto aplikacijo. 4.3(b) pravi, da Apple noče aplikacij, ki jih ni mogoče ločiti od že široko dostopnih. Predelava (reskin) mora spremeniti pravila, vsebino in vmesnik, ne le grafike.
Kaj vključujejo naše predloge in kaj lahko storimo zate
Vsaka predloga pride z mapo igre, pripravljeno za gostovanje, berljivo izvorno kodo, priročnikom in 6 meseci podpore, ali 12 z dodatkom. Podpora pokriva namestitev in uporabo priloženih datotek ter popravljanje napak, ki jih je mogoče ponoviti. Ovoj za iOS, nativni oglasi, nakupi v aplikaciji, nastavitev gradnje v oblaku in seznam v App Storu so ločene storitve.
Če raje sam ne nastavljaš podpisovanja in Codemagica, nam pošlji predlogo, načrt svojega računa Apple in rok. Odgovorimo s obsegom, ceno in časom, preden se začne kakršno koli delo. Cenika za delo po meri ne objavljamo.
Zahtevaj ponudbo za objavo svoje igre v App Storu
Pogosta vprašanja
Ali lahko objavim igro za iPhone, če nimam Maca?
Da. Za gradnjo še vedno potrebuješ macOS in Xcode, vendar ju zagotovi storitev v oblaku, kot je Codemagic. Vse drugo, od App Store Connect do TestFlight, deluje v brskalniku in na iPhoneu.
Koliko stane objava v App Storu?
Apple Developer Program stane 99 $ na članski leto. Osebni brezplačni paket Codemagica vključuje 500 minut macOS M2 na mesec, dodatne minute pa se obračunajo na minuto. Prišteti je treba še licenco za igro in grafiko za trgovino.
Ali potrebujem iPhone?
Za pravo testiranje da. Naš iPhone je našel manjkajoč zvok, odrezane gumbe in napačna imena v trgovini, ki jih gradnja za Windows in preizkusi v brskalniku niso pokazali.
Ali bo Apple sprejel HTML5 igro, zapakirano v aplikacijo?
Rezultata ti ne moremo zagotoviti. Smernica 4.2 zahteva več kot ponovno zapakirano spletno stran, zato celotno igro zapakiramo v aplikacijo, jo naredimo za delovanje brez povezave in ji dodamo nativne funkcije. Smernica 4.3 velja tudi za predelave.
Ali vaše predloge vključujejo gradnjo za iOS?
Ne. Naše izdaje so spletne igre, na straneh izdelkov pa piše, da nativne gradnje za aplikacije niso vključene. To pot lahko opraviš sam ali jo naročiš pri nas po ponudbi.
