Ръководство

Публикуване на игра в App Store без Mac: нашият път през облачен build

Как превърнахме HTML5 игра от Windows компютър до преглед в App Store с Capacitor, Codemagic и TestFlight, и грешките, които ни струваха build-ове.

Основен арт от шаблона Sunset Rally в Polar Games Marketplace.

Да, можете да публикувате игра в App Store без Mac. Mac все пак е нужен, но го наемате: HTML5 играта се опакова с Capacitor на вашия компютър, облачна услуга като Codemagic я компилира и подписва на собствените си Mac машини, build-ът отива в App Store Connect и TestFlight, а списъкът, данните за поверителност и подаването довършвате в браузъра. Нещо, без което не можете, е iPhone, защото някой трябва да изиграе build-а, преди Apple да го направи.

Направихме го от Windows с наша екшън игра, Little Ninja Dash. Първият успешен облачен build отне около шест минути, а приложението отиде на App Review на 19 октомври 2026 г., където според записите ни е със статус Waiting for Review (чака преглед). Това ръководство не съобщава резултат от прегледа. Фактите за Apple и Codemagic идват от официалните им страници, прочетени на 30 октомври 2026 г. Останалото е какво казват нашите бележки, включително частите, които се объркаха.

Какво ви трябва, за да публикувате в App Store без Mac

  • Членство в Apple Developer Program: 99 USD на членска година. Записват се физически лица и организации. Организациите се нуждаят от D-U-N-S номер и публичен уебсайт.
  • Акаунт в Codemagic. Безплатният му индивидуален план има 500 минути за build на macOS M2 месечно и един build наведнъж; след това минутите на Mac mini M2 струват по 0,095 USD всяка. Безплатните минути са за отделни потребители, не за екипи.
  • Частно Git хранилище с проекта ви. Codemagic компилира от хранилището, което свържете. С нашите шаблони частното хранилище е задължително: публично хранилище би разпространило сорс кода, което лицензът забранява.
  • iPhone с приложението TestFlight, за тестване на реалния build.
  • Игра, която работи офлайн от собствената си папка и е опакована с Capacitor.

Apple изисква от 28 април 2026 г. приложенията, качени в App Store Connect, да са компилирани с Xcode 26 или по-нов и iOS 26 SDK. Страницата за iOS на Capacitor също посочва Xcode 26.0 или по-нов и поддържа iOS 15 и нагоре. Xcode работи само на macOS, затова компилирането става на машините на Codemagic, а не на вашия компютър.

Нашите издания на шаблони са браузърни игри. Всяка страница на издание посочва, че нативни build-ове за приложения не са включени. Един лиценз покрива един краен продукт и можете да публикувате тази игра където пожелаете, включително в App Store и Google Play. Не можете да препродавате самия шаблон. Ако планирате да таксувате играчите, с платено приложение или покупки в приложението, първо ни попитайте.

Вижте шаблоните и какво включва всяко издание

Стъпка 1: добавете iOS проекта на Windows

Ако вече имате Capacitor проект за Android, инсталирайте @capacitor/ios и пуснете npx cap add ios. Това създава папката ios/, дори на Windows. Локално не можете да я отворите в Xcode, затова всяка промяна в нативния проект е редакция на файл, която проверявате при следващия облачен build.

  • Икона: един PNG 1024 на 1024 пиксела без прозрачност.
  • Устройства и ориентация: нашата игра е само за iPhone и само в хоризонтална ориентация. Поддръжката на iPad добавя снимки от iPad и повече оформления за тестване.
  • Шифроване: помощта на Apple за експортния контрол препоръчва да актуализирате Info.plist на приложението, за да не отговаряте на въпросите за шифроване при всяко подаване. Нашата игра използва само HTTPS на системата, затова зададохме ITSAppUsesNonExemptEncryption на false.
  • Само вградени файлове: играта е в приложението и никога не зарежда нашия уебсайт. Правило 4.2 на Apple изисква приложения, които са повече от преопакован уебсайт.

Започвате от шаблон? Velvet Pool е игра, която опаковахме с Capacitor за Google Play, така че папката ѝ с играта вече е минала тази стъпка за Android. Нито един от нашите шаблони още не е минал прегледа в App Store.

Вижте Velvet Pool, шаблон, който вече опаковахме с Capacitor

Стъпка 2: подписване без Mac и Keychain

Подписването е частта, която преди изискваше Mac. С ключ за API на App Store Connect Codemagic може да го направи в облака.

  1. В сайта на Apple Developer създайте App ID (идентификатор на пакета) за играта, с In-App Purchase, ако продавате нещо в нея.
  2. В App Store Connect създайте записа на приложението с този bundle ID, SKU и основния език.
  3. Генерирайте ключ за API на App Store Connect. Документацията на Codemagic препоръчва отделен ключ за Codemagic. Добавете го в настройките за интеграции на Codemagic и никога не слагайте файла с ключа в хранилището си.
  4. Оставете Codemagic да генерира сертификата за разпространение и да вземе профила за осигуряване с ключа. Той може да вземе сертификати, които е генерирал преди, и профили от портала на Apple Developer.

Какво се обърка при нас

  • Първите ни два build-а се провалиха, защото за bundle ID още нямаше настроен профил за осигуряване. Настройте сертификата и профила преди първия build.
  • Профил, импортиран в Codemagic без референтно име, не работеше и бутонът се провали тихо. Винаги попълвайте името.
  • Първата настройка на ключа за API се провали, защото въведохме грешен Issuer ID. Копирайте го и поставете от страницата с ключове на Apple.
  • Номерата на build-овете трябва винаги да растат. Опитът да вземем последния номер от Apple се провали, докато предишно качване още се обработваше, затова преминахме към номер, изведен от часовника.

Стъпка 3: build в Codemagic и тестване в TestFlight

Рецептата за build се намира във файла codemagic.yaml в хранилището. Нашата инсталира зависимостите, подготвя файловете на играта, синхронизира ги в iOS проекта с npx cap sync ios, прилага профилите и компилира IPA на машина Mac mini M2. После Codemagic публикува build-а в App Store Connect. Първият ни успешен build отне около шест минути, а по-късният production build – под четири.

Една изненада: със submit_to_testflight на false Codemagic пак качи build-а в App Store Connect. Документацията на Codemagic описва тази опция като задължителна за разпространение към бета групи.

Лимити на TestFlight

  • Вътрешни тестери: до 100 потребители на App Store Connect във вашия екип.
  • Външни тестери: до 10 000, след като първият ви build за външно тестване бъде одобрен от App Review.
  • Build остава достъпен за тестерите до 90 дни.

Поканата за вътрешен тестер остава чакаща, докато не бъде приета от имейла на TestFlight, и приложението не се появява в TestFlight преди това. Проверете папката за спам.

Какво iPhone откри, а Windows не можа

  • Записаните аудиофайлове не се зареждаха. В приложението fetch връщаше статус 0 с правилните байтове, а нашият код третираше това като грешка. Приемането на статус 0 за локални файлове оправи проблема.
  • Бутоните се отрязваха в хоризонтална ориентация близо до изреза. Преработихме оформлението на резултатите и тествахме всеки ъгъл.
  • Екраните за покупка, споделени с Android, още казваха Google Play. На iOS вече казват App Store.
  • Тестовите покупки, направени в TestFlight, не можеха да се нулират, затова тестовите build-ове получиха бутон, който симулира, че не е купено. Магазинните build-ове нямат такъв.

Стъпка 4: списък в App Store Connect, поверителност и възрастова оценка

Останалото се случва в браузъра. Това е редът, който ни свърши работа.

  1. App Information: подзаглавие, категория и въпросника за възрастова оценка. Отговаряйте честно за това, което играта реално показва.
  2. Pricing and Availability (цена и наличност): цена и държави. Наличността за Mac и Apple Vision Pro беше включена по подразбиране. Изключихме ги, защото играта ни е направена за докосване.
  3. App Privacy (поверителност на приложението): Apple изисква тези данни за нови приложения и актуализации, включително практиките на трети страни партньори, чийто код е в приложението, като рекламни мрежи и SDK. Нужен е публичен URL към политиката за поверителност.
  4. In-app purchase, ако има такива: имена, описания, снимка за преглед и бележки за рецензента.
  5. Страницата на версията: описание, ключови думи, URL адреси за поддръжка и маркетинг, авторски права, build, бележки за прегледа и опцията за издаване. Избрахме ръчно издаване.
  6. Снимки от екрана, после всеки допълнителен език със собствен текст и снимки.
  • Снимки от екрана: правило 2.3.3 казва, че трябва да показват приложението в употреба, а не само заглавното изкуство или сплаш екрана. Нашите са реални снимки от играта.
  • Име на приложението: едно име, което искахме, вече беше заето в App Store. Имайте второ име или име с кратка описателна част готово.
  • Бележки за прегледа: написахме, че играта е завършена в приложението, работи офлайн, не изисква вход, и къде се намират покупката и бутонът за възстановяване.

Прочетете лицензните ни условия, преди да публикувате шаблон като приложение

Стъпка 5: подаване и какво проверява Apple

Подаването ви изисква да публикувате отговорите за App Privacy, да потвърдите, че са верни, и после да изпратите чернова на подаването. Нашето отиде на 19 октомври 2026 г. с версията на приложението и единствената му покупка, а статусът стана Waiting for Review. Ако прегледът върне отказ, отговорът минава през Resolution Center (център за решения), с факти, а не със сляпо повторно подаване.

За игра, направена от шаблон, три правила са най-важни. 4.2 изисква повече от преопакован уебсайт, затова дръжте играта в приложението. 4.3(a) иска да не създавате няколко bundle ID за едно и също приложение. 4.3(b) казва, че Apple не иска приложения, които не могат да се отличат от вече широко достъпни. Пренасочването на шаблон трябва да променя правилата, съдържанието и интерфейса, а не само изкуството.

Какво включват нашите шаблони и каква част можем да свършим вместо вас

Всеки шаблон идва с готовата за хостинг папка на играта, четим сорс код, ръководство и 6 месеца поддръжка, или 12 с разширението. Поддръжката покрива инсталирането и използването на доставените файлове и отстраняването на възпроизводими дефекти. iOS обвивката, нативните реклами, покупките в приложението, настройката на облачния build и списъкът в App Store са отделни услуги.

Ако предпочитате да не настройвате сами подписването и Codemagic, изпратете ни шаблона, плана на акаунта си в Apple и крайния срок. Отговаряме с обхват, цена и срокове, преди да започне каквато и да е работа. Не публикуваме ценоразпис за работа по поръчка.

Поискайте оферта, за да прехвърлите играта си в App Store

Често задавани въпроси

Мога ли да публикувам игра за iPhone, без да притежавам Mac?

Да. За build все пак са ви нужни macOS и Xcode, но облачна услуга като Codemagic ги предоставя. Всичко останало, от App Store Connect до TestFlight, работи в браузър и на iPhone.

Колко струва публикуването в App Store?

Apple Developer Program струва 99 USD на членска година. Безплатният индивидуален план на Codemagic включва 500 минути macOS M2 месечно, а допълнителните минути се таксуват поотделно. Добавете лиценза за играта и арта за магазина.

Трябва ли ми iPhone?

За реално тестване – да. Нашият iPhone откри липсващ звук, отрязани бутони и грешни имена в магазина, които build-ът за Windows и тестовете в браузър не показаха.

Ще приеме ли Apple HTML5 игра, опакована в приложение?

Не можем да обещаем резултат. Правило 4.2 изисква повече от преопакован уебсайт, затова вграждаме цялата игра в приложението, правим я да работи офлайн и ѝ даваме нативни функции. Правило 4.3 важи и за пренасочванията.

Включват ли вашите шаблони iOS build?

Не. Нашите издания са браузърни игри и страниците на продуктите казват, че нативни build-ове за приложения не са включени. Можете да следвате този път сами или да го поръчате от нас по оферта.