Руководство · React Native и Expo
Добавьте партнёрскую или реферальную программу в приложение на React Native.
@influto/react-native-sdk работает в managed Expo и в bare React Native, на iOS и Android. Он показывает, какой автор привёл установку, принимает реферальные коды, введённые вручную, и помогает проверить каждую покупку через RevenueCat или напрямую в Apple и Google.
Обновлено 1 ноября 2026 г.
Коротко
Установите @influto/react-native-sdk и @react-native-async-storage/async-storage, один раз вызовите InfluTo.initialize в корне приложения, затем checkAttribution и identifyUser. С RevenueCat это весь код: если установлен react-native-purchases, SDK записывает подписчику атрибут influto_code, а остальное делает вебхук RevenueCat. Без RevenueCat установите expo-iap или react-native-iap, и SDK сам фиксирует покупки в магазине. Config plugin для Expo не нужен. Закладывайте полдня.
Что SDK делает в приложении на React Native
Один пакет охватывает iOS, Android и все способы работы с Expo. У него три задачи:
Находит автора, который привёл установку. checkAttribution отвечает один раз на установку. Введённый код даёт точное совпадение; иначе сопоставление по клику связывает установку с недавним переходом по ссылке автора в течение 72 часов. Без IDFA и без запроса ATT.
Принимает реферальные коды. applyCode или готовое поле ReferralCodeInput подходят для упоминаний в подкастах и видео, где никто не переходит по ссылке.
Связывает покупки с рекомендацией. С RevenueCat он помечает подписчика; при работе напрямую через магазин передаёт покупку, подписанную магазином, чтобы InfluTo проверил её в Apple или Google. Комиссия появляется только после этой проверки.
Шаг 1: установите пакет
Добавьте SDK и AsyncStorage, в котором хранится локальное состояние SDK. AsyncStorage — нативный модуль, поэтому он должен быть в зависимостях самого приложения, иначе не сработает autolinking. В bare React Native после этого выполните pod install в папке ios/.
В Expo больше ничего добавлять не нужно, config plugin тоже: SDK — это обычный JavaScript поверх AsyncStorage, поэтому он работает в Expo Go, в development- и production-сборках. Нужны React Native 0.60+ и 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-storageШаг 2: инициализируйте один раз и проверьте атрибуцию
Вызовите initialize один раз, как можно раньше, и дождитесь результата, прежде чем делать что-то ещё. При сбое (неверный ключ, нет сети) он выбрасывает ошибку: перехватите её, запишите в лог и продолжайте; при следующем запуске будет новая попытка.
checkAttribution сообщает, пришла ли установка по рекомендации и с каким кодом. Решение принимается один раз на установку, хранится на устройстве и не ломает приложение: при сетевой ошибке вернётся attributed: false. Используйте это, чтобы поприветствовать приглашённых пользователей или показать предложение, о котором объявил их автор.
Ключ API (it_…, на странице Setup & SDK) подходит и для разработки, и для продакшена. Не храните его в коммитимом коде: например, положите в .env, добавленный в .gitignore, и читайте через переменные EXPO_PUBLIC_ в Expo. Типичный App.tsx для приложения с RevenueCat, по порядку:
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());
})();
}, []);
// …
}Шаг 3: добавьте поле для реферального кода
Многие рекомендации приходят как код, названный вслух, а не как переход по ссылке. applyCode(code) проверяет код и применяет его, если он действителен; пробелы по краям обрезаются, а регистр приводится к верхнему автоматически. Недействительный код возвращает valid: false и error_code, например CODE_NOT_FOUND или CODE_EXPIRED.
Или подключите ReferralCodeInput из @influto/react-native-sdk/ui. Он подставляет код, если установка пришла по ссылке, подхватывает ваши цвета, шрифты и переведённые подписи и показывает имя автора, только если вы это включите.
// 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) => {/* ... */}} />Шаг 4: подключите покупки — через RevenueCat или напрямую через магазин
InfluTo платит комиссию только с покупок, проверенных магазином. Выберите ровно один путь для каждой платформы: iOS может работать напрямую через магазин, а Android — оставаться на RevenueCat.
RevenueCat: в коде подключать нечего. Если установлен react-native-purchases, SDK записывает подписчику influto_code и influto_referral, когда находит рекомендацию или применяется код. Затем подключите вебхук на странице Setup & SDK: автоматически, с секретным ключом RevenueCat v2, или вручную.
Напрямую через магазин: установите expo-iap или react-native-iap, добавьте данные для App Store и Google Play в Settings → Validation и переключите платформу в режим работы напрямую через магазин. Тогда initialize фиксирует новые покупки и добирает прежние, каждую по одному разу. Если хотите сами вызывать reportPurchase, задайте autoCapture: false.
Подвох с RevenueCat: атрибут записывается один раз, когда найдена рекомендация, и запись пропускается, если RevenueCat ещё не настроен. Сначала настройте Purchases, затем вызовите initialize, затем checkAttribution, а identifyUser вызовите с app user ID из RevenueCat как запасной вариант.
Подвох при работе напрямую через магазин: разовые продукты Android перечислите в oneTimeProductIds и, если ваша IAP-библиотека не отдаёт цену, передавайте их сами — с ценой и валютой. Иначе они запишутся как 0 $. Что SDK подхватывает сам:
| Пакет | Что SDK с ним делает |
|---|---|
| react-native-purchases | Записывает атрибуты RevenueCat influto_code и influto_referral, когда находит рекомендацию или применяется код |
| expo-iap или react-native-iap | Фиксирует покупки в магазине в приложениях, работающих напрямую через магазин (если установлены оба, используется expo-iap) |
| react-native-device-info | Добавляет марку и модель устройства в данные об установке |
Заметки про Expo и React Native
Большинство проблем с интеграцией в React Native связаны с монтированием и порядком вызовов:
Expo Go подходит, библиотеки магазинов — нет. В Expo Go SDK InfluTo работает, но expo-iap, react-native-iap и RevenueCat содержат нативный код, поэтому тестовые покупки делайте в development-сборке. Автофиксация в Expo Go молча ничего не делает, и это безопасно.
Инициализируйте один раз, в корне. Не в экране, который монтируется снова и снова. Вызывайте identifyUser один раз при входе в аккаунт, а не из рендера.
AsyncStorage — в вашем package.json. Иначе его нативный модуль не подключится, и SDK не сможет хранить своё состояние.
Шаг 5: проверьте всё, прежде чем приглашать авторов
Покупки в песочнице не двигают деньги и не меняют вашу статистику, поэтому тест можно повторять сколько угодно:
- 1
Убедитесь, что SDK подключился. После первого успешного initialize на странице Setup & SDK появится «SDK connected» с платформой и версией SDK; с debug: __DEV__ в лог пишется каждый шаг.
- 2
Имитируйте покупку. Кнопка «Simulate a purchase» на странице Setup & SDK отправляет тестовую покупку из песочницы через настоящий конвейер InfluTo. Введите один из своих кодов, чтобы увидеть, как он распознаётся; шаг настройки при этом не засчитывается.
- 3
Установите приложение по ссылке автора. Присоедините второй аккаунт автора к своей кампании, откройте его реферальную ссылку на тестовом устройстве, установите development-сборку и запустите. Надёжнее всего проверять вводом кода.
- 4
Сделайте покупку в песочнице. Купите через тестера песочницы или TestFlight либо через license tester Google Play. В Integration log, переключённом на Sandbox, покупка отобразится как привязанная к вашему коду.
clearAttribution() сбрасывает состояние устройства для нового прогона.
Или поручите это ИИ-агенту
Работаете в Claude Code, Codex или Cursor? Подключите MCP-сервер InfluTo и попросите выполнить интеграцию: агент сопоставит «expo» с этим SDK, напишет шаги выше и будет проверять influto_integration_status, пока не придёт тестовая покупка с атрибуцией.
Партнёрский SDK для React Native: ответы.
Есть ли партнёрский SDK для React Native?
Да. @influto/react-native-sdk — npm-пакет под лицензией MIT (исходный код: github.com/influto/influto-react-native). Из одной кодовой базы он добавляет в iOS и Android определение установок по рекомендации, реферальные коды и атрибуцию покупок. Нужны React Native 0.60+ и @react-native-async-storage/async-storage.
Можно ли запустить реферальную программу в приложении на Expo?
Да, и в managed, и в bare Expo, без config-плагина. SDK работает в Expo Go, development-сборках и production-сборках. Для прямого учёта покупок в сторах используется expo-iap или react-native-iap. Им нужна development-сборка, в Expo Go они не работают.
Нужен ли RevenueCat?
Нет. С RevenueCat (react-native-purchases) SDK помечает подписчика, а InfluTo читает вебхук RevenueCat. Без него InfluTo проверяет каждую покупку напрямую через App Store Server API или Google Play. Для каждой платформы используйте ровно один путь.
Как пользователи вводят реферальный код?
Вызовите applyCode(code) из собственного поля или используйте ReferralCodeInput из @influto/react-native-sdk/ui. Пробелы по краям обрезаются, регистр приводится к верхнему. Введённый код важнее совпадения по клику на ссылку, и 72-часовое окно на него не распространяется.
Сколько это стоит?
0 $ в месяц. За каждую проверенную покупку вы платите установленную вами комиссию плюс 10% с той же выручки (7%, 5% или 3% при больших объёмах). Предоплаченный кошелёк начинается с 50 $ и подлежит возврату. InfluTo выплачивает авторам раз в месяц через Stripe Connect в 33 странах, как только они заработают 20 $.
Добавьте реферальные коды в следующую сборку.
Один npm-пакет, один путь проверки, возвращаемый депозит. 0 $ в месяц; 10% — только с выручки, которую приносят авторы.
Начать бесплатно