Перейти до вмісту

Посібник · 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 toolchain. Заплануйте півдня, більшість часу піде на покупки.

Крок 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Вам потрібне готове поле коду для ComposeInfluToReferralCodeInput (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 активності: він виконується знову після кожної зміни конфігурації. Не в корутині? Кожен мережевий метод має перевантаження з callback. Callback виконуються у фоновому потоці, тож перед роботою з 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. 1

    Увімкніть API. У Google Cloud увімкніть Google Play Android Developer API і створіть сервісний обліковий запис із ключем JSON.

  2. 2

    Надайте доступ у Play Console. У розділі «Користувачі та дозволи» запросіть адресу сервісного облікового запису й надайте йому для цього застосунку дозвіл «Переглядати фінансові дані, замовлення та відповіді на опитування про скасування».

  3. 3

    Завантажте, перевірте, перемкніть. Завантажте ключ JSON у «Налаштування → Перевірка» й натисніть «Зберегти й перевірити». Коли перевірка пройде, виберіть для Android варіант «Google — напряму».

Нові дозволи Google можуть дійти до API до 48 годин. Тим часом InfluTo показує «поширюється». Доки ви не перемкнете режим, звіти про покупки отримують помилку 400, тож SDK можна випускати першим.

Крок 6: перевірте з тестувальником ліцензій

Тестові покупки не рухають гроші й не змінюють вашу статистику:

  1. 1

    Імітуйте покупку. Кнопка «Імітувати покупку» в розділі «Налаштування й SDK» проганяє тестову sandbox-покупку через справжній конвеєр InfluTo. Введіть один зі своїх кодів, щоб побачити, як він спрацює.

  2. 2

    Встановіть за реферальним посиланням. Приєднайтеся до своєї кампанії з другого облікового запису автора, відкрийте його посилання на тестовому пристрої, встановіть тестову збірку й запустіть її. Найнадійніше перевірити введення коду вручну.

  3. 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 кожну покупку, продовження й повернення коштів.

Чи підтримує він витратні й одноразові покупки?

Так. Перелічіть їхні ідентифікатори продуктів у oneTimeProductIds, щоб зафіксовані покупки перевірялися як одноразові. Якщо ваш код білінгу не віддає ціну, передавайте її разом із валютою. Повернення коштів за одноразові покупки в Google Play виявляються, а комісія скасовується.

Скільки це коштує?

$0 на місяць. За кожну підтверджену покупку ви платите встановлену вами комісію плюс 10% від того самого доходу (7%, 5% або 3% за великих обсягів). Передоплачений гаманець починається від $50 і підлягає поверненню. InfluTo щомісяця виплачує авторам через Stripe Connect у 33 країнах, щойно вони заробили $20.

Додайте реферальні коди в наступний реліз.

Один рядок Gradle, один шлях перевірки, депозит із поверненням. $0 на місяць; 10% лише з доходу, який приносять автори.

Почати безкоштовно