Zum Inhalt springen

Guide · Flutter

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

Das Paket influto erkennt vermittelte Installs und nimmt eingetippte Empfehlungscodes entgegen, auf iOS und Android. Käufe erreichen InfluTo über RevenueCat oder direkt aus dem App Store und Google Play mit dem Begleitpaket influto_iap.

Aktualisiert: 1. November 2026

Kurz gesagt

Führe flutter pub add influto aus, rufe beim Start einmal InfluTo.instance.initialize auf und danach checkAttribution und identifyUser. Mit RevenueCat übergibst du einen revenueCatHook, der Purchases.setAttributes aufruft: Flutter markiert nicht automatisch, ohne den Hook setzt also nichts das Attribut. Ohne RevenueCat fügst du influto_iap hinzu und aktivierst nach initialize einen InfluToPurchaseObserver. Er meldet neue Käufe und holt frühere über das Plugin in_app_purchase nach. Voraussetzung sind Flutter 3.22+ und Dart 3.4+. Plane einen Nachmittag ein, die meiste Zeit geht für die Käufe drauf.

Welche Pakete du brauchst

Auf pub.dev gibt es zwei Pakete, beide unter MIT-Lizenz, mit Quellcode auf github.com/influto/influto-flutter:

  • influto, immer. Zuordnung, Empfehlungscodes, Nutzeridentifikation, Codes für kostenlosen Zugang und manuelle Kaufmeldung. Die einzigen Abhängigkeiten sind http und shared_preferences.

  • influto_iap, nur für die direkte Store-Anbindung. Nimm es, wenn deine App kein RevenueCat nutzt und über das Plugin in_app_purchase verkauft. Es erfasst Käufe automatisch. RevenueCat-Apps mit purchases_flutter brauchen es nicht.

Alles läuft über InfluTo.instance, es gibt keine statischen Aufrufe. Die Installation:

flutter pub add influto
# optional: automatic store-direct purchase capture
flutter pub add influto_iap

Schritt 1: initialisieren, ohne den ersten Frame auszubremsen

Rufe initialize einmal beim Start auf und warte darauf, bevor du etwas anderes aufrufst. Solange es nicht erfolgreich war, lösen checkAttribution und reportPurchase eine InfluToException aus. Bei einem Fehler (falscher Schlüssel, kein Netz) wirft initialize eine Exception: Fang sie ab, logge sie und mach weiter. Beim nächsten Start versucht es die App erneut.

Lass deinen ersten Frame nicht darauf warten: Konfiguriere RevenueCat, rufe runApp auf und starte InfluTo dann mit unawaited, wie unten gezeigt. Übergib den API-Schlüssel (it_…, unter Setup & SDK) beim Build mit --dart-define=INFLUTO_API_KEY=it_… und lies ihn mit String.fromEnvironment aus.

checkAttribution sagt dir dann, ob der Install vermittelt wurde und über welchen Code. Die Antwort wird einmal pro Install festgelegt und auf dem Gerät gespeichert. Bei einem Netzwerkfehler kommt attributed: false zurück, ohne dass etwas gespeichert wird. Eine typische main.dart:

import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:influto/influto.dart';
import 'package:purchases_flutter/purchases_flutter.dart'; // only if you use RevenueCat

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Purchases.configure(PurchasesConfiguration('appl_…')); // RevenueCat apps: configure it first
  runApp(const MyApp());
  unawaited(startInfluTo());
}

Future<void> startInfluTo() async {
  try {
    await InfluTo.instance.initialize(InfluToConfig(
      apiKey: const String.fromEnvironment('INFLUTO_API_KEY'),
      appVersion: '1.4.0',
      revenueCatHook: (attrs) => Purchases.setAttributes(attrs),
    ));
  } catch (e) {
    debugPrint('InfluTo initialize failed: $e'); // retried on the next launch
    return;
  }
  final attribution = await InfluTo.instance.checkAttribution();
  await InfluTo.instance.identifyUser(await Purchases.appUserID);
}

Schritt 2: Nutzer einen Code eintippen lassen

applyCode(code) prüft einen Code und wendet ihn an, wenn er gültig ist. In result.applied siehst du, ob das geklappt hat. Codes werden von Leerzeichen befreit und in Großbuchstaben umgewandelt. Ein ungültiger Code liefert valid: false mit einem errorCode wie CODE_NOT_FOUND oder CODE_EXPIRED.

Die fertige Lösung ist das Widget ReferralCodeInput (Material). Es prüft schon während der Eingabe, wendet den Code per Tipp an, füllt ihn bei einem über Link zugeordneten Install vor und übernimmt deine übersetzten Texte. Den Namen eines Creators zeigt es nur an, wenn du showReferrerName setzt.

Schritt 3: Käufe anbinden

InfluTo zahlt Provision nur auf Käufe, die mit dem Store verifiziert sind. Wähle pro Plattform genau einen Weg:

  • RevenueCat (purchases_flutter): Übergib in InfluToConfig einen revenueCatHook, der Purchases.setAttributes aufruft, wie in der main.dart oben. Das SDK ruft ihn einmal auf, wenn eine Empfehlung gefunden oder ein Code angewendet wird, mit influto_code und influto_referral. Verbinde danach den RevenueCat-Webhook unter Setup & SDK.

  • Direkt über den Store (in_app_purchase): Füge influto_iap hinzu, erstelle einen InfluToPurchaseObserver und aktiviere ihn, nachdem initialize abgeschlossen ist. Er läuft nur, wenn die App unter Einstellungen → Validierung auf „direkt über den Store“ steht. Derselbe Build ist also auch in einer RevenueCat-App unbedenklich.

Ohne den Hook setzt nichts das RevenueCat-Attribut in Flutter; anders als in React Native gibt es kein automatisches Tagging. Konfiguriere RevenueCat vor checkAttribution und rufe identifyUser mit der RevenueCat-App-User-ID auf. InfluTo nutzt sie als Fallback, wenn ein Event ohne das Attribut ankommt.

Was der Observer in deiner App tut: Er schließt ausstehende Käufe ab (completePurchase), damit der Store sie nicht erneut zustellt oder erstattet. Sein Back-fill ruft restorePurchases() auf, sodass auch dein eigener Listener beim Start wiederhergestellte Käufe sieht (enable(backSync: false) überspringt das). Und unter iOS stellt er in_app_purchase auf StoreKit 2 um, was Store-direct braucht.

Android-Einmalprodukte gehören in die oneTimeProductIds des Observers, nicht in InfluToConfig. Wenn du Käufe lieber selbst meldest, setze autoCapture: false, lass den Observer weg und rufe reportPurchase mit der signierten StoreKit-2-Transaktion oder dem Play-purchaseToken auf. Die Einrichtung des Observers:

import 'package:influto_iap/influto_iap.dart';

final observer = InfluToPurchaseObserver(
  oneTimeProductIds: {'coins_100', 'remove_ads'}, // Android one-time products; omit if you only sell subscriptions
);
final sync = await observer.enable(); // listens for new purchases + back-fills existing ones

Schritt 4: Ende-zu-Ende testen

Sandbox-Käufe bewegen nie Geld und verändern deine Statistiken nicht:

  1. 1

    Setup & SDK prüfen. Nach dem ersten erfolgreichen initialize zeigt die Seite „SDK connected“ mit Plattform und SDK-Version. Mit debug: true wird jeder Schritt per debugPrint ausgegeben.

  2. 2

    Einen Kauf simulieren. „Simulate a purchase“ unter Setup & SDK schickt einen Sandbox-Testkauf durch die echte Pipeline von InfluTo. Gib einen deiner Codes ein, um zu sehen, wie er aufgelöst wird.

  3. 3

    Über einen Empfehlungslink installieren. Tritt deiner Kampagne mit einem zweiten Creator-Konto bei, öffne den Link auf einem Testgerät, installiere die App und starte sie. Am zuverlässigsten ist es, den Code einzutippen.

  4. 4

    Im Sandbox-Modus kaufen. Nutze einen TestFlight- oder Sandbox-Tester (bei Store-direct unter iOS stellst du zuerst die Apple-Umgebung auf Sandbox) oder einen Google-Play-Lizenztester. Das Integrationsprotokoll zeigt, auf Sandbox umgestellt, den zugeordneten Kauf. Zum Debuggen liefert enable() die Anzahl abgerufener, gesendeter und fehlgeschlagener Einträge.

clearAttribution() setzt das Gerät für einen weiteren Durchlauf zurück.

Hinweise zu Flutter

Drei Dinge, über die man bei Flutter-Integrationen oft stolpert:

  • Die Reihenfolge zählt. Konfiguriere RevenueCat, dann initialize, dann checkAttribution. Aktiviere den influto_iap-Observer erst, wenn initialize abgeschlossen ist, sonst bleibt er aus.

  • const-Konfigurationen. InfluToConfig hat einen const-Konstruktor, aber eine Closure ist keine Konstante. Lass const weg, wenn du einen revenueCatHook übergibst.

  • Einmal identifizieren. Rufe identifyUser einmal pro Anmeldung auf, am besten in der ersten Sitzung des Nutzers, nicht aus build.

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 ordnet ein Dart-Projekt diesem SDK zu, schreibt den Code für den gewählten Validierungsweg und prüft influto_integration_status, bis ein Sandbox-Kauf mit Zuordnung eintrifft.

Affiliate-SDK für Flutter: Antworten.

Gibt es ein Affiliate-SDK für Flutter?

Ja. influto auf pub.dev (MIT, Quellcode unter github.com/influto/influto-flutter) erkennt Installs über Empfehlungen, unterstützt Empfehlungscodes und ordnet Käufe zu – in Flutter-Apps auf iOS und Android. Es braucht Flutter 3.22+ und Dart 3.4+.

Welche Empfehlungs-Tools unterstützen Flutter?

Mehrere Affiliate-Plattformen veröffentlichen Flutter-Pakete. Das von InfluTo deckt Attribution, eingetippte Codes mit einem fertigen ReferralCodeInput-Widget, RevenueCat-Tagging über einen Hook und automatische Store-direct-Erfassung über influto_iap ab. Es teilt sich einen Wire-Contract mit den iOS-, Android-, React-Native- und Web-SDKs von InfluTo.

Funktioniert es mit purchases_flutter (RevenueCat)?

Ja. Übergib einen revenueCatHook, der Purchases.setAttributes aufruft, konfiguriere zuerst RevenueCat und verbinde den RevenueCat-Webhook. Eine App mit RevenueCat braucht influto_iap nicht.

Stört influto_iap meinen eigenen Purchase-Listener?

Er schließt ausstehende Käufe ab und startet beim Start eine Wiederherstellung für den Back-fill, sodass dein Listener auch wiederhergestellte Käufe sieht. Rufe enable(backSync: false) auf, wenn du das nicht willst. Inhalte lieferst du weiterhin aus deinem eigenen purchaseStream-Listener aus.

Was kostet es?

0 $ im Monat. Pro verifiziertem Kauf zahlst du die Provision, die du festlegst, 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 deinen nächsten Flutter-Build.

Ein Paket, ein Validierungsweg, eine erstattbare Einzahlung. 0 $ im Monat; 10 % nur auf Umsatz, den Creator bringen.

Kostenlos starten