VK Android SDK 2.0
На митапе VK Tech Talks | Android с докладом о новой SDK выступил Android-разработчик ВКонтакте и автор приложения «Где шаверма» Арсений Васильев. Он подробно рассказал о причинах перехода на новую версию Android SDK, её плюсах и минусах.
Что это такое?
VK Android SDK — это библиотека функций, которые ВКонтакте предоставляет разработчикам для интеграции в приложение с последующим использованием.
Первая версия SDK была написана пять лет назад. За это время накопилось много различных проблем, которые мешали работе, поэтому появилась потребность в новой версии.
Что было в SDK 1.0?
- Авторизация: Intent (позволяет пользователям координировать функции различных действий для достижения цели) или WebView (позволяет встраивать веб-страницы в приложения).
- UI: капча, шаринг, авторизация.
- Реализация почти всех методов и моделей из VK API.
Проблемы SDK 1.0:
- Сложная поддержка. Все разработчики были заняты клиентом VK для Android и постоянно что-то исправлять под новые функции было очень сложно.
- Встраивание в существующую архитектуру осложнялось старым подходом SDK.
- Создание сложных запросов вызывало определённые проблемы.
- Расширение функциональности требовало написания большого количества лишнего кода.
Тем временем в VK App:
- Отсутствие ядра приложения. VK App — многомодульное приложение без единого центра. Нам хотелось, чтобы всё было в одном месте.
- Дуализм API запросов. В одном клиенте было две абсолютно независящие друг от друга реализации работы с сетевым слоем. Мы хотели их объединить.
Какие требования были к SDK 2.0?
- SDK — часть нашего основного проекта.
- SDK не навязывает свою архитектуру.
- SDK не содержит лишнего.
- SDK легко расширяем для своих задач.
- Удобная обработка ошибок.
- HttpURLConnection → OKHTTP.
- Java → Kotlin.
Как работает SDK 2.0?
На уровне пользователя. Допустим, у нас есть приложение, которое помогает найти самую вкусную шаверму поблизости. Нам необходимо создать приглашение для друзей. В таком случае мы делаем запрос на Friends.Get для получения списка всех друзей пользователя.
В class FriendsCommand мы описываем свой запрос, а внутри FriendsCommand создаём методы call и parser.
Для чего они нужны?
Call нужен для запроса данных (название метода, аргументы).
Parser разбирает данные, представленные в виде строки.
VKApiManager
VKApiManager нужен для отправки запроса в сеть и его последующей обработки. Вот как это работает:
- передаём туда конфиг с нужными настройками (токен, идентификатор приложения ВКонтакте);
2. получаем данные запроса;
3. делаем запрос;
4. обрабатываем запрос;
5. парсим данные, отдаём результат.
Как выглядит обработка в VKApiManager?
- Request — делаем запрос.
- Retry — обрабатываем запрос.
- Server error — обрабатываем серверные ошибки.
- Too many requests — превысили лимиты запросов.
- Validation — приходит капча или подтверждение пользователя.
Таким образом получилась многослойная обработка. Выглядит это просто: одно звено цепи — абстрактный класс с методом.
Как выглядит VKApiManager в коде?
На входе в конструктор передаём конфиг и методом execute реализуем MethodCall, в котором есть данные запроса и парсер.
Далее оборачиваем в первое звено и каждое последующее обработчиком, а в конце всё это вызываем. Именно так это устроено.
Итоги
- ApiCommand — интерфейс описания запроса.
- Реализации создают классы с данными запроса и парсером.
- VKApiManager создаёт цепочку обработчиков запроса и запускает его.
Как пользоваться?
Для простых кейсов используется VKRequests. Нужно передать в конструкторе название метода, указать аргументы, а далее метод parse, в котором есть JSONObject. Вы его парсите как нужно.
Как запустить запрос?
Самый быстрый способ — использование метода execute. Он всё сделает на background-потоке. Другой способ — спинхронный метод, который состоит из одной строчки.
Как происходит авторизация?
- Указываем APP ID. Это идентификатор приложения.
2. Запрашиваем логин с нужными разрешениями.
3. Получаем токен.
Итоги VK SDK 2.0
Плюсы:
- поддержка;
- легко расширить;
- не тащит лишнего.
Минусы:
- стал выше порог входа. Для простых задач нужно разбираться, но при этом для сложных задач стало намного проще.
- Нет обратной совместимости.
Полная запись выступления в видео:
The Brown Room — независимое интернет-издание про социальные сети и современные технологии.
Автор: Артём Грачок
Корректоры: Влад Воробьёв, Лена NL, Арсений Метелёв
Изображения: Арсений Васильев / VK Tech
