/
GetMega

Переход на мультиплатформу за 3 месяца: как сделать iOS-приложение с общим кодом, не останавливая разработку Android-версии

GetMega — мобильное и веб-приложение для совместных игр и общения онлайн. Создано для Megashots Internet Private Limited. Работает на iOS и Android.

3 месяца разработки

Бюджет — 3 млн рублей

Переход на KMM

Задача

Задача

У заказчика было в разработке приложение на Android. Стояла задача сделать приложение мультиплатформенным и разработать версию на iOS, не останавливая разработку Android-приложения.

Решение

Решение

Проанализировали проект и составили индивидуальный план внедрения KMM. Создали общий код для второй платформы с заделом на интеграцию с первой, чтобы клиент мог добавлять в общий код новые функции Android-версии.

Процесс разработки

Что хотел заказчик. Заказчик — индийская компания Megashots Internet Private Limited, владелец сайта для совместных игр и общения.

В некоторых штатах Индии запрещено играть на деньги, поэтому при регистрации на сайте обязательно нужен доступ к геолокации, чтобы определить штат пользователя. Для решения этой проблемы заказчик сделал мобильное приложение на Android.

На проект положительно отреагировали инвесторы, поэтому заказчик решил быстро создать и iOS-версию. Для разработки он выбрал KMM и пришел к нам за помощью. Мультиплатформа сэкономила бы время на разработку и упростила бы поддержку обеих платформ в будущем, а мы как эксперты могли помочь с внедрением.

Команда разработки. Для работы над этим проектом с нашей стороны участвовали два Android-разработчика, один iOS-разработчик, тимлид и проджект-менеджер.

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

Перенесли функции Android-приложения в iOS-версию. Сначала мы взялись за модули, не содержащие сложных платформенных интеграций и компьютерной графики: список друзей, авторизацию, историю игр. Подобные модули мы уже делали не раз, и поэтому быстро их перенесли. Каждый модуль переносили под новый дизайн.

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

Обучили заказчика переносу функций. К тому моменту, когда мы перенесли в общий код весь существующий функционал, клиент завершил разработку модуля проверки паспорта и геолокации. С нашей поддержкой он своими силами перенес модуль на мультиплатформу и освоил этот навык.

Чему мы научили клиента:

  • нашему архитектурному подходу;
  • верстке на Jetpack Compose;
  • привязке к мультиплатформенному коду со стороны iOS и Android;
  • настройке gRPC.
Основной функционал, сами игры, заказчик собирался реализовать в последнюю очередь и сразу на обеих платформах.

Что было самым сложным

Работа с gRPC-клиентом. Для идеальной интеграции были нужны библиотеки, которые умеют:

  • генерировать Kotlin-классы для моделей сообщений в общем коде;
  • генерировать Kotlin-классы для gRPC-клиента в общем коде;
  • реализовывать эти классы для iOS и Android из коробки;
  • настраивать gRPC-клиент из общего кода: подставлять адрес сервера, заголовки авторизации.
Мы нашли лишь одну библиотеку, которая нам почти подошла. В ней не было необходимых функций, и она была реализована только на Android.

Как мы решили эту задачу

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

Технологический стек

Android на Jetpack Compose
KMM

Результат

Создали общий код для iOS-версии с заделом на интеграцию с Android-версией. Перенесли в iOS-приложение существующие функции.

Научили клиента использовать мультиплатформенный код с привязкой к обеим платформам.

Теперь заказчик может добавлять новые фичи сразу на обе платформы.

iOS
iOS
Android

Чтобы скоординироваться с командой заказчика и перенести существующие функции в iOS-версию, не останавливая разработку приложения на Android.

План перехода на KMM

Чтобы скоординироваться с командой заказчика и перенести существующие функции в iOS-версию, не останавливая разработку приложения на Android.

0

Давайте обсудим ваш проект!

Это бесплатно. Мы расскажем, как приложение решит конкретные бизнес-задачи.

Похожие проекты

Brizk

2023

Event

2023

UPSTOX

2022