> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Публикация в магазинах приложений

Отличайте работающую сборку от версии, которую пользователи смогут установить.

## Подготовьте свою первую заявку в магазин шаг за шагом

Сначала создайте и протестируйте собственную сборку для разработки, используя сборки для мобильных устройств. При отправке в магазин скомпилированное приложение и его список отправляются в Google или Apple на проверку; это не то же самое, что открыть предварительный просмотр Expo Go. Вам нужны собственные учетные записи Expo и соответствующие учетные записи разработчиков магазина, протестированный бэкэнд HTTPS, окончательное имя/значок приложения, снимки экрана, контакты службы поддержки и общедоступная политика конфиденциальности URL.

Откройте apps/mobile/app.json в редакторе и задайте имя приложения, ярлык, ios.bundleIdentifier и android.package для своего продукта перед первой загрузкой. Откройте apps/mobile/eas.json и при необходимости замените идентификаторы приложений группы отправки iOS на свои собственные. Отправленные идентификаторы являются примерами. Прочтите сборки для мобильных устройств, чтобы узнать точные поля, и попросите своего агента по кодированию просмотреть два файла перед сборкой.

Если eas не установлен, запустите npm install --global eas-cli. В корне репозитория используйте приведенную ниже команду входа, завершите аутентификацию в браузере, затем выберите команду сборки для одной платформы в разделе «Сборка», а затем отправьте. Прочтите журналы панели мониторинга сборки; перед попыткой отправки дождитесь успешного получения файла .aab или .ipa. EAS запрашивает привязку проекта и учетные данные для подписи; они принадлежат вашим аккаунтам, а не продавцу комплекта.

После загрузки двоичного файла откройте свое приложение в Play Console или App Store Connect, заполните список и необходимые анкеты, добавьте рабочие инструкции по входу в систему рецензента, а затем отправьте его на рассмотрение там. Загрузка внутреннего черновика не является общедоступным выпуском. Если проверка отклоняет его, откройте точную ссылку на политику в отклонении и исправьте эту проблему перед повторной отправкой.

[Подготовьте собственную сборку и идентификаторы](https://supastack.dev/ru/docs/mobile/builds.md)

[Текущие инструкции по отправке в магазин Expo](https://docs.expo.dev/submit/introduction/)

[Текущие рекомендации Apple по проверке приложений](https://developer.apple.com/app-store/review/guidelines/)

[Инструкции по выпуску Google Play](https://support.google.com/googleplay/android-developer/answer/9859455)

```
corepack pnpm --filter @supastack/mobile exec eas login
```


## Настройте учетные записи один раз

Для отправки в магазин необходимы три учетные записи: бесплатная учетная запись Expo для EAS Build and Submit, регистрация разработчика консоли Google Play и членство в программе разработчиков Apple для iOS. Установите EAS CLI и запустите eas login перед сборкой; Проверка обеих регистраций в магазине может занять несколько дней, поэтому начните их заранее.

Переименуйте идентификаторы приложения перед первой загрузкой — android.package и ios.bundleIdentifier поставляются как com.supastack.app в apps/mobile/app.json.. Google Play блокирует имя пакета при первой загрузке, поэтому неправильный идентификатор означает новую запись приложения, а не переименование.


## Позвольте EAS управлять подписанием

apps/mobile/eas.json определяет профили разработки, предварительной версии и промышленной сборки. Рабочий профиль позволяет EAS генерировать и хранить хранилище ключей Android и сертификат распространения iOS в своей инфраструктуре — проверять их позже с помощью eas credentials и не допускать попадания локальных хранилищ ключей в репозиторий.

Для автоматической отправки в Play необходим ключ JSON сервисного аккаунта Google Play, связанный в Play Console → Настройка → API, доступ с разрешением на выпуск. Сохраните его по адресу apps/mobile/secrets/play-store-service-account.json — путь, ожидаемый eas.json, и каталог, игнорируемый git. Первая загрузка нового приложения по-прежнему происходит вручную в Play Console; eas submit заменяет второй выпуск.


## Создайте, а затем отправьте

Сборки выполняются на инфраструктуре EAS, поэтому для двоичного файла не требуется установка Android Studio или Xcode. Рабочий профиль создает готовый для магазина файл .aab для Play и .ipa для App Store с номерами версий, управляемыми удаленно. Профиль предварительной версии создает APK для внутреннего распространения для контроля качества физического устройства.

Отправленный профиль отправки предназначен для внутренней версии Play как черновой выпуск — тестировщикам ничего не доходит до тех пор, пока вы не продвинете его в Play Console после прохождения проверки.

```
corepack pnpm --filter @supastack/mobile build:android
corepack pnpm --filter @supastack/mobile submit:android

corepack pnpm --filter @supastack/mobile build:ios
corepack pnpm --filter @supastack/mobile submit:ios

# Internal-testing APK for a physical device:
corepack pnpm --filter @supastack/mobile build:android:preview
```


## Заполните формы Play Console

Играйте в контрольные ворота как для заявленного контента, так и для двоичного файла: общедоступную политику конфиденциальности URL, форму безопасности данных, анкету для оценки контента, целевую аудиторию и категорию. Ответ Безопасность данных на основе реального поведения приложения — комплект собирает электронную почту учетной записи для аутентификации, сохраняет токены сеанса в безопасном хранилище платформы и обращается только к настроенному вами API; добавьте сверху все, что добавляет ваш продукт.

Для приложения iOS, требующего входа в систему, предоставьте App Review рабочую демо-учетную запись и инструкции в примечаниях к обзору. Прежде чем выбирать варианты входа через социальные сети, ознакомьтесь с действующим правилом Apple для служб входа в систему и его исключениями; требования зависят от фактического процесса входа в приложение. Официальные рекомендации приведены в разделе «Первая подача» выше.


## Сначала покупайте ворота за RevenueCat

Если ваше приложение предлагает мобильные покупки, настройте поставляемый поток RevenueCat: установите `MOBILE_PURCHASES_PROVIDER=revenuecat` и `EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat`, затем укажите соответствующий общедоступный ключ iOS или Android SDK. Родное приложение поддерживает покупку и восстановление; после этого доступ обновляется из разрешений на рабочую область, проверенных сервером. Stripe Checkout не используется в мобильном потоке. Держите платный доступ недоступным, если покупки отключены или отсутствует необходимая конфигурация. Проверка настроенных продуктов магазина, покупка, восстановление и обновление прав в сборке разработки EAS с тестовыми учетными записями магазина. Ознакомьтесь с действующим руководством магазина, чтобы узнать требования, применимые к вашему приложению и регионам.


## Контрольный список перед подачей

Перед отправкой подтвердите каждый пункт ниже, используя собственное тестовое приложение и учетные записи магазина.

- android.package и ios.bundleIdentifier переименованы в принадлежащий вам идентификатор.
- EXPO_PUBLIC_API_URL в среде сборки указывает на производственный API.
- Политика конфиденциальности размещена на общедоступном сайте URL и указана в списке магазинов.
- Форма безопасности данных соответствует реальной коллекции: адрес электронной почты для аутентификации, трафик API и все, что добавляет ваш продукт.
- Учетные данные рабочего демо-аккаунта в примечаниях к обзору App Store
- Платный доступ скрыт или поддерживается подтвержденным правом RevenueCat.
- Возврат по глубокой ссылке, восстановление сеанса и выход из системы подтверждены на физическом устройстве.
- Скриншоты и список активов подготовлены для каждого магазина.


## Восстановление после отказа

Отказы поступают со ссылкой на политику — устраните заявленную причину, а не гадайте о симптоме. Несоответствие безопасности данных обычно означает, что неверна форма, а не приложение. Отказ при необходимости входа в систему обычно означает, что в примечаниях к обзору не было демо-счета. Отправьте повторно с примечаниями к выпуску, в которых четко указано исправление.

Полное пошаговое руководство — команды учетных данных, порядок операций консоли и сценарий отклонения — находится в docs/mobile-store-submission.md в репозитории.


## Настройка и конфигурация

Для выпуска нативного приложения нужны аккаунты разработчика Apple и/или Google, идентификаторы приложения, данные подписи и проверка магазина. Production-профиль EAS увеличивает номера сборок для магазина; submit.production отправляет черновой релиз на внутренний трек Google Play. Идентификаторы bundle и схема приложения находятся в apps/mobile/app.config.ts.

Веб-развёртывания и выпуски в магазинах идут с разной скоростью. Сохраняйте совместимость API с самой старой поддерживаемой версией приложения или управляйте новыми возможностями через состояние на сервере.

```
corepack pnpm --filter @supastack/mobile build
eas build --profile production --platform ios
eas build --profile production --platform android
eas submit --profile production --platform ios
eas submit --profile production --platform android
```


## Рабочий процесс внедрения

До включения нативных покупок настройте проект RevenueCat, продукты магазинов и право доступа. Секретный серверный ключ и значение Authorization для webhook должны храниться только в настройках сервера; SDK-ключи iOS и Android являются публичными данными сборки. Отключите доступ sandbox в production.

Подготовьте материалы для магазина — снимки экрана, описание, сведения о конфиденциальности и уведомления о покупках — в материалах выпуска продукта. Покупки и восстановления RevenueCat проверяются по актуальному состоянию подписчика на сервере до того, как приложение показывает доступ.


## Проверка и устранение неполадок

Проверьте именно тот артефакт, который отправляете: возврат после входа, восстановление сессии, покупку и восстановление, обновление серверных прав, смену рабочей области, диплинки и работу без сети на физическом устройстве. Успешный локальный экспорт не означает, что сборка готова к магазину.

Запишите номер сборки, трек магазина, статус проверки и окружение API для каждого выпуска. Отклонение проверки — событие выпуска: исправьте метаданные или флаги возможностей, а не меняйте код наугад.

Следующая платформа: вкладка Desktop показывает тот же продукт в оболочке Tauri.


## Вперёд

[Обзор desktop](https://supastack.dev/ru/docs/desktop.md)
