Мой опыт коммерческой разработки на Ionic небольшой, но и немаленький. Я использую этот инструмент около двух лет: написал самостоятельно два приложения с нуля до публикации и участвовал в командной разработке одного проекта. Если вы хотите научиться делать мобильные приложения на Ionic, то вам следует это знать.

Для начала вам необходимо купить себе MacBook и iPhone. Ну и конечно же, вам понадобится телефон на Android. На первый взгляд кажется, что можно обойтись без этого набора, ведь приложение на Ionic можно посмотреть прямо в браузере. Но на самом деле ваше приложение может иметь существенные отличия при запуске на каждой из платформ. Чтобы полноценно проверить работу, вам придется запустить его и в браузере, и с помощью эмуляторов различных девайсов Android/iOS, и на реальных девайсах Android/iOS. Кроме прочего, опубликовать приложение в AppStore просто невозможно без наличия MacBook.

Итак, вы обзавелись всеми необходимыми устройствами для разработки мобильных приложений, пора писать код. Прелесть Ionic в том, что нет необходимости учить Objective-C, Swift, Java, Kotlin – достаточно просто знать JavaScript. Т.е. получается, что любой Web-разработчик может в момент стать мобильным разработчиком? Это действительно так, но это только на первый взгляд. Вам нужно будет разобраться с целым рядом особенностей мобильных приложений.

Первое, на что нужно обратить внимание – функции приложения, которые зависят от нативных возможностей устройств (файловая система, камера, WiFi-модуль, календарь и другое). Все это реализуется с помощью плагинов Cordova или Capacitor. Вы должны обязательно убедиться, что необходимые вам плагины не просто существует, но и работают – делают ровно то, что вам нужно, делают это без ошибок и на всех интересующих вас платформах.

Однажды я делал приложение, которое активно использовало WiFi-модуль: сканирование сетей, подключение/отключение, запоминание сетей, проверка уровня сигнала и типа шифрования. Я нашел в документации Ionic плагин, который умеет все, что мне было необходимо и радостно сообщил заказчику, что данную функцию возможно реализовать. Мы начали работу, договорились в начале выпустить версию приложения для Android, а после и для iOS. С первой у меня все получилось, но не без проблем – оказалось, что в плагине есть небольшие баги, но их удалось успешно обойти. Я занялся версией для iOS и обнаружил, что сканирование сетей не работает. Я начал читать issues в репозитории плагина и оказалось, что у автора плагина просто нет iPhone. Он тестировал плагин однажды давно на iPhone своей девушки. Но это еще не все, на самом деле проблема таилась даже не в плагине – разработчики платформы iOS не разрешают сканировать сети из соображений безопасности. Т.е. надежд на решение проблемы у меня не осталось. А это, на секундочку, ключевая функция моего приложения.

Как так-то?!
Как так-то?!

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

Еще один немаловажный момент в работе с нативными функциями устройств. Как вы знаете, Android и iOS регулярно обновляются. Вы должны проверять работу приложения после каждого обновления. Ваш плагин Cordova/Capacitor может перестать работать после обновления платформы и вам необходимо будет сообщить о проблеме автору плагина и дождаться исправления. А главное, не забыть предупредить ваших дорогих пользователей о проблеме.

Кроме нативных функций вам предстоит разобраться с особенностями верстки приложения для разных платформ. Например, у новых iPhone есть челка – это нужно учесть. Одна и та же кнопка может выглядеть на Android и iOS по-разному – это нормально и ожидаемо. Нужно проверить вид приложения не только на разных платформах, но и на разных моделях устройств в рамках каждой из платформ. В вашем коде будет много "костылей", чтобы учесть все моменты, поэтому не забывайте писать комментарии)

И еще один "подводный камень", который я хотел бы отметить. Портировать приложение под Android и iOS не всегда бывает просто. В начале разработки, когда приложение еще небольшое, мало взаимодействует с нативными функциями, проблем не возникает. Но по мере роста приложения могут появиться дополнительные процессы, которые необходимо выполнять при каждой сборке. Не всегда проходит все гладко, вам могут понадобиться дополнительные часы на исправление неведомых ошибок. В моем опыте был забавный случай – из всей команды проекта сборку приложения мог сделать только один разработчик и только на своем компьютере. Настолько был сложный, полон особенностей и нюансов процесс.

Что я хотел бы сказать в конце. Ionic – прекрасный инструмент. Но каждый инструмент эффективен, когда его используют по назначению. Чем масштабнее и сложнее ваше приложение, чем больше оно зависит от нативных возможностей устройства – тем меньше смотрите в сторону Ionic.

Пишите комментарии, буду рад любой обратной связи. Успехов в разработке мобильных приложений!

Комментарии (3)


  1. Pastoral
    16.09.2022 09:40

    Писать мобильное приложение на Ionic - это значит Capacitor который просто не упомянут по имени?


  1. astec
    16.09.2022 10:17

    Статья неплохая но выводы немного не логичные.

    Каким боком Ионик к тому что iOS не даёт сканить сеть? Та же проблема будет и в нативном приложении, так ведь?

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


  1. jaiprakash
    17.09.2022 14:03

    В чём разница с Cordova?