Наш опыт кроссплатформенной разработки или как мы перешли разрабатывать в нативе
- немного опыта группы Mobile компании Интерсвязь #ITISteam
Первая версия нашего мобильного приложения (МП) появилась накануне Нового года 2016, дальше все время оно "росло" и наполнялось новыми фичами. Росла одновременно и команда - сегодня это уже 16 программистов! изначально мы писали на react native и это было весьма нерадужно, но сейчас мы используем все самое крутое в разработке: язык программирования Kotlin для Android и Swift для Apple. Это даёт возможность писать приложение используя все возможности мобильных устройств. Да, звучит все просто!
Чтобы понять подробности, нужно подойти со стороны другого вопроса. Почему выбрали кросплатформерную разработку изначально❓ В современных реалиях этот подход зарекомендовал себя как эффективный. Разработчики под разные платформы пишут общий код, который при должной сноровке легко поддерживается и расширяется. Скорость разработки увеличивается колоссально!
Что касается нашего приложения, изначально в 2015г нужен был маленький клиент, который мог бы отображать небольшой пул данных с API. Прототип делался парой инициативных человек и выбор решения был логичен и обоснован. Со временем приложение обрастало функциями, большинство из которых реализовано на подходах React (от компании Facebook), массив дынных увеличивался... Постепенно появлялись функции, которые нужно было реализовывать для каждой платформы отдельно через bridge (мост асинхронного взаимодействия React-native и Native ), но даже так можно было несложно поддерживать приложения. Часть прошлых решений заметна устарела и сегодня мы потихонечку отдаём тех долг, порой называя это рефакторингом ✅
Важный этап в решении - перевести все в натив случился, когда мы закончили разработку стабильной версии умных домофонов. Дело в том, что в мобильной разработке помимо простых штук в виде разработки UI/UX бывают и сложные. Высокоскоростные алгоритмы, реализация клиент-серверных общений по не стандартным протоколам, обработка программных кодеков и многое другое. В умных домофонах было многое из этого. В случае использования react-native внедрение этой разработки выглядело бы так:
react -> android SDK -> NDK
react <- android SDK <- NDK
Это привело бы к сложностям и в самой разработке/отладке/поддержке и конечный пользователь ощутил запаздывания в работе приложения.
Конечно это не единственные плюсы которые мы получили. Теперь мы можем максимально точно и безболезненно использовать все модули устройств, будь то камеры, RFID датчики или RFID метки, микрофоны, акселерометры и т.д. По сути мы избавились от посредника, который генерировал баги и краши. Когда мы полностью закончим наш рефакторинг, увеличится скорость сборки новых решений и выпуск новых фич в продуктив 📲