Проекты

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.

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

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

Перезвонить вам, чтобы ответить на вопросы?

Когда с вами связаться?

Связаться по телефону:+7 499 321-59-32

Нажимая на кнопку, я принимаю условия политики и пользовательского соглашения

Фото эксперта
Дмитрий

Проектный менеджер

Получите ответ на ваш вопрос в любимом мессенджере

Выберите удобный мессенджер и начните диалог прямо сейчас

Telegram WhatsApp

Рассчитать стоимость проекта

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

Напишите ваше имя
Укажите ваш email

Выберите удобный для вас способ связи

Мы сразу получим ваш запрос и поможем в решении проблемы

Написать в Telegram

Написать в WhatsApp

Позвонить нам