Zum Inhalt springen

Guide · Android (Kotlin)

Baue ein Affiliate- oder Empfehlungsprogramm in deine Android-App ein.

Das InfluTo Android SDK ist für Kotlin und Coroutines geschrieben. Es zeigt dir, welcher Creator einen Install vermittelt hat, nimmt eingegebene Empfehlungscodes entgegen und lässt jeden Kauf verifizieren — über RevenueCat oder direkt über Google Play Billing.

Aktualisiert: 1. November 2026

Kurz gesagt

Füge to.influ:android-sdk von Maven Central hinzu, rufe InfluTo.initialize einmal in Application.onCreate auf (es ist eine suspend-Funktion), dann checkAttribution und identifyUser. Mit RevenueCat musst du im Code nichts weiter verdrahten: Das SDK findet RevenueCat von selbst und markiert den Abonnenten. Ohne RevenueCat fügst du to.influ:android-sdk-billing hinzu. Es bringt die Play Billing Library 9.0.0 mit, erfasst Käufe automatisch und übernimmt jeden Kauf auch aus deinem eigenen PurchasesUpdatedListener. Voraussetzung sind minSdk 24 und eine Java-17-Toolchain. Rechne mit einem Nachmittag, den größten Teil davon für die Kaufseite.

Schritt 1: Die benötigten Artefakte hinzufügen

Das SDK ist in drei Artefakte auf Maven Central aufgeteilt, alle in derselben Version. mavenCentral() muss also in deinen Repositories stehen. Füge nur hinzu, was du brauchst: Jedes Add-on bringt den Core mit, und Core und Billing-Artefakt liefern ihre eigenen R8/ProGuard-Regeln mit.

// 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")
}
ArtefaktHinzufügen, wennWas es mitbringt
android-sdkImmerDas SDK; fügt die INTERNET-Berechtigung hinzu
android-sdk-uiDu das fertige Compose-Codefeld willstInfluToReferralCodeInput (Material 3)
android-sdk-billingDeine App direkt über den Store abrechnet (kein RevenueCat)Automatische Kauferfassung; bringt die Google Play Billing Library 9.0.0 (billing-ktx) und die Berechtigung com.android.vending.BILLING mit

Schritt 2: In Application.onCreate initialisieren

initialize ist eine suspend-Funktion. Rufe sie einmal beim Start auf und warte auf das Ergebnis. Bis sie erfolgreich war, werfen checkAttribution und reportPurchase InfluToError.NotInitialized. Schlägt sie fehl (falscher Schlüssel, kein Netz), wirft sie eine Exception: Fange sie ab, logge sie und mach weiter.

Nutze Application.onCreate oder einen app-weiten Scope, nicht das onCreate einer Activity, das bei jeder Konfigurationsänderung erneut läuft. Du bist nicht in einer Coroutine? Jede Netzwerkmethode hat eine Callback-Überladung. Callbacks laufen auf einem Hintergrund-Thread, wechsle also zum Main-Thread, bevor du die Oberfläche anfasst.

Der API-Schlüssel (it_…, unter Setup & SDK) gilt für Entwicklung und Produktion. Lege ihn in einem BuildConfig-Feld ab, das aus einer Gradle-Property in local.properties oder aus den Secrets deiner CI befüllt wird. Ein typischer Start in einer RevenueCat-App:

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

Schritt 3: Empfehlungscodes und das Compose-Feld

applyCode(code) ist ein suspend-Aufruf, der einen Code prüft und ihn anwendet, wenn er gültig ist. Codes werden getrimmt und in Großbuchstaben umgewandelt. Ein ungültiger Code liefert valid = false mit einem errorCode: INVALID_FORMAT, CODE_NOT_FOUND, CODE_EXPIRED, NETWORK_ERROR oder UNKNOWN.

Mit android-sdk-ui ist InfluToReferralCodeInput ein Material-3-Composable. Es prüft schon während der Eingabe, wendet den Code per Tipp an, füllt ihn bei einem über einen Link zugeordneten Install vor und übernimmt deine übersetzten Texte. Den Namen eines Creators zeigt es nur, wenn du showReferrerName aktivierst.

Schritt 4: Käufe anbinden

InfluTo zahlt Provision nur auf Käufe, die der Store bestätigt hat. Wähle für Android einen Weg:

  • RevenueCat: Im Code ist nichts zu verdrahten. Sobald eine Empfehlung gefunden oder ein Code angewendet wird, findet das SDK das RevenueCat SDK und setzt influto_code und influto_referral. Übergib revenueCatAttributeSetter, wenn du es explizit haben willst. Konfiguriere zuerst RevenueCat und füge android-sdk-billing nicht hinzu.

  • Direkt über den Store (Play Billing): Füge android-sdk-billing hinzu. Bei einer App mit direkter Store-Abrechnung startet initialize einen Observer mit eigener Play-Billing-Verbindung, der neue Käufe meldet und bestehende bei jedem Start durchgeht. Gesendet werden nur Käufe mit dem Status PURCHASED, jeder einmal, anhand des Purchase-Tokens.

Einmalkäufe und verbrauchbare Produkte brauchen productId sowie Preis und Währung: Ohne productId wird der Kauf als Abo geprüft und schlägt fehl, ohne Preis wird er mit 0 $ erfasst. Führe sie in oneTimeProductIds auf, dann ergänzt die automatische Erfassung beides. Ein 409 bedeutet, dass ein Einmalkauf noch aussteht.

Die meisten Apps haben einen eigenen BillingClient. Gib jeden Kauf auch aus deinem PurchasesUpdatedListener an das Modul weiter, damit er im selben Moment gemeldet wird. Es nutzt dieselbe Deduplizierung, daher wird nichts doppelt gemeldet:

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

Schritt 5: Google-Play-Dienstkonto hinzufügen

Store-direkt braucht Lesezugriff auf die Google Play Developer API. InfluTo liest nur und ändert nie etwas in deiner Play Console.

  1. 1

    API aktivieren. Aktiviere in Google Cloud die Google Play Android Developer API und erstelle ein Dienstkonto mit JSON-Schlüssel.

  2. 2

    Zugriff in der Play Console erteilen. Lade unter Nutzer und Berechtigungen die E-Mail-Adresse des Dienstkontos ein und gib ihm für die App die Berechtigung „Finanzdaten, Bestellungen und Antworten auf Kündigungsumfragen ansehen“.

  3. 3

    Hochladen, prüfen, umschalten. Lade den JSON-Schlüssel unter Einstellungen → Validierung hoch und klicke auf Speichern und validieren. Sobald die Prüfung grün ist, stelle Android auf Google – direkt.

Neue Google-Berechtigungen brauchen bis zu 48 Stunden, bis sie in der API ankommen. InfluTo zeigt in der Zwischenzeit „wird übernommen“ an. Bis zur Umstellung beantwortet die API Kaufmeldungen mit einem 400 – du kannst das SDK also bedenkenlos zuerst ausliefern.

Schritt 6: Mit einem Lizenztester testen

Testkäufe bewegen kein Geld und verändern deine Statistiken nicht:

  1. 1

    Kauf simulieren. Mit „Kauf simulieren“ unter Setup & SDK schickst du einen Sandbox-Testkauf durch die echte Pipeline von InfluTo. Gib einen deiner Codes ein, um zu sehen, wie er zugeordnet wird.

  2. 2

    Über einen Empfehlungslink installieren. Tritt deiner Kampagne mit einem zweiten Creator-Konto bei, öffne den Link auf einem Testgerät, installiere deinen Test-Build und starte ihn. Am zuverlässigsten testest du, indem du den Code eintippst.

  3. 3

    Als Lizenztester kaufen. Kaufe als Google-Play-Lizenztester. Das Integrationsprotokoll zeigt im Sandbox-Modus den Kauf, der deinem Code zugeordnet wurde. Mit debug = true protokolliert das SDK jeden Schritt in Logcat unter dem Tag InfluTo.

clearAttribution() setzt das Gerät für einen weiteren Durchlauf zurück. Sauberer startest du, wenn du den App-Speicher löschst oder die App neu installierst.

Hinweise zu Android

Ein paar Details zur Plattform:

  • Coroutines zuerst. Netzwerkmethoden sind suspend-Funktionen. getReferralCode(), getPrefilledCode() und clearAttribution() sind normale Funktionen.

  • Berechtigungen. Der Core fügt INTERNET hinzu, android-sdk-billing zusätzlich com.android.vending.BILLING. Was du im Play-Formular „Datensicherheit“ angeben musst, steht in der Datenschutzdokumentation.

  • Play-Billing-Version. android-sdk-billing stellt die Play Billing Library 9.0.0 bereit. Gradle löst sie zusammen mit deiner eigenen Billing-Abhängigkeit auf.

  • Keine Werbe-ID. InfluTo nutzt die Werbe-ID nicht, trackt Nutzer nicht app-übergreifend und gleicht nie anhand von Geräteeigenschaften ab.

Oder überlass es deinem Coding-Agenten

Verbinde den MCP-Server von InfluTo mit Claude Code, Codex oder Cursor und bitte um die Integration. Der Agent schreibt die Gradle-Zeilen und den Startcode, gibt dir einen Link zum eigenen Hochladen des Dienstkonto-JSON, führt die Prüfung der Zugangsdaten aus und bestätigt einen zugeordneten Testkauf.

Affiliate-SDK für Android – Antworten.

Gibt es ein Affiliate-SDK für Android-Apps in Kotlin?

Ja. to.influ:android-sdk auf Maven Central (MIT, Quellcode unter github.com/influto/influto-android) ergänzt native Android-Apps um die Erkennung von Installationen über Empfehlungen, um Empfehlungscodes und um die Zuordnung von Käufen. Es braucht minSdk 24 und eine Java-17-Toolchain. Der Core hängt nur von kotlinx-coroutines ab.

Brauche ich die Google Play Billing Library?

Nur beim Store-direkt-Weg. android-sdk-billing bringt die Play Billing Library 9.0.0 (billing-ktx) und die BILLING-Berechtigung mit. Apps mit RevenueCat nutzen allein das Core-SDK.

Funktioniert es mit RevenueCat auf Android?

Ja. Das SDK findet das RevenueCat SDK selbstständig und setzt influto_code und influto_referral beim Abonnenten. Alternativ übergibst du revenueCatAttributeSetter explizit. Danach meldet der Webhook von RevenueCat jeden Kauf, jede Verlängerung und jede Erstattung an InfluTo.

Werden Verbrauchsgüter und Einmalkäufe unterstützt?

Ja. Trage ihre Produkt-IDs in oneTimeProductIds ein, damit erfasste Käufe als Einmalkäufe validiert werden. Melde sie mit Preis und Währung, falls dein Billing-Code den Preis nicht liefert. Einmalige Erstattungen bei Google Play werden erkannt, die Provision wird rückgängig gemacht.

Was kostet es?

0 $ im Monat. Pro verifiziertem Kauf zahlst du die von dir festgelegte Provision plus 10 % desselben Umsatzes (7 %, 5 % oder 3 % bei hohem Volumen). Das Prepaid-Guthaben beginnt bei 50 $ und ist erstattbar. InfluTo zahlt Creator monatlich über Stripe Connect in 33 Ländern aus, sobald sie 20 $ verdient haben.

Bring Empfehlungscodes in dein nächstes Release.

Eine Gradle-Zeile, ein Validierungsweg, eine erstattbare Einzahlung. 0 $ im Monat, 10 % nur auf Umsatz, den Creator bringen.

Kostenlos starten