Коротко
-
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 предстояло:
- Исправить ошибки созданного для iOS приложения.
- Адаптировать его под разные устройства и ОС.
- Починить механизм платной подписки.
Задача осложнялась тем, что приложение для устройств на 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, но и там ответов не было.
Когда появится решение — неизвестно. Мы решили не ждать, и переписали код на Свифте вручную. Так мы потратили больше ресурсов, но опубликовали версию под 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.
Telegram
WhatsApp
+7 499 321-59-32
contact@orbitsoft.com