Predictor X

Мобильное приложение (iOS)

Как собрать iOS-приложение Предиктор Икс на своем iPhone — пока его нет в App Store.

iOS-клиент Предиктор Икс находится в основном репозитории вместе с веб-версией, десктопным приложением и бэкендом. Его пока нет в App Store — и пока ситуация не изменится, любой желающий установить его на свой iPhone должен собрать приложение из исходного кода. Первая сборка занимает около 10–20 минут, последующие — около 2 минут. Приложение работает с тем же бэкендом, что и predictorx.ru, поэтому ваша существующая учетная запись будет работать без проблем.

Эта страница предназначена для личного использования. Разработчикам приложений следует ознакомиться с файлом apps/mobile/README.md в репозитории — там описаны dev- и staging-версии, а также полная матрица скриптов.

Что вам понадобится

  • Компьютер Mac с установленным Xcode (бесплатно из App Store).

  • Бесплатный Apple ID, добавленный в Xcode → Settings → Accounts. Платный аккаунт Apple Developer Program необязателен — он лишь увеличивает срок действия подписи с 7 дней до 1 года (см. раздел 7-дневный лимит ниже).

  • iPhone, подключенный через USB-кабель, с включенным режимом разработчика (Настройки → Конфиденциальность и безопасность → Режим разработчика).

  • Склонированный исходный код Предиктор Икс:

    cd predictorx
    pnpm install

Если в этом списке чего-то не хватает, ознакомьтесь с руководством Expo Set up your environment (выберите Development build → iOS Device) — это эталонное руководство по настройке всего окружения, за исключением клонирования репозитория.

Сборка

Всего одна команда:

pnpm ios:mobile:device:prod:release

Xcode подпишет сборку с помощью «Personal Team», которая автоматически принадлежит вашему Apple ID. Эта команда создается незаметно при первом входе в Xcode с любым Apple ID, поэтому она уже там, даже если вы не помните, чтобы что-то настраивали. Это Release-сборка: без зависимости от Metro, сразу с экрана загрузки (splash) в приложение — точно так же, как при установке из App Store.

Первая сборка загружает CocoaPods и компилирует React Native из исходного кода — это займет 10–20 минут. Последующие сборки используют кэш Xcode и проходят гораздо быстрее.

Это стандартный путь. Если подпись не удалась, перейдите к разделу Устранение неполадок.

7-дневный лимит

Бесплатный Apple ID подписывает сборки на 7 дней. После этого приложение откажется запускаться на вашем iPhone и покажет ошибку «Ненадежный разработчик». Снова подключите телефон к Mac и запустите ту же команду для повторного подписания — ваши данные не пропадут, так как они хранятся на бэкенде, а не в самом приложении.

Единственный способ продлить этот срок — использовать платный аккаунт Apple Developer Program ($99/год на developer.apple.com). В этом случае подпись будет действовать 1 год между продлениями, а также вы сможете распространять приложение среди других пользователей через TestFlight.

Обновление

Автоматического обновления пока нет. Когда кодовая база Предиктор Икс обновляется, подтяните изменения и пересоберите приложение:

git pull
pnpm install
pnpm ios:mobile:device:prod:release

Последующие сборки выполняются быстро, так как Xcode кэширует скомпилированный нативный код.

Почему приложения еще нет в App Store

iOS-приложение развивается очень быстро — на данном этапе команда предпочитает концепцию «выпускай и итерируй» вместо прохождения циклов модерации App Store. Бета-тестирование в TestFlight — наиболее вероятный следующий шаг перед полноценным релизом в App Store. А пока сборка из исходников — единственный способ использовать Предиктор Икс на iOS.

Если вы хотите получить уведомление об открытии TestFlight, следите за репозиторием на GitHub.

Устранение неполадок

«No matching provisioning profiles found» — Xcode отказывается подписывать стандартный bundle id ai.predictorx.mobile вашим Apple ID. Это происходит редко, но случается, если кто-то уже зарегистрировал этот префикс на портале разработчиков Apple. Выберите любой обратный домен, который вы контролируете (например, com.yourname.predictorx), экспортируйте его и запустите сборку заново:

export EXPO_BUNDLE_IDENTIFIER_PROD=com.yourname.predictorx
pnpm ios:mobile:device:prod:release

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

«Could not launch app» / «Untrusted Developer» — либо истек 7-дневный лимит (пересоберите приложение), либо вам нужно вручную подтвердить доверие профилю разработчика на вашем iPhone: Настройки → Основные → VPN и управление устройством → нажмите на ваш Apple ID → Доверять.

Сборка зависает на Pod install или компилируется бесконечно — первая сборка действительно длится 10–20 минут, так как CocoaPods загружает зависимости, а Xcode компилирует React Native из исходников. Последующие сборки проходят значительно быстрее.

Приложение не может подключиться к бэкенду — убедитесь, что файл apps/mobile/.env.production не был изменен (он поставляется с настройкой EXPO_PUBLIC_API_URL=https://api-cloud.worker.edge.predictorx.ru). Если вы его изменили, восстановите исходную версию с помощью команды git checkout apps/mobile/.env.production.