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 для получения списка всех друзей пользователя.

VK Android SDK 2.0, image #1

В class FriendsCommand мы описываем свой запрос, а внутри FriendsCommand создаём методы call и parser.

Для чего они нужны?

Call нужен для запроса данных (название метода, аргументы).

VK Android SDK 2.0, image #2

Parser разбирает данные, представленные в виде строки.

VK Android SDK 2.0, image #3

VKApiManager

VKApiManager нужен для отправки запроса в сеть и его последующей обработки. Вот как это работает:

  1. передаём туда конфиг с нужными настройками (токен, идентификатор приложения ВКонтакте);

2. получаем данные запроса;

3. делаем запрос;

4. обрабатываем запрос;

5. парсим данные, отдаём результат.

Как выглядит обработка в VKApiManager?

VK Android SDK 2.0, image #4
  • Request — делаем запрос.
  • Retry — обрабатываем запрос.
  • Server error — обрабатываем серверные ошибки.
  • Too many requests — превысили лимиты запросов.
  • Validation — приходит капча или подтверждение пользователя.

Таким образом получилась многослойная обработка. Выглядит это просто: одно звено цепи — абстрактный класс с методом.

Как выглядит VKApiManager в коде?

VK Android SDK 2.0, image #5

На входе в конструктор передаём конфиг и методом execute реализуем MethodCall, в котором есть данные запроса и парсер.

Далее оборачиваем в первое звено и каждое последующее обработчиком, а в конце всё это вызываем. Именно так это устроено.

Итоги

  • ApiCommand — интерфейс описания запроса.
  • Реализации создают классы с данными запроса и парсером.
  • VKApiManager создаёт цепочку обработчиков запроса и запускает его.

Как пользоваться?

Для простых кейсов используется VKRequests. Нужно передать в конструкторе название метода, указать аргументы, а далее метод parse, в котором есть JSONObject. Вы его парсите как нужно.

Как запустить запрос?

Самый быстрый способ — использование метода execute. Он всё сделает на background-потоке. Другой способ — спинхронный метод, который состоит из одной строчки.

Как происходит авторизация?

  1. Указываем APP ID. Это идентификатор приложения.
VK Android SDK 2.0, image #6

2. Запрашиваем логин с нужными разрешениями.

VK Android SDK 2.0, image #7

3. Получаем токен.

VK Android SDK 2.0, image #8

Итоги VK SDK 2.0

Плюсы:

  • поддержка;
  • легко расширить;
  • не тащит лишнего.

Минусы:

  • стал выше порог входа. Для простых задач нужно разбираться, но при этом для сложных задач стало намного проще.
  • Нет обратной совместимости.

Полная запись выступления в видео:

VK Android SDK 2.0, image #9

The Brown Room — независимое интернет-издание про социальные сети и современные технологии.

Автор: Артём Грачок
Корректоры: Влад Воробьёв, Лена NL, Арсений Метелёв
Изображения: Арсений Васильев / VK Tech

372 views·4 shares