Swift: для чего нужен, плюсы и минусы, какие задачи решаем

На примере приложения VPN-клиента

Swift: для чего нужен, плюсы и минусы, какие задачи решаем

Коротко

  • 01
    Что за инструмент

    Swift — собственный язык программирования от Apple

  • 02
    Где используем

    VPN-клиент

  • 03
    Почему выбрали

    У заказчика уже было приложение на Swift для iOS. Его надо было починить и адаптировать для других платформ.

    Swift — нативный язык для устройств Apple, у него есть прямой доступ к системным функциям и «железу».

  • 04
    Результаты

    6 платформ, на которых работает приложение

    250 тысяч установок суммарно

    За 6 месяцев опубликовали обновленную версию на Свифте

Об инструменте: язык программирования Swift

Swift, или Свифт, — язык программирования, на котором можно разрабатывать приложения для всех платформ Apple. Swift позволяет создавать программы не только для iOS и macOS, но и для tvOS и watchOS.

Свифт совместим с языком программирования Objective-C, преемником которого он является. То есть на Свифт можно начинать разработку с нуля и добавлять новые опции в существующие приложения, написанные на Objective-C.

Еще одно преимущество Swift — язык сравнительно простой. Для создания Свифта разработчики Apple заимствовали идеи из разных языков программирования, ориентируясь на простоту написания, чтения и поддержки кода. В результате, обучение программированию на Свифте не занимает много времени. Использование этого языка в разработке позволяет писать приложения с понятным кодом и минимумом ошибок.

Важно, что при создании языка Свифт специалисты Apple уделили много внимания безопасности, а не только простоте программирования. Swift по умолчанию проверяет переменные, массивы и числа и управляет памятью. Эти функции языка также позволяют избежать многих ошибок при программировании и создать надежное приложение для любой платформы от Apple.

Для программирования на Свифте используется среда разработки Xcode. Она тоже разработана Apple и позволяет создавать ПО для платформ macOS, iOS, iPadOS, watchOS, tvOS и visionOS. Поэтому для программирования приложений на iOS Swift — оптимальный язык. Мы продолжили разработку приложения клиента на нем.

О проекте: приложение для VPN

Заказчик — канадская платформа с развлекательным контентом, которой пользуются люди со всего мира. Пользователи некоторых стран не могут зайти на платформу из-за блокировок. Заказчик решил обойти проблему — открыть доступ к контенту и защитить персональные данные пользователей. Для этого он хотел сделать платное приложение с VPN

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

Команде OrbitSoft предстояло:

  1. Исправить ошибки созданного для iOS приложения.
  2. Адаптировать его под разные устройства и ОС.
  3. Починить механизм платной подписки.

Задача осложнялась тем, что приложение для устройств на iOS уже было опубликовано в App Store: пока мы работаем над новой версией, старая должна работать и принимать оплату.

Какие задачи решили с помощью Swift

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

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

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

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

Теперь логика приложения понятна пользователям, данные об оплате всегда сохраняются, а компания не теряет клиентов.

Стартовые экраны: выбор тарифа, затем регистрация аккаунта

Адаптировали приложение под разные устройства и операционные системы. Мы переписали код приложения на Kotlin для Android и Android TV, на C# — для Windows. Код на Swift почистили от ошибок, заново адаптировали под планшеты. Версию под Mac собирались сделать с помощью Mac Catalyst. Эта технология автоматически переносит на Mac приложения для iOS. Но возникла проблема.

Apple сохраняет пароли в защищенном хранилище Keychain, а доставать их из приложений для iOS через Catalyst не получается. В результате, когда пользователь выбирает сервер VPN, программа вместо подключения требует пароль. Мы искали решение проблемы в сообществе разработчиков. Нашли несколько веток обсуждений на Stack Overflow, но и там ответов не было.

Скриншот ответа техподдержки Apple

Когда появится решение — неизвестно. Мы решили не ждать, и переписали код на Свифте вручную. Так мы потратили больше ресурсов, но опубликовали версию под Mac без ошибок.

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

Мы починили механизм и настроили автоподписку. Теперь приложение продлевает тариф самостоятельно — пользователю не нужно каждый раз вводить платежные данные, а компания может рассчитывать на ежемесячный доход.

Не обошлось и без сложностей. У Apple неудобно организовано тестирование подписки: нужно заводить отдельный аккаунт, на котором тестируемое событие может наступить только 6 раз. Чтобы продолжить, нужен еще один тестовый Apple ID, потом еще и еще — нам в итоге понадобилось около пятидесяти. В официальной документации об этом не упоминается, но мы разобрались и успешно протестировали приложение.

Результаты

  • Первоначальное приложение размещено в App Store в августе 2020. Исправленную версию мы выкатили всего через полгода — в январе 2021. Со всеми доработками и улучшениями проект занял около 10 месяцев.
  • Приложение устанавливается на 6 платформ: iOS, MacOS, Android, Android TV, Fire OS, Windows.
  • Суммарно его установили более 250 000 раз.

Совет OrbitSoft: когда пригодится Swift

Для каких задач Свифт подходит:

  • программирование нагруженных приложений, использующих анимацию, 3D-графику, мультимедиа в высоком качестве. Например, мобильных игр;
  • разработка приложений, которым нужен доступ к специфическим функциям операционной системы или устройства. Например, к камере, Bluetooth, Face или Touch ID, Apple ID;
  • если нужно привлечь более платежеспособную аудиторию. Sensor Tower подсчитал, что в первом полугодии 2020 года пользователи iOS по всему миру потратили 32 миллиарда долларов в приложениях, а пользователи Android — почти в 2 раза меньше.

Для каких проектов стоит выбрать другой инструмент:

  • несложные, малонагруженные приложения быстрее и дешевле писать на кроссплатформенных языках, чем на Свифте;
  • если интересует широкая аудитория, стоит начать с публикации в Google Play. Согласно Sensor Tower, в первой половине 2020 года из него впервые установили 53 миллиарда приложений, из App Store — почти в 3 раза меньше. При этом для Android приложения на Swift не подойдут, они совместимы только с устройствами Apple.

В чем бы вы ни нуждались, мы можем помочь!

Расскажите нам, с какими проблемами вы сталкиваетесь в своем бизнесе. Мы с нетерпением ждем вашего ответа.

Получите ответ по смс

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