С 2022 года российские пользователи крупных сторов больше не могут покупать приложения и игры, оплачивать подписки и совершать покупки других цифровых товаров. Вместе с тем разработчики приложений лишились нативных возможностей монетизации разработок. Уже тогда стало понятно, что есть риск отключения и других функций — push-уведомлений, механизмов оценки приложений и публикации отзывов. Для мобильных разработчиков важно иметь доступ к ним для уведомления пользователей о новых версиях приложения, повышения его рейтинга на витринах, получения обратной связи от пользователей для улучшения качества продукта. Для поддержки отечественных команд мы начали разработку собственных методов для оплаты внутри приложений, публикуемых на витрине. Это должно было помочь разработчикам и дальше поддерживать и развивать уже существующие проекты. Так появилась команда, которая стала работать над SDK. Уже сегодня для использования доступны RuStore SDK для платежей и обновления приложений, подключения отзывов и оценок, использования картографических сервисов. По факту мы предложили привычные инструменты для Andriod-разработчиков, но в отечественное обёртке. Процесс разработки начинается с постановки цели. Мы искали те функции, которые важны для разработчиков и пользователей магазинов приложений. Составили бэклог, позвали аналитиков, которые исследовали и описали, как те или иные механики работают у крупных конкурентов, — это позволило понять, как работают лучшие практики и какие решения привычны для отрасли. Предложение рынку унифицированных сервисов должно было помочь разработчикам мобильных приложений быстрее внедрять решения команды RuStore. Составив список первоочередных сервисов для разработки, мы решили посмотреть уже готовые решения на рынке. Не хотелось изобретать велосипед и тратить время на то, что уже работало у остальных. Иногда лучше договориться о сотрудничестве на общее благо для рынка российской разработки, чем конкурировать. Например, модуль для оплаты в мобильных приложениях уже был у «Сбера» — SmartPay мы используем до сих пор. Решение удобно тем, что есть интеграция с ФНС и автоматическая отправка данных в налоговую для формирования фискальных чеков. Плюс клиентам банка не нужно вводить платёжные данные, что хорошо влияет на конверсию. Проект «VK Карты» позволяет внедрять картографические сервисы. В нём уже есть функции поиска места и объектов, определения часовых поясов, почтового индекса или местоположения пользователя. Вместе с архитекторами и службой информационной безопасности каждый SDK проектировался в несколько итераций. Это позволяло создать грамотную схему работы модулей, чтобы даже при возрастании нагрузки не происходило сбоев, а используемые методы и функции были безопасны для конечных пользователей. Только после этого в игру вступали разработчики. Разработка создавала не только SDK, но и sample-приложения для тестирования. Тандем передавался дальше QA-специалистам для выявления багов, узких мест и потенциальных рисков. В это же время аналитики готовили техническую документацию и передавали её технической редакции, чтобы разработчики мобильных приложений получали максимально полное и понятное представление о том, как быстро интегрировать SDK. И только когда все этапы пройдены, наступало время релиза. После выпуска SDK на внешнюю аудиторию мы изучаем отзывы разработчиков, исправляем возможные ошибки, собираем бэклог для улучшений. Далее делаем адаптив для Unity и Flutter, чтобы охватить максимальную аудиторию. Для оценки качества релиза используем несколько метрик: сколько времени нужно, чтобы интегрировать SDK в приложение; количество обращений, которые отправляют разработчики после интеграции, — это могут быть баги, предложения или просто отзывы; процент приложений из RuStore, которые уже используют SDK. Одна из основных сложностей при разработке SDK — это тестирование. Как выглядит разработка в большинстве случаев? Команда разрабатывает приложение и передаёт его на тестирование. В случае с SDK нужно передать в QA-отдел не только функциональный код, но и оболочку для тестирования предлагаемых функций. То есть каждый раз приходится готовить sample-приложение. А теперь учитываем, что существует множество языков и платформ для мобильной разработки. Kotlin, Java, Unity, Unreal Engine, Flutter — это только первое, что приходит на ум. Чтобы учитывать особенности ЯП, приходится формировать отдельные команды разработчиков и тестировщиков. Например, часть языков и платформ поддерживают activity, а у других его нет. А ещё нужно учитывать обновления языков и платформ, так как некоторые процедуры, функции или опции могут перестать работать или замещаются новыми решениями. Мы изначально решили, что будем поддерживать все версии SDK, пока это будет экономически целесообразно или пока Google не изменит требования к Android-разработчикам. Так, например, мы перестали поддерживать SDK billing v 0.1.4. Если нужно что-то исправить или добавить в функциональности, создаются отдельные методы. Мы учитываем, что в приложениях, которые используют RuStore SDK, могут быть встроены устаревшие механики и было бы нечестно по отношению к разработчикам отключать часть функций. Мы стараемся сделать RuStore SDK максимально понятными и простыми для интеграции. Для этого пишем полную документацию и адаптируем её под популярные языки мобильной разработки. Например, когда мы подготовили SDK для оплаты внутри приложений на Kotlin, то нас просили сделать документацию ещё и на Java. Казалось бы, что языки похожи, но команде RuStore важно было дать инструмент для монетизации максимальному количеству мобильных разработчиков. Каждый релиз SDK сопровождается ритуалом — мы даём документацию начинающему разработчику и просим установить SDK в приложение. Обычно хватает 1–2 дней, чтобы все интеграции были завершены. Если не получилось уложиться в этот срок, то мы переделываем документацию или код. Когда мы сделали SDK оплаты в приложениях, то решили отдать его с документацией для интеграции начинающему Android-разработчику. Он сумел за день встроить оплаты в приложение. Мы порадовались: «Отличный результат! ОК, будем теперь ему следовать». Но потом мы решили продолжить эксперимент и отдали SDK опытному разработчику из крупной компании. Думали, что у него задача займёт пару часов. Если коротко, то он сделал интеграцию за два месяца. Когда у тебя большая компания — тратится больше времени на согласования. Обязательно готовим example для размещения в git'е. В них можно посмотреть, как можно интегрировать код, на примере тестового приложения. Дополнительно показываем визуальные схемы работы интеграции, которые позволяют понять, как правильно интегрировать SDK. В будущем планируем ещё создавать и выкладывать видео процесса интеграции. Активно общаемся с сообществом мобильной разработки по интеграции SDK. С нами можно связаться через техническую поддержку RuStore. Для взаимодействия с крупными паблишерами заводим отдельные чатики, чтобы напрямую решать вопросы. На второй-третий кварталы 2023 года у нас уже масштабные планы. Во-первых, мы запустили крупное исследование по всем SDK, которые используются в мире. Это позволит нам понять, какие ещё инструменты нужны разработчикам. Во-вторых, у нас появятся адаптации SDK для Unreal Engine и React Native. Сейчас мы уже поддерживает Unity и Flutter. В-третьих, внедрим песочницу для тестирования способов оплаты. Сейчас механика выглядит не слишком элегантно — после внедрения SDK для оплаты нужно опубликовать приложение с помощью «RuStore Консоли», дождаться прохождения модерации и загрузить его на устройство для тестирования. В-четвёртых, начнём собирать на сайте для разработчиков RuStore список SDK, которые поддерживаются в магазине приложений. В комментариях готовы ответить на вопросы и почитать, под какие языки программирования стоит адаптировать RuStore SDK и каких сервисов не хватает мобильным разработчикам 😉