Перейти к содержимому
supastack
Обзор документации
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/mobile/publishing.md (or send Accept: text/markdown).

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

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

Задать вопрос об этом руководстве
Открыть в

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

Сначала создайте и протестируйте собственную сборку для разработки, используя сборки для мобильных устройств. При отправке в магазин скомпилированное приложение и его список отправляются в 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, заполните список и необходимые анкеты, добавьте рабочие инструкции по входу в систему рецензента, а затем отправьте его на рассмотрение там. Загрузка внутреннего черновика не является общедоступным выпуском. Если проверка отклоняет его, откройте точную ссылку на политику в отклонении и исправьте эту проблему перед повторной отправкой.

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.

Часто задаваемые вопросы

14 вопросов

Что такое supastack?

supastack — модульная основа для создания SaaS-продуктов с AI. Она объединяет общую инфраструктуру, чтобы вы могли сосредоточиться на продуктовых функциях.

Поддерживает ли он web и mobile?

Да. supastack включает приложения Next.js и Expo как отправные точки для web- и мобильных интерфейсов.

Какая аутентификация включена?

Better Auth покрывает e-mail/пароль, OTP и социальный вход. Личные воркспейсы провижинируются вместе с аккаунтом, чтобы продуктовые записи были ограничены с первого дня.

Как он поддерживает AI?

supastack включает настраиваемый мультипровайдерный AI, учёт использования, бюджеты и зашифрованную поддержку bring-your-own-key.

Как обрабатываются подписки?

Для продуктов на ките Stripe-биллинг, подписки и права доступа образуют основу платного доступа. Секреты провайдеров остаются только на сервере.

Где живёт мой продуктовый код?

Продуктовые функции остаются в отдельном коде, а продукт настраивает и интегрирует модули основы supastack.

Как устроены цены supastack?

Кит — разовая покупка с пожизненными обновлениями: один фреймворк за $249 (временная стартовая цена — скидка $100 от стандартной цены $349) или все фреймворки (Next.js, iOS, Android) за $499 (временная стартовая цена — скидка $100 от стандартной цены $599), плюс $75 за каждое дополнительное место разработчика. Без подписки на кит. Оплата на этом сайте доставляет лицензионный ключ по e-mail, доступ к репозиторию — через приглашение GitHub.

Как воркспейсы ограничивают мои данные?

Записи пользователей ограничены по workspaceId. Идентичность, права доступа, AI-использование, события биллинга и записи аудита остаются внутри границы личного воркспейса.

Как работают фоновые задачи?

Trigger.dev — явный рантайм задач. Контракт JobRunner обещает только enqueue, status и cancel — семантика workflow остаётся специфичной для Trigger.dev и явной.

Чем почта отличается от рассылок?

Транзакционная почта покрывает продуктовые сценарии вроде уведомлений о завершении. Холодные рассылки и кампании — забота продукта, вне почтового модуля этого кита.

Как работают покупки в мобильном приложении?

Мобильное приложение поддерживает нативные покупки и восстановление через RevenueCat, а сервер проверяет доступ. Настройте аккаунты магазинов и завершите тестирование на устройствах перед публикацией. Веб-оплата остается отдельной.

Где хранятся ключи AI-провайдеров?

Bring-your-own-key креденшелы зашифрованы и остаются только на сервере. Ключи удаляются из логов; использование и бюджеты видны на уровне воркспейса.

Какие способы оплаты принимает оформление заказа?

Оформление заказа на Stripe принимает карты, а после включения кошельков в аккаунте Stripe может также предлагать Alipay и WeChat Pay — удобно для покупателей из Китая. Авторизации кошельков подтверждаются асинхронно, поэтому страница лицензии обновляется, как только платёж завершается.

Могу ли я получить возврат средств?

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

RU
Тема