Мобильное приложение (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:releaseXcode подпишет сборку с помощью «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.