Нативное или кроссплатформенное приложение — что выбрать?

26/8/2020
·
Обновлено
7.8.2026

Когда вы создаёте приложение для iOS, главный вопрос: «Разрабатывать нативное приложение на Swift или выбрать кроссплатформенное решение?». В этой статье вы узнаете, в чём разница между этими подходами, и какие у них плюсы и минусы.

Краткое описание кроссплатформенных решений

React Native

React Native — платформа, разработанная и поддерживаемая Facebook, используется для создания кроссплатформенных мобильных приложений на JavaScript. Благодаря этому разработчики могут использовать до 70% кода на разных платформах, например, Android и iOS.

Flutter

Flutter — молодая, но очень перспективная платформа, уже привлекшая внимание крупных компаний, запустивших на ней свои приложения. Flutter интересна простотой разработки, близкой к веб-разработке, и производительностью, сопоставимой с нативными приложениями. В качестве языка программирования используется Dart, который компилируется в машинный код. Благодаря этому скорость выполнения операций сравнима со скоростью Objective-C и Swift.

Xamarin

Xamarin — это фреймворк для создания мобильных приложений, работающих на разных платформах, с использованием языка C#. В 2016 году Microsoft приобрела Xamarin, открыла исходный код Xamarin SDK и включила его в состав IDE Microsoft Visual Studio.

Краткое описание нативных решений для iOS-разработки

Objective-C

Objective-C до недавнего времени был основным для разработки на iOS. Язык Objective-C является надмножеством языка Си, поэтому Си-код полностью понятен компилятору Objective-C. Таким образом, приложение, написанное на Objective-C, может быть очень быстрым. Также в Objective-C есть полноценное ООП (объектно-ориентированное программирование), что позволяет писать программы, которые будут легко масштабироваться в будущем, если понадобится расширить возможности приложения. Но этот язык уже довольно старый: Objective-C был создан в начале 1980-х в компании Stepstone. Однако, Apple – очень прогрессивная компания, поэтому, когда в 2014 она представила новый язык программирования – Swift – это не было неожиданностью.

Swift

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

Плюсы и минусы кроссплатформенных решений

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

Плюсы:

  • Простота. Можно выбрать в качестве основного языка программирования JavaScript, C# или Dart. Эти языки знают больше разработчиков, что сильно упростит работу над проектом.
  • Скорость и стоимость разработки. Достаточно одной команды, чтобы создать приложение, одинаково выглядящее на iOS и Android. Это большой плюс, если нужно быстро выйти на обе платформы.

Минусы:

  • Безопасность. Практически все кроссплатформенные решения имеют открытый исходный код, и любой злоумышленник (программист) может изучить его, найти уязвимости и взломать приложение. Ещё один важный момент — кроссплатформенное приложение обменивается данными с сервером через обычные HTTP-запросы, которые легко перехватить. Это позволяет злоумышленникам получить доступ к вашим данным и использовать их в своих целях (подробнее об этом можно прочитать здесь: https://www.cloudflare.com/learning/ssl/why-is-http-not-secure/).
  • Сложность работы с нативными функциями iOS. Разработчики языка Swift уже встроили в язык полезные модули для работы с аудио, видео, камерой, геолокацией и Bluetooth. При создании кроссплатформенного приложения использование этих функций усложняется. Например, чтобы добавить AR-объект на видео с камеры или показывать экран во время онлайн-звонка, приходится писать дополнительные модули с нуля. Из-за этого растёт время разработки и её стоимость по сравнению с нативной.
  • Скорость работы и отзывчивость интерфейса. Да, когда разрабатывается приложение, отображающее какие-то данные — например, интернет-магазин или новостная лента, — скорость кросс-платформенного приложения может быть такой же, как у нативного, но чаще она будет ниже. А если нужно добавить звонки, видеочаты или дополненную реальность, приложение станет ещё медленнее по сравнению с нативным. Пользователям не понравится, если во время звонка они не услышат половину сказанного собеседником или не смогут поймать любимых покемонов в дополненной реальности из-за медленного интерфейса.

Плюсы и минусы нативных решений

Согласно результатам исследования, приведённым в блоге https://armadsen.micro.blog/2019/02/16/how-many-apps.html, в выборке из 79 самых популярных неигровых приложений в App Store примерно 53% написаны на Swift, а 47% — нет. При этом стоит учитывать, что часть из этих 47% может использовать Objective-C, который тоже является нативным языком для iOS.

Также в исследовании с сайтa statista.com говорится, что ⅔ всех приложений - нативные (и Android, и iOS). Выясним, почему так.

Плюсы:

  • Учитывание всех особенностей определённой платформы. Конечно, удобно разрабатывать приложение сразу под две платформы, но каждая из них имеет свои особенности. Требования к безопасности, дизайну интерфейса и интеграции платёжных систем различаются.
    Например, системные элементы в iOS и Android совершенно разные (пример на картинке), а пользователь ожидает увидеть в интерфейсе привычные для своей платформы элементы.
Нативное или кроссплатформенное приложение?, image #1
  • Скорость работы и отзывчивость интерфейса. Приложения, написанные нативно, работают быстрее. Пользователю намного комфортнее пользоваться приложением, где анимации плавные, нажатия на кнопки обрабатываются мгновенно, а прокрутка экрана происходит без задержек и быстро подгружает контент. Это очень важно, потому что люди всё чаще используют приложения для оплаты покупок, записи к врачам и участия в деловых встречах. Никто не хочет, чтобы приложение зависло в момент оплаты или во время важных переговоров. Такие сбои могут заставить пользователя перейти к альтернативе.
  • Отсутствие препятствий для обновления приложений или расширения его функций. Платформы развиваются, добавляя новые возможности, и приложения должны их поддерживать. Обновление iOS может полностью сломать приложение. И пока разработчики кроссплатформенного фреймворка не выпустят новую версию, ваше приложение может перестать работать — и с этим ничего не поделаешь.
  • Доступ к собственным функциям и приватным API платформы. В отличие от кроссплатформенных, нативные приложения могут использовать собственные функции и приватные API платформы. Разработчики языка Swift уже встроили в язык полезные модули, с помощью которых можно работать с аудио, видео, камерой телефона, локацией и Bluetooth. А если нужно создать приложение для онлайн-конференций, дополненной реальности или передачи данных через Bluetooth — например, рекламный пуш при входе в зону действия Bluetooth-маячка или перевод средств в банковских приложениях — разработчикам не придётся создавать эти модули с нуля. Это сильно экономит время и деньги.
  • Безопасность. Исходный код операционной системы и нативных средств разработки для неё закрыт — к нему нет доступа. В отличие от кроссплатформенных решений, где исходный код открыт и доступен любому, здесь такой возможности нет.

Минусы:

  • Нужно создать два приложения, а не одно
  • Эти два приложения нужно поддерживать.

Заключение

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

Например, можно выбрать кроссплатформенные решения, если:

  • Вы ограничены в средствах и времени
  • Ваше приложение должно выглядеть одинаково на всех платформах, несмотря на их особенности
  • Ваше приложение не будет использовать специфичные функции платформы (работа с камерой телефона, сложные анимации, редактирование фото и видео, Bluetooth, онлайн-звонки)
  • Ваше приложение не требует повышенного уровня безопасности

Примеры: новостные приложения, приложения для заказа пиццы, записи в салон красоты, онлайн-магазины и так далее.

Но вам подойдут нативные средства, если приложение:

  • Будет поддерживаться долгое время
  • Будет использовать камеру телефона, сложные анимации, работать с Bluetooth или будет связано с видеозвонками, аудиозвонками или стримингом
  • Будет нуждаться в поддержке новых функций платформы после её обновления
  • Будет выглядеть по-разному на разных платформах
  • Будет соответствовать гайдлайнам платформы
  • Будет требовать повышенного внимания к безопасности
  • Будет нуждаться в высокой скорости работы и отзывчивом интерфейсе, независимо от новизны и мощности устройства

Примеры: e-learning, медицина, интернет-ТВ, видеочаты, видеонаблюдение, дополненная реальность.

  • Опыт клиентов