Как создать приложение для Android и iOS: путь от идеи до сторов
Чаще всего клиент приходит с макетом в голове и вопросом «сколько стоит приложение». Экраны при этом — меньше половины работы. Расскажу, из чего на самом деле складывается путь до App Store и Google Play, на примере приложения на 15 языках.
Samandar MaxamadjonovМобильный разработчик
В Foydali Nuqtalar есть вход через Google и вход через Apple. Второй появился не потому, что клиент его просил. Просто iOS-приложение со входом через Google без входа через Apple на модерацию лучше не отправлять: правило известное, и его проще заложить в план с первого дня, чем доделывать перед релизом.
Эта мелочь хорошо показывает, о чём статья. Сделать экраны приложения — понятная задача. А вот всё, что вокруг экранов, и съедает сроки: бэкенд, вход, push, оплата, правила двух магазинов.
Сначала общая картина. Ниже этапы в том порядке, в котором мы их проходим с клиентами.
- Идея и первая версия. Выписываем, что приложение делает в первой версии. Не всё, что хочется, а минимум, ради которого его установят.
- Дизайн и прототип. Экраны в Figma, кликабельный прототип. На нём клиент впервые «трогает» приложение и почти всегда что-то меняет.
- Бэкенд и API. Сервер, база, админка, где клиент управляет контентом и пользователями.
- Мобильное приложение. Одна кодовая база под Android и iOS.
- Тестирование на реальных телефонах. Не только на iPhone разработчика, но и на недорогом Android с маленьким экраном.
- Публикация. Аккаунты разработчика, описание, скриншоты, политика конфиденциальности, модерация.
Шестой этап кажется формальностью. Он ей не является, об этом ниже.
Flutter, React Native или нативная разработка
Мы пишем на Flutter. Это не религия, а расчёт для студии нашего размера: одна кодовая база, один разработчик может вести обе платформы, интерфейс выглядит одинаково на Android и iOS.
- +Один код для Android и iOS, обычно экономия 30–40% времени против двух нативных приложений
- +Свой движок отрисовки: интерфейс не «разъезжается» на разных версиях Android
- +Быстрый hot reload, правки видно за секунду
- +Хорошие пакеты для Firebase, входа через Apple и Google, оплаты
- −Размер приложения больше, чем у нативного
- −Новые функции iOS и Android появляются во Flutter с задержкой
- −Для тяжёлой работы с камерой, AR или Bluetooth иногда нужен нативный код
React Native — нормальный выбор, если у команды уже сильный React на вебе. Нативная разработка на Swift и Kotlin оправдана, когда приложение глубоко работает с железом или когда бюджет позволяет держать две команды. Для большинства задач наших клиентов (каталог, запись, контент, личный кабинет) Flutter хватает с запасом.
Бэкенд: половина, которую не видно
Клиенты часто удивляются, что у приложения есть сервер. А он есть почти всегда: где-то должны храниться пользователи, покупки, контент. И кто-то должен этим управлять без программиста.
В Foydali Nuqtalar бэкенд на Django и DRF. Там живут пользователи, главы книги, переводы, транзакции. Через админку клиент добавляет контент, видит оплаты и рассылает push-уведомления. Push идут через Firebase Cloud Messaging на Android и через APNs на iOS.
Отдельный совет: делайте админку сразу. Без неё каждая опечатка в тексте превращается в задачу для разработчика и новую версию в сторе.
15 языков и другие сюрпризы Foydali Nuqtalar
Foydali Nuqtalar — платная книга по самопомощи с точечным массажем. Клиент хотел аудиторию не только в Узбекистане, поэтому языков получилось много.
Среди 15 языков есть английский, русский, узбекский на латинице и кириллице, французский, испанский, турецкий, немецкий, суахили, индонезийский. И три языка с письмом справа налево: арабский, урду и персидский. Для них интерфейс должен зеркально переворачиваться: кнопка «Назад» справа, иконки со стрелками в другую сторону, отступы наоборот. Flutter это поддерживает, но каждый экран всё равно нужно проверить глазами.
Второй сюрприз: длина слов. Кнопка, которая на английском помещается в одну строку, на немецком переносится, а на узбекском кириллицей вылезает за край. Поэтому экраны стоит проверять на самом длинном языке, а не на русском.
Третий: переводы контента. Интерфейс — это пара сотен строк, а книга — десятки глав. Переводы хранятся в базе (django-parler), и их добавляют через админку по мере готовности, без новой версии в сторе.
Оплата: решите до первой строки кода
Это самая частая ошибка в планировании. Схема оплаты влияет на архитектуру, на модерацию и на то, сколько денег дойдёт до клиента.
У Apple и Google есть встроенные покупки (In-App Purchase) с комиссией магазина, обычно 15–30%. Для цифрового контента внутри приложения магазины ожидают именно их. Для физических товаров и услуг можно подключать обычные платёжные системы.
В Foydali Nuqtalar главы книги открываются после оплаты. Чек пользователь отправляет через Telegram-бота, оператор подтверждает его в админке, и доступ к главам открывается в приложении. Для местной аудитории это привычный сценарий: оплатить переводом и отправить скриншот чека. Но такую схему нужно заранее сверить с текущими правилами сторов, потому что они меняются.
Модерация в App Store и Google Play
Apple проверяет каждое обновление вручную, обычно от одного до трёх дней. Google в основном автоматически, но с ноября 2023 года для новых личных аккаунтов разработчика есть требование: перед публикацией пройти закрытое тестирование с 20 тестировщиками в течение 14 дней. Если вы открываете аккаунт на физлицо, заложите эти две недели в план. Аккаунт разработчика Apple стоит $99 в год, Google Play — $25 один раз.
Перед отправкой на модерацию мы проходим такой список:
- Вход через Apple есть, если есть любой другой сторонний вход
- Аккаунт можно удалить прямо в приложении
- Политика конфиденциальности опубликована по ссылке и указана в обоих сторах
- Заполнены анкеты о данных: App Privacy в App Store, Data safety в Google Play
- Для модератора создан тестовый аккаунт с доступом к платному контенту
- Скриншоты сделаны для нужных размеров экранов, включая iPad, если приложение на нём запускается
- Push-уведомления запрашивают разрешение в понятный момент, а не на первом экране
- Приложение работает без интернета хотя бы настолько, чтобы показать понятную ошибку
Тестовый аккаунт для модератора — пункт, на котором спотыкаются чаще всего. Если ревьюер не может зайти в платную часть, он отклоняет приложение и просит доступ. Это минус ещё два-три дня.
Сроки и бюджет
Сроки зависят от объёма, но пропорции между этапами у нас обычно похожие. Ниже типичное распределение для приложения среднего размера, примерно, по нашим проектам.
Этапы частично идут параллельно, поэтому в сумме выходит не 21 неделя, а обычно три-четыре месяца. По деньгам мобильное приложение у нас начинается от $1 600, и в эту сумму входят и бэкенд, и публикация. Дизайн можно заказать отдельно, если вы хотите сначала проверить идею на прототипе: UI/UX-дизайн начинается от $600.
Три совета перед стартом
Заложите вход через Apple и удаление аккаунта в план с первого дня, вместе с остальными требованиями сторов. Проверяйте экраны на самом длинном и на RTL-языке до того, как всё свёрстано, а не после. И честно спросите себя, нужен ли вам именно магазин приложений. Иногда для первой версии хватает Telegram-бота, а приложение можно сделать, когда станет понятно, что людям оно действительно нужно.
Подробнее о проекте можно посмотреть в кейсе Foydali Nuqtalar.



