Многие инди-разработчики и аутсорс-команды работают на Windows, но путь публикации в App Store по-прежнему проходит через экосистему Apple: подпись кода, Archive, загрузка .ipa, распространение через TestFlight и отправка на проверку зависят от инструментов macOS. Это не значит, что на каждом столе нужен Mac. В 2026 году практичное разделение такое: Windows — повседневная разработка и работа в App Store Connect, облачный Mac — подпись и релиз. В этом руководстве — пошаговая шкала времени: что можно на Windows и что обязательно на Mac, плюс переиспользуемый чеклист для команды.
Главное: Windows ведёт store ops, Mac подписывает и загружает
Разделите публикацию iOS на две категории — границы станут ясны. Store-задачи (аккаунты, метаданные, цены, переписка с Review) — в браузере. Build-задачи (сертификаты, Keychain, Archive, codesign) — только macOS. Таблица ниже — справочник, который Windows-команды крепят рядом с runbook релиза.
| Этап | Windows? | Примечания |
|---|---|---|
| Apple Developer Program | Да | Только браузер; Apple ID и проверка личности/компании |
| Метаданные, скриншоты, цены App Store Connect | Да | Чистый веб-интерфейс; любой современный браузер на Windows |
| Код, Git, кроссплатформенные сборки | В основном да | Flutter, React Native, KMP на Windows; финальная iOS-сборка — Mac |
| Сертификаты, Provisioning Profile, Keychain | Нет | Нужны Keychain macOS и инструменты подписи Xcode |
| Archive, codesign, .ipa | Нет | xcodebuild и Xcode Organizer только на macOS |
| Загрузка TestFlight / App Store | Косвенно | Transporter — macOS; fastlane на облачном Mac — типичный путь |
| Review, релиз, отчёты о продажах | Да | Всё через App Store Connect в браузере |
Шесть шагов: от нуля до App Store
Swift, Flutter или React Native — основной путь релиза один. Шаги в хронологическом порядке с рекомендуемой средой. Это карта онбординга на вопрос «где Windows заканчивается?»
- Вступить в Apple Developer Program (Individual ~$99/год или Organization — актуальные цены на apple.com)
- Создать запись App в App Store Connect: Bundle ID, имя, основной язык, SKU
- Настроить подпись: Distribution-сертификат + App Store Provisioning Profile
- Archive и загрузка билда: Xcode Organizer или
fastlane gym + pilot/deliver - TestFlight внутреннее/внешнее тестирование: краши, разрешения, логин, оплата
- Отправка на App Review и публикация: заметки для review, export compliance, privacy labels; после одобрения — выбор регионов
Шаги 1, 2, 5 (тестеры) и 6 (метаданные, ответы review) съедают больше календарного времени на Windows. Шаги 3 и 4 короче по часам, но рискованнее — заложите сессию на облачном Mac до первого жёсткого дедлайна, а не в ночь перед submit.
Шаг 1: Apple Developer и App Store Connect (браузер Windows)
Регистрация в Apple Developer Program с Apple ID. Individual обычно требует проверки личности; Organization — D-U-N-S и документы компании. Сроки различаются — подавайте заявку рано, не ждите готовый билд.
После активации — App Store Connect, Мои приложения, + для нового app. Сначала зарегистрируйте Bundle Identifier в Certificates, Identifiers & Profiles и сверьте с PRODUCT_BUNDLE_IDENTIFIER в Xcode.
Всё ниже — полностью на Windows:
- Название, подзаголовок, описание, ключевые слова, URL поддержки, ссылка на политику конфиденциальности
- Скриншоты и preview-видео нужных размеров (Figma, Photoshop и т. п.)
- Цены, территории, in-app purchases, подписки
- Конфиденциальность app (Privacy Nutrition Labels) и декларации сбора данных
- TestFlight-тестеры, демо-аккаунты для App Review
Команды часто недооценивают метаданные. Тексты store, локализация и наборы скриншотов по классам устройств идут параллельно разработке — без Mac. Забронируйте время в календаре для Connect, как для QA.
Шаг 2: сертификаты, профили, подпись (только Mac)
Здесь чаще всего застревают команды только на Windows. Приватные ключи Distribution лежат в Keychain macOS; Provisioning Profiles привязаны к App ID и Capabilities (push, Sign in with Apple, App Groups и др.). Вкладка Signing & Capabilities в Xcode обычно проще всего.
Рекомендуемый подход
- На облачном или общем Mac: Xcode → Settings → Accounts, Automatic Signing или ручной Distribution-сертификат
- Перед экспортом .p12 + профиль — правила хранения ключей; утечка private key = релизы от вашего имени чужими руками
- CI: App Store Connect API Key (.p8) с fastlane; ключи — как prod-секреты
- Задокументируйте, какой Apple ID держит Distribution-сертификат и какая машина — запись Keychain
Мультирегиональные команды с единым источником подписи: FAQ по governance iOS-подписи и Provisioning Profile на облачном Mac. Windows не заменит этот шаг — без Keychain macOS нет compliant-среды codesign.
Проект от другого подрядчика: проверьте signing identity до первого Archive. Несовпадение Team ID, просроченные профили и drift Capabilities — топ-3 первой неудачной загрузки.
Шаг 3: Archive, загрузка, TestFlight
После чистого Simulator release-сборка через Release + Generic iOS Device / Any iOS Device для Archive. Три основных пути загрузки:
| Способ | Кому | Заметки |
|---|---|---|
| Xcode Organizer → Distribute App | Первый релиз, GUI-отладка | Облачный Mac по VNC; Windows смотрит удалённо |
fastlane gym + pilot | Команды с CI | Скриптуемо, повторяемо, фиксированный ритм релизов |
| Transporter (macOS) | Есть .ipa, Xcode не нужен | Drag-and-drop; типично при передаче от агентства |
После успешной загрузки билд появляется в TestFlight. Обработка — от минут до часов. При первой загрузке часто нет export compliance, декларация шифрования или dSYM не синхронизированы — чаще формы в Connect, без rebuild.
TestFlight минимум: cold start, login/регистрация, платные сценарии, push и deep links, несколько версий iOS и размеров экрана. StoreKit или региональные цены: FAQ региональной sandbox App Store.
Логируйте номера билдов (CFBundleVersion) и время загрузки. При письмах ITMS от Apple точное совпадение билда экономит часы между Windows и облачным Mac.
Шаг 4: отправка на review и публикация
TestFlight в порядке — выберите билд и заполните информацию App Review:
- Контакт и телефон (Review может позвонить)
- Демо-логин и пароль (если нужен вход)
- Заметки для review: feature flags, шаги теста, особое железо
- Права на контент, возрастной рейтинг, гос. декларации — по бизнесу и региону
Submit for Review → Waiting for Review → In Review. При отказе — Guideline в Resolution Center; метаданные в браузере Windows, новый билд или только ответ. После одобления — ручной или автоматический релиз по странам.
Частые причины отказа: краши или placeholder, нет privacy policy, неясные Info.plist Usage Description, Guideline 4.3 похожие app, несоответствие текста IAP/подписок. Редко зависит от ОС разработки — но Info.plist и Capabilities до первого Archive должны быть верны в Mac/Xcode.
Короткий «review packet» для PM: демо-доступ, состояние флагов, happy path в три шага. Reviewers — люди; ясность важнее маркетинга.
Рекомендуемый workflow для Windows-first команд
Проверенное разделение труда:
- Windows: VS Code / Cursor, Git PR, App Store Connect, переписка с Review
- Облачный Mac: тот же Git,
pod install/ SPM, Archive, fastlane, VNC при ошибках Signing - Связь: SSH для скриптов, VNC для GUI; артефакты в Git или object storage — без ручного копирования между ОС
- Окно релиза: облачный Mac посуточно — включён на неделе релиза; дешевле idle Mac на каждого dev
Сверьте пошаговый Archive → TestFlight с FAQ удалённого Xcode, подписи и TestFlight с Windows — SSH, флаги xcodebuild, коды ошибок первой загрузки.
Границы: когда одного CI мало
Хостинг macOS runner (GitHub Actions и др.) для unattended-сборок — но держите интерактивный облачный Mac для:
- Первого включения Capability в Xcode, mismatch Provisioning Profile
- ITMS в Organizer с логами Xcode и письмами Apple
- Новых runtime Simulator, сбоев индекса Swift Package
- Отказа в тот же день с новым Archive
CI — повторяемость; люди — сюрпризы портала и Keychain. Бюджет на оба, не вместо.
Pre-launch чеклист (для печати)
- Apple Developer Program активен; Bundle ID зарегистрирован
- App создан в Connect; URL privacy policy доступен
- Distribution-сертификат и App Store Profile действительны; Capabilities совпадают с проектом
- Archive в Release; версия (
CFBundleShortVersionString/CFBundleVersion) по правилам инкремента - Билд в TestFlight; export compliance и шифрование заполнены
- Скриншоты, описание, возраст, демо-аккаунт, заметки review готовы
- Известные краши и блокеры исправлены; dSYM загружены при необходимости символизации
Облачный Mac для релизных окон
Покупать Mac ради нескольких релизов в год редко окупается. Выделенный Mac mini посуточно подходит под модель «релизное окно»: SSH/VNC, зафиксированная версия Xcode, Archive, выключение. vpszap — bare metal Apple Silicon, мультирегион, посуточная оплата без долгого контракта — в духе «Windows пишет код, Mac релизит». Узнать об облачном Mac mini vpszap и прогнать полный Archive → TestFlight до реального дедлайна — проверить latency и диск.