Руководство · Android (Kotlin)
Добавьте партнёрскую или реферальную программу в своё Android-приложение.
InfluTo Android SDK написан для Kotlin и корутин. Он показывает, какой автор привёл установку, принимает реферальные коды, которые вводит пользователь, и проверяет каждую покупку — через RevenueCat или напрямую из Google Play Billing.
Обновлено 1 ноября 2026 г.
Коротко
Подключите to.influ:android-sdk из Maven Central, один раз вызовите InfluTo.initialize в Application.onCreate (это suspend-функция), затем checkAttribution и identifyUser. С RevenueCat в коде больше ничего подключать не нужно: SDK сам находит RevenueCat и помечает подписчика. Без RevenueCat добавьте to.influ:android-sdk-billing: он подтягивает Play Billing Library 9.0.0, сам фиксирует покупки и принимает покупки из вашего PurchasesUpdatedListener. Нужны minSdk 24 и Java 17. Закладывайте один вечер, большая часть уйдёт на покупки.
Шаг 1: добавьте нужные артефакты
SDK разделён на три артефакта в Maven Central, все одной версии, поэтому в репозиториях должен быть mavenCentral(). Добавляйте только нужное: каждое дополнение тянет за собой основной модуль, а основной и billing-артефакты поставляются со своими правилами R8/ProGuard.
// build.gradle.kts
dependencies {
implementation("to.influ:android-sdk:1.1.1")
// optional: Compose code field (InfluToReferralCodeInput)
implementation("to.influ:android-sdk-ui:1.1.1")
// optional: store-direct purchase auto-capture
implementation("to.influ:android-sdk-billing:1.1.1")
}| Артефакт | Когда добавлять | Что даёт |
|---|---|---|
| android-sdk | Всегда | Сам SDK; добавляет разрешение INTERNET |
| android-sdk-ui | Нужно готовое поле для кода на Compose | InfluToReferralCodeInput (Material 3) |
| android-sdk-billing | Приложение работает напрямую с магазином (без RevenueCat) | Автоматический учёт покупок; добавляет Google Play Billing Library 9.0.0 (billing-ktx) и разрешение com.android.vending.BILLING |
Шаг 2: инициализация в Application.onCreate
initialize — suspend-функция. Вызовите её один раз при запуске и дождитесь результата: пока она не завершится успешно, checkAttribution и reportPurchase выбрасывают InfluToError.NotInitialized. При сбое (неверный ключ, нет сети) она выбрасывает исключение: перехватите его, запишите в лог и продолжайте работу.
Используйте Application.onCreate или область видимости на уровне приложения, а не onCreate активности: он срабатывает заново при каждой смене конфигурации. Не в корутине? У каждого сетевого метода есть вариант с колбэком. Колбэки выполняются в фоновом потоке, поэтому перед работой с UI переключитесь на главный поток.
API-ключ (it_…, в разделе Setup & SDK) подходит и для разработки, и для продакшена. Храните его в поле BuildConfig, которое заполняется из свойства Gradle в local.properties или из секретов CI. Типичный запуск в приложении с RevenueCat:
class MyApp : Application() {
private val appScope = MainScope()
override fun onCreate() {
super.onCreate()
// RevenueCat apps: configure it first
Purchases.configure(PurchasesConfiguration.Builder(this, "goog_…").build())
appScope.launch {
try {
InfluTo.initialize(this@MyApp, InfluToConfig(
apiKey = BuildConfig.INFLUTO_API_KEY,
appVersion = BuildConfig.VERSION_NAME,
))
} catch (e: Exception) {
Log.w("InfluTo", "initialize failed", e) // retried on the next launch
return@launch
}
val attribution = InfluTo.checkAttribution()
InfluTo.identifyUser(Purchases.sharedInstance.appUserID)
}
}
}Шаг 3: реферальные коды и поле на Compose
applyCode(code) — suspend-вызов: он проверяет код и применяет его, если код действителен. У кодов обрезаются пробелы и все буквы становятся заглавными. Недействительный код возвращает valid = false и errorCode: INVALID_FORMAT, CODE_NOT_FOUND, CODE_EXPIRED, NETWORK_ERROR или UNKNOWN.
С android-sdk-ui InfluToReferralCodeInput — это composable на Material 3: он проверяет код по мере ввода, применяет его по нажатию, подставляет код при установке по ссылке и принимает ваши переведённые тексты. Имя автора он показывает, только если включить showReferrerName.
Шаг 4: подключите покупки
InfluTo платит комиссию только за покупки, подтверждённые магазином. Выберите один путь для Android:
RevenueCat: в коде подключать нечего. Когда находится реферал или применяется код, SDK находит RevenueCat SDK и задаёт influto_code и influto_referral; чтобы указать это явно, передайте revenueCatAttributeSetter. Сначала настройте RevenueCat и не добавляйте android-sdk-billing.
Напрямую с магазином (Play Billing): добавьте android-sdk-billing. В таком приложении initialize запускает наблюдатель со своим соединением Play Billing: он сообщает о новых покупках и при каждом запуске проверяет уже существующие. Отправляются только покупки со статусом PURCHASED, каждая один раз, по purchase token.
Для разовых и расходуемых продуктов нужны productId, а также price и currency: без productId покупка проверяется как подписка и не проходит, а без price записывается как 0 $. Перечислите такие продукты в oneTimeProductIds, и автоматический учёт добавит оба поля. Ответ 409 означает, что разовая покупка ещё не завершена.
В большинстве приложений есть свой BillingClient. Передавайте каждую покупку модулю и из своего PurchasesUpdatedListener, чтобы она ушла в момент совершения. Дедупликация общая, поэтому ничего не отправится дважды:
override fun onPurchasesUpdated(result: BillingResult, purchases: MutableList<Purchase>?) {
if (result.responseCode != BillingClient.BillingResponseCode.OK || purchases == null) return
scope.launch {
for (purchase in purchases) {
InfluToBilling.report(context, purchase) // subscriptions
// one-time products: InfluToBilling.report(context, purchase, oneTime = true, price = 4.99, currency = "EUR")
}
}
}Шаг 5: добавьте сервисный аккаунт Google Play
Для прямой работы с магазином нужен доступ на чтение к Google Play Developer API. InfluTo только читает данные и ничего не меняет в вашей Play Console.
- 1
Включите API. В Google Cloud включите Google Play Android Developer API и создайте сервисный аккаунт с ключом в формате JSON.
- 2
Выдайте доступ в Play Console. В разделе «Пользователи и разрешения» пригласите email сервисного аккаунта и выдайте ему для приложения право «Просмотр финансовой информации, заказов и ответов на опросы об отмене подписки».
- 3
Загрузите, проверьте, переключите. Загрузите JSON-ключ в разделе «Настройки → Проверка» и нажмите «Сохранить и проверить». Когда проверка станет зелёной, выберите для Android вариант «Google — напрямую».
Новые разрешения Google могут доходить до API до 48 часов, и всё это время InfluTo показывает статус «применяется». Пока вы не переключились, отчёты о покупках получают ответ 400, так что SDK можно безопасно выпустить раньше.
Шаг 6: проверьте на тестировщике лицензий
Тестовые покупки не перемещают деньги и не влияют на вашу статистику:
- 1
Имитируйте покупку. Кнопка «Имитировать покупку» в разделе «Настройка и SDK» отправляет тестовую sandbox-покупку через настоящий конвейер InfluTo. Введите один из своих кодов и посмотрите, как он сработает.
- 2
Установите приложение по реферальной ссылке. Присоединитесь к своей кампании со второго аккаунта автора, откройте его ссылку на тестовом устройстве, установите тестовую сборку и запустите её. Ввод кода вручную — самый надёжный способ проверки.
- 3
Купите как тестировщик лицензий. Совершите покупку в Google Play как тестировщик лицензий. В журнале интеграции, переключённом на Sandbox, будет видно покупку, привязанную к вашему коду. При debug = true SDK пишет каждый шаг в Logcat с тегом InfluTo.
clearAttribution() сбрасывает состояние устройства для нового прогона. Чище всего начать заново, очистив данные приложения или переустановив его.
Особенности Android
Несколько деталей платформы:
Сначала корутины. Сетевые методы — это suspend-функции. getReferralCode(), getPrefilledCode() и clearAttribution() — обычные функции.
Разрешения. Ядро добавляет INTERNET, а android-sdk-billing добавляет com.android.vending.BILLING. В документации по конфиденциальности описано, что указать в форме Play «Безопасность данных».
Версия Play Billing. android-sdk-billing использует Play Billing Library 9.0.0. Gradle подбирает версию вместе с вашей собственной зависимостью Billing.
Без рекламного идентификатора. InfluTo не использует рекламный идентификатор, не отслеживает пользователей между приложениями и никогда не сопоставляет их по характеристикам устройства.
Или поручите это ИИ-агенту
Подключите MCP-сервер InfluTo к Claude Code, Codex или Cursor и попросите выполнить интеграцию. Агент напишет строки для Gradle и код запуска, даст ссылку, чтобы вы сами загрузили JSON сервисного аккаунта, проверит учётные данные и подтвердит тестовую покупку с атрибуцией.
Партнёрский SDK для Android: ответы на вопросы.
Есть ли партнёрский SDK для Android-приложений на Kotlin?
Да. Пакет to.influ:android-sdk в Maven Central (лицензия MIT, исходники на github.com/influto/influto-android) добавляет в нативные Android-приложения определение установок по рекомендации, реферальные коды и привязку покупок. Нужны minSdk 24 и Java 17, а ядро зависит только от kotlinx-coroutines.
Нужна ли мне Google Play Billing Library?
Только при прямой работе с магазином. android-sdk-billing добавляет Play Billing Library 9.0.0 (billing-ktx) и разрешение BILLING. Приложениям с RevenueCat хватает одного ядра SDK.
Работает ли это с RevenueCat на Android?
Да. SDK сам находит RevenueCat SDK и записывает influto_code и influto_referral в профиль подписчика. Либо вы явно передаёте revenueCatAttributeSetter. Дальше вебхук RevenueCat отправляет в InfluTo каждую покупку, продление и возврат.
Поддерживаются ли расходуемые и разовые покупки?
Да. Перечислите их ID продуктов в oneTimeProductIds, чтобы перехваченные покупки проверялись как разовые. Если ваш код биллинга не отдаёт цену, передавайте покупки вместе с ценой и валютой. Возвраты за разовые покупки в Google Play определяются, и комиссия отменяется.
Сколько это стоит?
0 $ в месяц. За каждую проверенную покупку вы платите установленную вами комиссию плюс 10% от той же выручки (7%, 5% или 3% при больших объёмах). Предоплаченный баланс начинается с 50 $ и возвращается. InfluTo выплачивает авторам ежемесячно через Stripe Connect в 33 странах, как только они заработают 20 $.
Добавьте реферальные коды в следующий релиз.
Одна строка Gradle, один путь проверки, возвращаемый депозит. 0 $ в месяц, а 10% — только с выручки, которую приводят авторы.
Начать бесплатно