Poradnik · React Native i Expo
Dodaj program partnerski lub polecający do swojej aplikacji React Native.
@influto/react-native-sdk działa w zarządzanym Expo i w czystym React Native, na iOS i Androidzie. Pokazuje, który twórca polecił instalację, przyjmuje wpisywane kody polecające i weryfikuje każdy zakup przez RevenueCat albo bezpośrednio w Apple i Google.
Zaktualizowano: 1 listopada 2026
W skrócie
Zainstaluj @influto/react-native-sdk i @react-native-async-storage/async-storage, wywołaj InfluTo.initialize raz w głównym komponencie aplikacji, a potem checkAttribution i identifyUser. W aplikacji z RevenueCat to cały kod: gdy zainstalowano react-native-purchases, SDK zapisuje atrybut influto_code u subskrybenta, a resztę robi webhook RevenueCat. Bez RevenueCat zainstaluj expo-iap lub react-native-iap, a SDK samo przechwyci zakupy w sklepie. Expo nie wymaga config pluginu. Zarezerwuj sobie popołudnie.
Co SDK robi w aplikacji React Native
Jeden pakiet obsługuje iOS, Androida i każdy sposób pracy z Expo. Ma trzy zadania:
Ustala twórcę, który stoi za instalacją. checkAttribution odpowiada raz na instalację. Wpisany kod daje dokładne dopasowanie. W innym razie dopasowanie po kliknięciu łączy instalację z niedawnym kliknięciem w link twórcy, w ciągu 72 godzin. Bez IDFA i bez okna ATT.
Przyjmuje wpisywane kody polecające. applyCode lub gotowe pole ReferralCodeInput obsługuje wzmianki w podcastach i filmach, gdzie nikt nie klika w link.
Łączy zakupy z poleceniem. W RevenueCat oznacza subskrybenta. Przy płatnościach bezpośrednio przez sklep zgłasza zakup podpisany przez sklep, a InfluTo weryfikuje go w Apple lub Google. Prowizja powstaje dopiero po tej weryfikacji.
Krok 1: zainstaluj pakiet
Dodaj SDK i AsyncStorage, w którym SDK trzyma swój lokalny stan. AsyncStorage to moduł natywny, więc musi być w zależnościach samej aplikacji, żeby zadziałał autolinking. W czystym React Native uruchom potem pod install w katalogu ios/.
W Expo nie trzeba dodawać nic więcej ani config pluginu: SDK to zwykły JavaScript na AsyncStorage, więc działa w Expo Go, w buildach deweloperskich i produkcyjnych. Wymaga React Native 0.60+ i React 16.8+.
npm install @influto/react-native-sdk
# AsyncStorage is a native module — install it in the app too
npm install @react-native-async-storage/async-storageKrok 2: zainicjuj raz, potem sprawdź atrybucję
Wywołaj initialize raz, jak najwcześniej, i poczekaj na jego zakończenie, zanim zrobisz cokolwiek innego. Przy błędzie (zły klucz, brak sieci) rzuca wyjątek: przechwyć go, zapisz w logu i działaj dalej. Następne uruchomienie spróbuje ponownie.
checkAttribution mówi, czy instalacja pochodzi z polecenia i z jakiego kodu. Rozstrzyga to raz na instalację, zapisuje wynik na urządzeniu i nie przerywa działania aplikacji: przy błędzie sieci zwraca attributed: false. Użyj go, by przywitać polecone osoby albo pokazać ofertę zapowiedzianą przez twórcę.
Klucz API (it_…, w Setup & SDK) działa zarówno w wersji deweloperskiej, jak i produkcyjnej. Nie trzymaj go w kodzie trafiającym do repozytorium, np. użyj pliku .env poza gitem, czytanego przez zmienne EXPO_PUBLIC_ w Expo. Typowy App.tsx w aplikacji z RevenueCat, po kolei:
import { useEffect } from 'react';
import Purchases from 'react-native-purchases';
import InfluTo from '@influto/react-native-sdk';
export default function App() {
useEffect(() => {
(async () => {
Purchases.configure({ apiKey: REVENUECAT_API_KEY }); // RevenueCat apps: configure it first
try {
await InfluTo.initialize({
apiKey: process.env.EXPO_PUBLIC_INFLUTO_API_KEY!,
appVersion: '1.4.0',
debug: __DEV__,
});
} catch (error) {
console.warn('InfluTo initialize failed', error); // retried on the next launch
return;
}
const attribution = await InfluTo.checkAttribution();
await InfluTo.identifyUser(await Purchases.getAppUserID());
})();
}, []);
// …
}Krok 3: dodaj pole na kod polecający
Wiele poleceń przychodzi jako kod podany na głos, a nie kliknięcie. applyCode(code) sprawdza kod i stosuje go, jeśli jest poprawny. Kody są przycinane i zamieniane na wielkie litery za Ciebie. Błędny kod zwraca valid: false oraz error_code, np. CODE_NOT_FOUND lub CODE_EXPIRED.
Możesz też użyć ReferralCodeInput z @influto/react-native-sdk/ui. Wstawia kod z instalacji przypisanej przez link, przyjmuje Twoje kolory, czcionki i przetłumaczone etykiety, a imię twórcy pokazuje tylko wtedy, gdy to włączysz.
// Validate, then apply a code the user typed
const result = await InfluTo.applyCode('FITGURU30');
if (result.valid && result.applied) {
// Unlock the offer
}
// Or drop in the ready-made UI:
import { ReferralCodeInput } from '@influto/react-native-sdk/ui';
<ReferralCodeInput onApplied={(result) => {/* ... */}} />Krok 4: podłącz zakupy — RevenueCat lub bezpośrednio przez sklep
InfluTo wypłaca prowizję tylko od zakupów zweryfikowanych w sklepie. Wybierz dokładnie jedną ścieżkę na platformę: iOS może działać bezpośrednio przez sklep, a Android zostać przy RevenueCat.
RevenueCat: w kodzie nie trzeba nic podłączać. Gdy zainstalowano react-native-purchases, SDK ustawia u subskrybenta influto_code i influto_referral, kiedy znajdzie polecenie lub zostanie użyty kod. Potem podłącz webhook w Setup & SDK, automatycznie przez tajny klucz RevenueCat v2 albo ręcznie.
Bezpośrednio przez sklep: zainstaluj expo-iap lub react-native-iap, dodaj dane dostępowe App Store i Google Play w Settings → Validation i przełącz platformę na tryb bezpośredni. initialize przechwytuje wtedy nowe zakupy i uzupełnia dotychczasowe, każdy zgłaszany raz. Ustaw autoCapture: false, jeśli wolisz sam wywoływać reportPurchase.
Pułapka w RevenueCat: atrybut zapisuje się raz, w chwili znalezienia polecenia, a zapis jest pomijany, jeśli RevenueCat nie jest jeszcze skonfigurowany. Skonfiguruj Purchases, potem initialize, potem checkAttribution, a identifyUser wywołaj z identyfikatorem użytkownika RevenueCat jako rozwiązaniem awaryjnym.
Pułapka przy płatnościach bezpośrednio przez sklep: jednorazowe produkty z Androida wpisz w oneTimeProductIds. Jeśli Twoja biblioteka IAP nie podaje ceny, zgłoś je sam z ceną i walutą, bo inaczej zostaną zapisane jako 0 $. Co SDK wykrywa samo:
| Pakiet | Co SDK z nim robi |
|---|---|
| react-native-purchases | Ustawia atrybuty RevenueCat influto_code i influto_referral, gdy znajdzie polecenie lub zostanie użyty kod |
| expo-iap lub react-native-iap | Przechwytuje zakupy w sklepie w aplikacjach działających bezpośrednio przez sklep (jeśli zainstalowano oba, używane jest expo-iap) |
| react-native-device-info | Dodaje markę i model urządzenia do śledzenia instalacji |
Uwagi o Expo i React Native
Większość problemów z integracją w React Native wynika z montowania komponentów i kolejności wywołań:
Expo Go jest w porządku, biblioteki sklepowe nie. Expo Go uruchamia SDK InfluTo, ale expo-iap, react-native-iap i RevenueCat zawierają kod natywny, więc testowe zakupy rób w buildzie deweloperskim. Automatyczne przechwytywanie w Expo Go po cichu nic nie robi, i to jest bezpieczne.
Inicjuj raz, w korzeniu aplikacji. Nie na ekranie, który montuje się wielokrotnie. identifyUser wywołuj raz przy logowaniu, a nie w kodzie renderowania.
AsyncStorage we własnym package.json. Inaczej jego moduł natywny nie zostanie podlinkowany, a SDK nie zapisze swojego stanu.
Krok 5: przetestuj, zanim zaprosisz twórców
Zakupy w sandboxie nie przenoszą pieniędzy ani nie zmieniają Twoich statystyk, więc test możesz powtarzać do woli:
- 1
Sprawdź, czy SDK się połączyło. Po pierwszym udanym initialize w Setup & SDK pojawi się „SDK connected” z platformą i wersją SDK. debug: __DEV__ loguje każdy krok.
- 2
Zasymuluj zakup. Symulacja zakupu w Setup & SDK wysyła testowy zakup z sandboxa przez prawdziwy potok InfluTo. Wpisz jeden ze swoich kodów, żeby zobaczyć, jak zostaje rozpoznany. Nigdy nie zalicza kroku konfiguracji.
- 3
Zainstaluj przez link twórcy. Dołącz do swojej kampanii drugim kontem twórcy, otwórz jego link polecający na urządzeniu testowym, zainstaluj build deweloperski i uruchom aplikację. Najpewniejszym testem jest wpisanie kodu.
- 4
Zrób zakup w sandboxie. Kup jako tester sandboxa lub TestFlight albo tester licencji Google Play. Integration log przełączony na Sandbox pokaże zakup przypisany do Twojego kodu.
clearAttribution() resetuje urządzenie przed kolejnym przebiegiem testu.
Albo zlecić to agentowi programistycznemu
Pracujesz w Claude Code, Codex lub Cursor? Podłącz serwer MCP InfluTo i poproś o integrację: agent dopasuje „expo” do tego SDK, napisze powyższe kroki i będzie sprawdzać influto_integration_status, aż pojawi się zakup w sandboxie z przypisaną atrybucją.
SDK afiliacyjne dla React Native: odpowiedzi.
Czy istnieje SDK afiliacyjne dla React Native?
Tak. @influto/react-native-sdk to pakiet npm na licencji MIT (kod źródłowy: github.com/influto/influto-react-native). Z jednej bazy kodu dodaje na iOS i Android wykrywanie instalacji z polecenia, kody polecające i przypisywanie zakupów. Wymaga React Native 0.60+ oraz @react-native-async-storage/async-storage.
Czy mogę uruchomić program poleceń w aplikacji Expo?
Tak, zarówno w managed, jak i bare Expo, bez config pluginu. SDK działa w Expo Go, w buildach deweloperskich i produkcyjnych. Przechwytywanie zakupów prosto ze sklepów korzysta z expo-iap lub react-native-iap, które wymagają buildu deweloperskiego, a nie Expo Go.
Czy potrzebuję RevenueCat?
Nie. Z RevenueCat (react-native-purchases) SDK oznacza subskrybenta tagiem, a InfluTo odczytuje webhook RevenueCat. Bez niego InfluTo weryfikuje każdy zakup bezpośrednio przez App Store Server API lub Google Play. Dla każdej platformy używaj dokładnie jednej ścieżki.
Jak użytkownicy wpisują kod polecający?
Wywołaj applyCode(code) z własnego pola albo użyj ReferralCodeInput z @influto/react-native-sdk/ui. Kody są przycinane z białych znaków i zamieniane na wielkie litery, wpisany kod ma pierwszeństwo przed dopasowaniem po kliknięciu linku, a 72-godzinne okno go nie dotyczy.
Ile to kosztuje?
0 $ miesięcznie. Za każdy zweryfikowany zakup płacisz ustaloną prowizję plus 10% tego samego przychodu (7%, 5% lub 3% przy większym wolumenie). Przedpłacony portfel zaczyna się od 50 $ i jest zwrotny. 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 buildzie.
Jeden pakiet npm, jedna ścieżka weryfikacji, zwrotny depozyt. 0 $ miesięcznie; 10% tylko od przychodu, który przyniosą twórcy.
Zacznij za darmo