Przejdź do treści

Poradnik · Android (Kotlin)

Dodaj program partnerski lub program poleceń do swojej aplikacji na Android.

SDK InfluTo dla Androida jest napisane z myślą o Kotlinie i korutynach. Pokazuje, który twórca polecił instalację, przyjmuje wpisywane kody polecające i dba o weryfikację każdego zakupu — przez RevenueCat albo prosto z Google Play Billing.

Zaktualizowano: 1 listopada 2026

W skrócie

Dodaj to.influ:android-sdk z Maven Central, wywołaj InfluTo.initialize raz w Application.onCreate (to funkcja suspend), a potem checkAttribution i identifyUser. W aplikacji z RevenueCat nie trzeba już nic podłączać w kodzie: SDK samo wykrywa RevenueCat i oznacza subskrybenta. Bez RevenueCat dodaj to.influ:android-sdk-billing. Pakiet zawiera Play Billing Library 9.0.0, przechwytuje zakupy automatycznie i przyjmuje też każdy zakup z Twojego własnego PurchasesUpdatedListener. Wymagane: minSdk 24 i Java 17. Zaplanuj popołudnie, z czego najwięcej zajmie obsługa zakupów.

Krok 1: dodaj potrzebne artefakty

SDK jest podzielone na trzy artefakty w Maven Central, wszystkie w tej samej wersji, więc w repozytoriach musi być mavenCentral(). Dodaj tylko to, czego potrzebujesz: każdy dodatek zaciąga rdzeń, a rdzeń i artefakt billing mają własne reguły 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")
}
ArtefaktDodaj, gdyCo wnosi
android-sdkZawszeSDK; dodaje uprawnienie INTERNET
android-sdk-uiChcesz gotowe pole kodu w ComposeInfluToReferralCodeInput (Material 3)
android-sdk-billingAplikacja rozlicza zakupy bezpośrednio przez sklep (bez RevenueCat)Automatyczne przechwytywanie zakupów; dodaje Google Play Billing Library 9.0.0 (billing-ktx) i uprawnienie com.android.vending.BILLING

Krok 2: zainicjuj w Application.onCreate

initialize to funkcja suspend. Wywołaj ją raz przy starcie i poczekaj na wynik; dopóki się nie powiedzie, checkAttribution i reportPurchase zgłaszają InfluToError.NotInitialized. Gdy inicjalizacja się nie uda (zły klucz, brak sieci), funkcja rzuca wyjątek: przechwyć go, zapisz w logu i działaj dalej.

Użyj Application.onCreate lub zakresu obejmującego całą aplikację, a nie onCreate aktywności, które uruchamia się ponownie przy każdej zmianie konfiguracji. Nie jesteś w korutynie? Każda metoda sieciowa ma wariant z callbackiem; callbacki działają w wątku w tle, więc przed dotknięciem interfejsu przełącz się na wątek główny.

Klucz API (it_…, w sekcji Setup & SDK) działa zarówno w trakcie developmentu, jak i na produkcji. Trzymaj go w polu BuildConfig wypełnianym z właściwości Gradle w local.properties lub z sekretów CI. Typowy start w aplikacji z 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)
        }
    }
}

Krok 3: kody polecające i pole w Compose

applyCode(code) to wywołanie suspend, które sprawdza kod i stosuje go, jeśli jest poprawny. Kody są przycinane z białych znaków i zamieniane na wielkie litery; niepoprawny zwraca valid = false wraz z errorCode: INVALID_FORMAT, CODE_NOT_FOUND, CODE_EXPIRED, NETWORK_ERROR lub UNKNOWN.

Z android-sdk-ui InfluToReferralCodeInput to komponent Material 3, który sprawdza kod w trakcie pisania, stosuje go po kliknięciu, wstępnie wypełnia przy instalacji z linku i przyjmuje Twoje przetłumaczone teksty. Nazwę twórcy pokazuje tylko wtedy, gdy włączysz showReferrerName.

Krok 4: podłącz zakupy

InfluTo wypłaca prowizję tylko od zakupów zweryfikowanych przez sklep. Wybierz jedną ścieżkę dla Androida:

  • RevenueCat: nic nie trzeba podłączać w kodzie. Gdy zostanie znalezione polecenie lub zastosowany kod, SDK samo wykrywa SDK RevenueCat i ustawia influto_code oraz influto_referral; przekaż revenueCatAttributeSetter, jeśli wolisz zrobić to jawnie. Najpierw skonfiguruj RevenueCat i nie dodawaj android-sdk-billing.

  • Bezpośrednio przez sklep (Play Billing): dodaj android-sdk-billing. W aplikacji rozliczanej bezpośrednio przez sklep initialize uruchamia obserwator z własnym połączeniem Play Billing. Zgłasza on nowe zakupy i przy każdym starcie sprawdza istniejące. Wysyłane są tylko zakupy w stanie PURCHASED, każdy raz, według tokenu zakupu.

Produkty jednorazowe i konsumowalne wymagają productId oraz ceny i waluty: bez productId zakup jest sprawdzany jako subskrypcja i kończy się błędem, a bez ceny zapisuje się z kwotą 0 $. Wypisz je w oneTimeProductIds, a automatyczne przechwytywanie doda oba pola. Kod 409 oznacza, że zakup jednorazowy nadal oczekuje.

Większość aplikacji ma własny BillingClient. Przekazuj każdy zakup do modułu także ze swojego PurchasesUpdatedListener, żeby został zgłoszony od razu. Moduł używa tej samej deduplikacji, więc nic nie trafi do systemu dwa razy:

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")
        }
    }
}

Krok 5: dodaj konto usługi Google Play

Tryb store-direct wymaga dostępu do odczytu w Google Play Developer API. InfluTo tylko odczytuje dane i niczego nie zmienia w Twoim Play Console.

  1. 1

    Włącz API. W Google Cloud włącz Google Play Android Developer API i utwórz konto usługi z kluczem JSON.

  2. 2

    Nadaj dostęp w Play Console. W sekcji Users and permissions zaproś adres e-mail konta usługi i nadaj mu dla tej aplikacji uprawnienie View financial data, orders, and cancellation survey responses.

  3. 3

    Prześlij, zweryfikuj, przełącz. Prześlij klucz JSON w Settings → Validation i kliknij Save & validate. Gdy sprawdzenie zaświeci się na zielono, ustaw Android na Google — direct.

Nowe uprawnienia Google mogą docierać do API nawet do 48 godzin. W tym czasie InfluTo pokazuje „propagating”. Do momentu przełączenia raporty zakupów dostają odpowiedź 400, więc bezpiecznie możesz najpierw wypuścić SDK.

Krok 6: przetestuj z kontem testera licencji

Zakupy testowe nie przesuwają pieniędzy i nie zmieniają Twoich statystyk:

  1. 1

    Zasymuluj zakup. Simulate a purchase w Setup & SDK wysyła testowy zakup z sandboxa przez prawdziwy potok InfluTo. Wpisz jeden ze swoich kodów, by zobaczyć, jak zostanie rozpoznany.

  2. 2

    Zainstaluj przez link polecający. Dołącz do swojej kampanii drugim kontem twórcy, otwórz jego link na urządzeniu testowym, zainstaluj testowy build i uruchom aplikację. Najpewniejszym testem jest ręczne wpisanie kodu.

  3. 3

    Kup jako tester licencji. Kup jako tester licencji Google Play. Integration log przełączony na Sandbox pokaże zakup przypisany do Twojego kodu. Przy debug = true SDK zapisuje każdy krok w Logcat pod tagiem InfluTo.

clearAttribution() resetuje urządzenie przed kolejnym przebiegiem. Czystszy start da wyczyszczenie danych aplikacji lub ponowna instalacja.

Uwagi o Androidzie

Kilka szczegółów platformy:

  • Najpierw korutyny. Metody sieciowe to funkcje suspend. getReferralCode(), getPrefilledCode() i clearAttribution() to zwykłe funkcje.

  • Uprawnienia. Rdzeń dodaje INTERNET, a android-sdk-billing dodaje com.android.vending.BILLING. Dokumentacja prywatności opisuje, co zadeklarować w formularzu Data safety w Google Play.

  • Wersja Play Billing. android-sdk-billing udostępnia Play Billing Library 9.0.0. Gradle rozwiązuje ją razem z Twoją własną zależnością Billing.

  • Bez identyfikatora reklamowego. InfluTo nie używa identyfikatora reklamowego, nie śledzi użytkowników między aplikacjami i nigdy nie dopasowuje ich po cechach urządzenia.

Albo zleć to agentowi kodującemu

Połącz serwer MCP InfluTo z Claude Code, Codex lub Cursor i poproś o integrację. Agent napisze linie Gradle i kod startowy, poda Ci link do samodzielnego wgrania JSON konta usługi, uruchomi sprawdzenie danych uwierzytelniających i potwierdzi przypisany zakup testowy.

SDK partnerskie dla Androida — odpowiedzi.

Czy istnieje SDK partnerskie dla aplikacji na Androida napisanych w Kotlinie?

Tak. to.influ:android-sdk w Maven Central (MIT, kod źródłowy na github.com/influto/influto-android) dodaje do natywnych aplikacji na Androida wykrywanie instalacji z polecenia, kody polecające i przypisywanie zakupów. Wymaga minSdk 24 i toolchainu Java 17, a rdzeń zależy tylko od kotlinx-coroutines.

Czy potrzebuję Google Play Billing Library?

Tylko w ścieżce store-direct. android-sdk-billing dodaje Play Billing Library 9.0.0 (billing-ktx) i uprawnienie BILLING. Aplikacje z RevenueCat używają samego rdzenia SDK.

Czy działa z RevenueCat na Androidzie?

Tak. SDK samo znajduje SDK RevenueCat i ustawia u subskrybenta influto_code oraz influto_referral. Możesz też jawnie przekazać revenueCatAttributeSetter. Potem webhook RevenueCat wysyła do InfluTo każdy zakup, odnowienie i zwrot.

Czy obsługuje produkty konsumpcyjne i zakupy jednorazowe?

Tak. Wypisz ich identyfikatory produktów w oneTimeProductIds, aby przechwycone zakupy były weryfikowane jako jednorazowe. Jeśli Twój kod rozliczeń nie udostępnia ceny, zgłaszaj je razem z ceną i walutą. Zwroty jednorazowych zakupów w Google Play są wykrywane, a prowizja jest cofana.

Ile to kosztuje?

0 $ miesięcznie. Za każdy zweryfikowany zakup płacisz ustaloną przez siebie prowizję plus 10% tego samego przychodu (7%, 5% lub 3% przy większym wolumenie). Przedpłacony portfel zaczyna się od 50 $ i podlega zwrotowi. InfluTo wypłaca twórcom środki co miesiąc przez Stripe Connect w 33 krajach, gdy zarobią 20 $.

Wypuść kody polecające w następnym wydaniu.

Jedna linia Gradle, jedna ścieżka walidacji, zwrotny depozyt. 0 $ miesięcznie, a 10% płacisz tylko od przychodu, który przyniosą twórcy.

Zacznij za darmo