VK Android SDK. Создаём нативные приложения
Арсений Васильев работает Android-разработчиком ВКонтакте. В лекции на VK Hackathon 2019 он рассказал о способах разработки мобильного приложения и вариантах использования VK Android SDK.
Самый известный продукт Арсения — приложение «Где Шаверма», которое помогает найти самую вкусную шаверму рядом с вами.
Это приложение Арсений сделал на хакатоне один за 48 часов. Позже он собрал команду, и спустя два месяца приложение появилось в Google Play и App Store.
Выбор технологии
Если вы тоже хотите создать своё приложение, как Арсений, то есть несколько способов. Рассмотрим самые популярные.
- VKUI — это набор React-компонентов, с помощью которых можно создавать интерфейсы, внешне неотличимые от iOS- и Android-приложений «ВКонтакте».
- React Native — фреймворк для разработки кросс-платформенных приложений.
- Flutter SDK — для мобильных приложений от компании Google, в новой версии на нём уже можно писать сайты и приложения на ОС Fuchsia.
- Qt — кросс-платформенный фреймворк для разработки программ на языке С++.
- Нативная разработка — обычная разработка приложений: Swift для iOS и Java, Kotlin для Android.
Сравним все варианты по отдельности и разберём плюсы и минусы каждого, а также узнаем, почему сюда включили VKUI.
VKUI
VKUI использует React-компоненты. Поэтому при запуске приложения VKUI откроется приложение в браузере, написанное на JavaScript.
Внутри VKUI содержится:
- React;
- готовые визуальные компоненты.
Готовые компоненты нужны для того, чтобы вы могли создавать приложения с единым интерфейсом «ВКонтакте».
Многие приложения на платформе VK Mini Apps используют VKUI, но не все. Например, нашумевшее приложение для майнинга VK Coin или приложение «Чекбэк».
Плюсы VKUI:
- Быстрая разработка.
- Доступ к аудитории.
- Тесная интеграция с «ВКонтакте».
VKUI — это не конструктор. Вам придётся писать код, но его написание заметно упростит вам жизнь. У вас уже будут готовые компоненты, которые вы будете просто использовать, а не писать с нуля. Например, вам в приложении понадобилась геолокация. Чтобы её получить, вы отправляете запрос нативному клиенту, и он вам её возвращает. Это заметно ускоряет разработку, особенно, если вы новичок. Использование VKUI отлично подходит для хакатонов, так как там мало времени для создания приложения.
Рассмотрим пример с созданием приложения через VKUI. После того, как вы напишете приложение, вы можете по ссылке пригласить своих друзей. Они в свою очередь смогут пригласить своих друзей и так далее. Никому из них не потребуется установка вашего приложения. В отличие от магазинов приложений Google Play и App Store, где сложно попасть в главный каталог, тут всё зависит от вашего приложения. Если оно хорошее и приятное, то попасть в главный каталог и найти аудиторию не составит труда.
Вам не нужно пилить дополнительные фичи, например сообщения. Вы просто можете перекинуть человека на диалоги. Вы находитесь внутри экосистемы и можете ею пользоваться в своих целях.
Недостатки VKUI:
- На VKUI не получится работать с камерой, пушами, получить доступ к файловой системе и фоновым задачам.
- Не выложить в Google Play и App Store.
WebView (браузер, встроенный в нативное приложение) не позволит вам сделать ничего из этого, так как у него нет доступа. Уведомления, например, можно реализовать через уведомления «ВКонтакте».
React Native
Это инструмент от Facebook, с помощью которого вы пишете свои приложения на JavaScript, используя готовые нативные компоненты. Преимущество инструмента в том, что код для платформ iOS и Android будет одинаковый, а выглядеть приложение будет по-разному в зависимости от платформы.
Плюсы React Native:
- один код для iOS и Android;
- React.
Как бы это ни звучало, но плюс React Native в том, что он использует концепцию React. React изначально создавался для web, а уже React Native — для мобильных приложений. Только с той же идеей и концепцией, которая очень простая для разработчиков.
Минусы React Native:
- всё равно полезете в натив;
- поддержка — боль;
- результат средний.
Если ваше приложение сложное, то вы всё равно полезете в натив платформы, будь то Android или iOS. React Native в начальных версиях был неудобен для разработчиков. Каждое новое обновление ломало проект, а обновления выходили часто. Сейчас, когда фреймворку уже несколько лет и он растёт не в таком быстром темпе, обновления выходят реже и с обратной совместимостью. Использование React Native выгодное, но не во всех сценариях. Приложение в любом случае будет уступать нативному приложению, однако скорость разработки будет в разы выше, особенно если вы знаете JavaScript. Если вам не важно время работы и производительность работы, «работает и ладно», именно для таких задач и подойдёт React Native.
Flutter
Особенность этого языка в том, что его разработкой занимается Google. Основной язык у него Dart, и он не сильно популярный. Flutter появился не так давно, и поэтому комьюнити слабое. Если вы захотите реализовать что-то сложное, то вам, скорее всего, придётся придумывать это самому, и никто не сможет вам помочь.
QT
Плюсы и минусы QT — это C++. Сама по себе разработка кросс-платформенных приложений не так проста, как кажется, а писать на С++ ещё сложнее. Писать интерфейсы средствами QT — не самое лучшее занятие. Быстрее будет, если вы напишете интерфейсы для iOS и Android отдельно. А вот кому подойдёт QT, так это разработчикам десктопного приложение. Оно будет в каком-то роде уникальным и написанном на плюсах, а не обернуто в браузер, и работать быстрее.
Нативные приложения
Представьте, у вас есть шаверма с хрустящим лавашом, идеальной структурой внутри, с помидорчиками и огурчиками, белым соусом, и может вам даже мясо на углях сделали. В общем, очень приятная и вкусная шаурма, которая приносит удовольствие. И у вас есть web-фалафель, который к тому же и кросс-платформенный.
Оба эти продукта выполнят свою задачу — накормят вас. Но первый вариант, согласитесь, принесёт вам в разы больше удовольствия, чем второй. Так же и с нативными приложениями.
Преимущества нативных приложений
Один из самых важных параметров в приложении — это скорость его работы и UX, то есть как происходит взаимодействие с контентом. Если ваше приложение очень удобное, в нём приятный скроллинг, элементы красиво и плавно выезжают, всё работает на свайпах, то это только лучше. Пользователю захочется лишний раз потыкать ваше хорошо работающее приложение.
Скорость можно рассмотреть с двух сторон: либо скорость вашей разработки, либо скорость работы приложения. Вы можете быстренько запилить приложение на VKUI, опередить всех и благодаря этому набрать свою аудиторию. Но потом, когда вы захотите выходить на новые рынки, вам придётся писать нативные приложения, и уже тогда в приоритете будет скорость работы вашего приложения.
VK Android SDK
Вы решили писать нативное приложение. Как вам может помочь SDK?
SDK — это библиотека, которая помогает вам разрабатывать, используя функции «ВКонтакте».
С помощью SDK вы можете, например, сделать авторизацию. Это удобно пользователю, потому что все авторизуются через социальные сети. Во-вторых, это удобно и вам, так как не нужно писать такие сценарии как «забыл пароль» и так далее.
Доступ к API
При подключении к SDK вам даётся доступ к API. Вы сможете использовать методы «ВКонтакте». Например, получить информацию о пользователе, о друзьях, опубликовать историю и так далее.
Шаринг
Шаринг необходим в вашем приложении, чтобы увеличить количество пользователей. Например, вы сделали приложение, которое с помощью нейронных сетей делает фотографии красивее, и вы реализовали шаринг. Пользователи смогут делиться получившимися фотографиями, и это повысит активность вашего приложения.
Копируйте пример, и вперёд!
В использовании SDK нет ничего сложного. Многие программисты гуглят какие-то вопросы по программированию и решают проблему тем, что копируют какой-то кусок кода из Stack Overflow. Так же и с SDK. Просто копируйте из примеров, где уже реализованы стандартные кейсы. Например, для получения информации о пользователе и так далее.
Подводим итоги
Подробнее познакомиться с VK Android SDK можно в официальном репозитории на GitHub.
Также Арсений выступал с докладом на тему «VK Android SDK 2.0». Там он более подробно рассказал о архитектурной составляющий SDK и почему была сделана вторая версия SDK. Читайте нашу расшифровку.
Полную запись выступления Арсения можно посмотреть ниже:
The Brown Room — независимое интернет-издание про социальные сети и современные технологии.
Автор: Владислав Сатонин
Редактор: Арсений Метелев
Фото на обложке: Герман Прокопьев / VK Hackathon
Фото со сцены: скриншоты из трансляции VK Hackathon
