Przejdź do treści

Poradnik · Flutter

Dodaj program partnerski lub poleceń do swojej aplikacji Flutter.

Pakiet influto wykrywa instalacje z polecenia i przyjmuje wpisywane kody polecające na iOS i Android. Zakupy trafiają do InfluTo przez RevenueCat albo prosto z App Store i Google Play dzięki pakietowi towarzyszącemu influto_iap.

Zaktualizowano: 1 listopada 2026

W skrócie

Uruchom flutter pub add influto, wywołaj InfluTo.instance.initialize raz przy starcie, a potem checkAttribution i identifyUser. Z RevenueCat przekaż revenueCatHook, który wywołuje Purchases.setAttributes: Flutter nie ma automatycznego tagowania, więc bez hooka nic nie ustawi atrybutu. Bez RevenueCat dodaj influto_iap i włącz InfluToPurchaseObserver po initialize; zgłasza nowe zakupy i uzupełnia wcześniejsze przez wtyczkę in_app_purchase. Wymaga Flutter 3.22+ i Dart 3.4+. Zarezerwuj popołudnie, większość zajmie strona zakupów.

Jakich pakietów potrzebujesz

Na pub.dev są dwa pakiety, oba na licencji MIT, z kodem źródłowym na github.com/influto/influto-flutter:

  • influto — zawsze. Atrybucja, kody polecające, identyfikacja użytkowników, kody darmowego dostępu i ręczne zgłaszanie zakupów. Jedyne zależności to http i shared_preferences.

  • influto_iap — tylko przy zakupach prosto ze sklepu. Dodaj go, jeśli aplikacja nie używa RevenueCat i sprzedaje przez wtyczkę in_app_purchase; przechwytuje zakupy automatycznie. Aplikacje z RevenueCat na purchases_flutter go nie potrzebują.

Wszystko idzie przez InfluTo.instance; nie ma wywołań statycznych. Instalacja:

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

Krok 1: zainicjuj bez wstrzymywania pierwszej klatki

Wywołaj initialize raz przy starcie i poczekaj na wynik, zanim wywołasz cokolwiek innego; do czasu sukcesu checkAttribution i reportPurchase rzucają InfluToException. Przy porażce (zły klucz, brak sieci) initialize też rzuca wyjątek, więc złap błąd, zaloguj go i działaj dalej. Następny start spróbuje ponownie.

Nie blokuj na tym pierwszej klatki: skonfiguruj RevenueCat, wywołaj runApp, a potem uruchom InfluTo z unawaited, jak niżej. Klucz API (it_…, w Setup & SDK) przekaż w czasie budowania przez --dart-define=INFLUTO_API_KEY=it_… i odczytaj go przez String.fromEnvironment.

checkAttribution mówi potem, czy instalacja pochodziła z polecenia i z którego kodu. Odpowiedź zapada raz na instalację i jest zapisana na urządzeniu, a błąd sieci zwraca attributed: false bez zapisywania czegokolwiek. Typowy 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);
}

Krok 2: pozwól użytkownikom wpisać kod

applyCode(code) sprawdza kod i stosuje go, jeśli jest poprawny; result.applied mówi, czy tak się stało. Kody są przycinane z białych znaków i zamieniane na wielkie litery, a niepoprawny kod zwraca valid: false z errorCode, np. CODE_NOT_FOUND lub CODE_EXPIRED.

Gotowa opcja to widżet ReferralCodeInput (Material). Sprawdza kod w trakcie pisania, stosuje go po kliknięciu, wstępnie wypełnia go przy instalacji przypisanej do linku i przyjmuje Twoje przetłumaczone teksty. Nazwę twórcy pokazuje tylko wtedy, gdy ustawisz showReferrerName.

Krok 3: podłącz zakupy

InfluTo wypłaca prowizję tylko od zakupów zweryfikowanych przez sklep. Wybierz dokładnie jedną ścieżkę na platformę:

  • RevenueCat (purchases_flutter): przekaż w InfluToConfig revenueCatHook, który wywołuje Purchases.setAttributes, jak w main.dart wyżej. SDK wywołuje go raz, gdy znajdzie polecenie lub zostanie zastosowany kod, z influto_code i influto_referral. Potem podłącz webhook RevenueCat w Setup & SDK.

  • Prosto ze sklepu (in_app_purchase): dodaj influto_iap, utwórz jeden InfluToPurchaseObserver i włącz go po zakończeniu initialize. Działa tylko wtedy, gdy aplikacja ma w Settings → Validation ustawione store-direct, więc ten sam build jest bezpieczny w aplikacji z RevenueCat.

Bez hooka nic nie ustawia atrybutu RevenueCat we Flutterze. W odróżnieniu od React Native nie ma tu automatycznego tagowania. Skonfiguruj RevenueCat przed checkAttribution i wywołaj identifyUser z app user ID z RevenueCat. InfluTo używa go jako zapasowego identyfikatora, gdy zdarzenie przychodzi bez atrybutu.

Co observer robi w Twojej aplikacji: kończy oczekujące zakupy (completePurchase), żeby sklep nie dostarczał ich ponownie ani nie zwracał pieniędzy. Jego uzupełnianie wsteczne wywołuje restorePurchases(), więc Twój własny listener przy starcie widzi też przywrócone zakupy (enable(backSync: false) to pomija). Na iOS przełącza też in_app_purchase na StoreKit 2, którego wymaga store-direct.

Produkty jednorazowe na Androidzie trafiają do oneTimeProductIds w observerze, nie do InfluToConfig. Aby zgłaszać zakupy samodzielnie, ustaw autoCapture: false, pomiń observera i wywołaj reportPurchase z podpisaną transakcją StoreKit 2 albo z purchaseToken z Play. Konfiguracja observera:

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

Krok 4: przetestuj całość od początku do końca

Zakupy w sandboxie nie przenoszą pieniędzy ani nie zmieniają statystyk:

  1. 1

    Sprawdź Setup & SDK. Po pierwszym udanym initialize zobaczysz „SDK connected” wraz z platformą i wersją SDK. Z debug: true każdy krok jest wypisywany przez debugPrint.

  2. 2

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

  3. 3

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

  4. 4

    Kup w sandboxie. Użyj testera TestFlight lub sandboxa (w store-direct na iOS najpierw ustaw środowisko Apple na Sandbox) albo testera licencji Google Play. Dziennik integracji przełączony na Sandbox pokaże zakup z przypisaniem. enable() zwraca liczby fetched, sent i failed, przydatne przy debugowaniu.

clearAttribution() resetuje urządzenie przed kolejną próbą.

Uwagi o Flutterze

Trzy rzeczy, na których najczęściej potykają się osoby integrujące Fluttera:

  • Kolejność ma znaczenie. Skonfiguruj RevenueCat, potem initialize, potem checkAttribution. Observera influto_iap włączaj dopiero po zakończeniu initialize, inaczej pozostanie wyłączony.

  • Konfiguracje const. InfluToConfig ma konstruktor const, ale domknięcie nie jest stałą. Gdy przekazujesz revenueCatHook, usuń const.

  • Identyfikuj raz. Wywołuj identifyUser raz na logowanie, najlepiej w pierwszej sesji użytkownika, a nie z build.

Albo zleć to agentowi kodującemu

Podłącz serwer MCP InfluTo do Claude Code, Codex lub Cursor i poproś o integrację. Agent dopasuje projekt Dart do tego SDK, napisze kod dla wybranej ścieżki weryfikacji i będzie sprawdzać influto_integration_status, aż zakup z sandboxa dotrze z przypisaniem.

Afiliacyjne SDK dla Fluttera — odpowiedzi.

Czy istnieje afiliacyjne SDK dla Fluttera?

Tak. Pakiet influto na pub.dev (MIT, kod na github.com/influto/influto-flutter) dodaje do aplikacji Flutter na iOS i Androida wykrywanie poleconych instalacji, kody polecające i przypisywanie zakupów. Wymaga Fluttera 3.22+ i Darta 3.4+.

Które narzędzia do poleceń obsługują Fluttera?

Kilka platform afiliacyjnych publikuje pakiety dla Fluttera. Pakiet InfluTo obejmuje atrybucję, wpisywane kody z gotowym widżetem ReferralCodeInput, tagowanie w RevenueCat przez hook i automatyczne przechwytywanie store-direct przez influto_iap. Ma wspólny kontrakt z SDK InfluTo dla iOS, Androida, React Native i weba.

Czy działa z purchases_flutter (RevenueCat)?

Tak. Przekaż revenueCatHook, który wywołuje Purchases.setAttributes, najpierw skonfiguruj RevenueCat i podłącz webhook RevenueCat. Aplikacja z RevenueCat nie potrzebuje influto_iap.

Czy influto_iap będzie kolidować z moim własnym listenerem zakupów?

Kończy oczekujące zakupy i przy starcie uruchamia przywracanie na potrzeby uzupełniania wstecznego, więc Twój listener widzi też przywrócone zakupy. Jeśli tego nie chcesz, wywołaj enable(backSync: false). Treści nadal dostarczasz z własnego listenera purchaseStream.

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 $.

Wdróż kody polecające w następnym buildzie Fluttera.

Jeden pakiet, jedna ścieżka weryfikacji, zwrotny depozyt. 0 $ miesięcznie. 10% tylko od przychodu, który przyniosą twórcy.

Zacznij za darmo