У заказчика было в разработке приложение на Android. Стояла задача сделать приложение мультиплатформенным и разработать версию на iOS, не останавливая разработку Android-приложения.
Проанализировали проект и составили индивидуальный план внедрения KMM. Создали общий код для второй платформы с заделом на интеграцию с первой, чтобы клиент мог добавлять в общий код новые функции Android-версии.
Что хотел заказчик. Заказчик — индийская компания Megashots Internet Private Limited, владелец сайта для совместных игр и общения.
В некоторых штатах Индии запрещено играть на деньги, поэтому при регистрации на сайте обязательно нужен доступ к геолокации, чтобы определить штат пользователя. Для решения этой проблемы заказчик сделал мобильное приложение на Android.
На проект положительно отреагировали инвесторы, поэтому заказчик решил быстро создать и iOS-версию. Для разработки он выбрал KMM и пришел к нам за помощью. Мультиплатформа сэкономила бы время на разработку и упростила бы поддержку обеих платформ в будущем, а мы как эксперты могли помочь с внедрением.
Команда разработки. Для работы над этим проектом с нашей стороны участвовали два Android-разработчика, один iOS-разработчик, тимлид и проджект-менеджер.
Начали с плана перехода. В первую очередь мы проанализировали проект и составили план перехода на КММ. Когда мы закончим со своей частью работы, заказчик сможет переносить по нему новые функции приложения.
Перенесли функции Android-приложения в iOS-версию. Сначала мы взялись за модули, не содержащие сложных платформенных интеграций и компьютерной графики: список друзей, авторизацию, историю игр. Подобные модули мы уже делали не раз, и поэтому быстро их перенесли. Каждый модуль переносили под новый дизайн.
Когда мы переработали весь функционал, не находившийся в активной разработке, мы передали проект в руки заказчика.
Обучили заказчика переносу функций. К тому моменту, когда мы перенесли в общий код весь существующий функционал, клиент завершил разработку модуля проверки паспорта и геолокации. С нашей поддержкой он своими силами перенес модуль на мультиплатформу и освоил этот навык.
Чему мы научили клиента:
Работа с gRPC-клиентом. Для идеальной интеграции были нужны библиотеки, которые умеют:
Взяли самую подходящую библиотеку и довели ее до ума вручную. Подробнее этот опыт мы описали в нашей статье. Мы не только разобрались в проблеме, но и научили клиента справляться с ней.
Создали общий код для iOS-версии с заделом на интеграцию с Android-версией. Перенесли в iOS-приложение существующие функции.
Научили клиента использовать мультиплатформенный код с привязкой к обеим платформам.
Теперь заказчик может добавлять новые фичи сразу на обе платформы.
Чтобы скоординироваться с командой заказчика и перенести существующие функции в iOS-версию, не останавливая разработку приложения на Android.