Посібник · Flutter
Додайте партнерську чи реферальну програму у свій застосунок на Flutter.
Пакет influto визначає встановлення за запрошенням і приймає введені реферальні коди на iOS та Android. Покупки потрапляють в InfluTo через RevenueCat або напряму з App Store і Google Play — за допомогою додаткового пакета influto_iap.
Оновлено 1 листопада 2026 р.
Коротко
Виконайте flutter pub add influto, один раз викличте InfluTo.instance.initialize на старті, далі checkAttribution та identifyUser. З RevenueCat передайте revenueCatHook, що викликає Purchases.setAttributes: у Flutter немає автоматичного тегування, тож без хука атрибут ніхто не встановить. Без RevenueCat додайте influto_iap і після initialize увімкніть InfluToPurchaseObserver. Він передає нові покупки й донаповнює раніші через плагін in_app_purchase. Потрібні Flutter 3.22+ і Dart 3.4+. Закладіть пів дня, більшість із них піде на покупки.
Які пакети вам потрібні
На pub.dev є два пакети, обидва з ліцензією MIT, код — github.com/influto/influto-flutter:
influto — завжди. Атрибуція, реферальні коди, ідентифікація користувача, коди безкоштовного доступу та ручна передача покупок. Єдині залежності — http і shared_preferences.
influto_iap — лише для прямого збору зі стору. Додайте його, якщо застосунок не використовує RevenueCat і продає через плагін in_app_purchase: пакет фіксує покупки автоматично. Застосункам із RevenueCat на purchases_flutter він не потрібен.
Усе працює через InfluTo.instance, статичних викликів немає. Встановлення:
flutter pub add influto
# optional: automatic store-direct purchase capture
flutter pub add influto_iapКрок 1: ініціалізація без затримки першого кадру
Викличте initialize один раз на старті й дочекайтеся його, перш ніж викликати щось інше: доки він не завершився успішно, checkAttribution і reportPurchase кидають InfluToException. У разі помилки (хибний ключ, немає мережі) метод кидає виняток, тож перехопіть його, запишіть у лог і працюйте далі. Наступного запуску спроба повториться.
Не блокуйте через нього перший кадр: налаштуйте RevenueCat, викличте runApp, а потім запустіть InfluTo через unawaited, як нижче. API-ключ (it_…, у розділі Setup & SDK) передайте під час збірки через --dart-define=INFLUTO_API_KEY=it_… і читайте через String.fromEnvironment.
Далі checkAttribution скаже, чи було встановлення за запрошенням і з яким кодом. Відповідь визначається один раз на встановлення й зберігається на пристрої. Якщо сталася помилка мережі, повертається attributed: false, і нічого не зберігається. Типовий 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);
}Крок 2: дозвольте користувачам вводити код
applyCode(code) перевіряє код і застосовує його, якщо він дійсний; result.applied показує, чи так сталося. Код обрізається від пробілів і переводиться у верхній регістр, а недійсний повертає valid: false з errorCode, наприклад CODE_NOT_FOUND або CODE_EXPIRED.
Готовий варіант — віджет ReferralCodeInput (Material). Він перевіряє код під час введення, застосовує його по тапу, підставляє заздалегідь для встановлення за посиланням і приймає ваші перекладені тексти. Ім'я автора він показує, лише якщо ви задасте showReferrerName.
Крок 3: підключіть покупки
InfluTo нараховує комісію лише за покупки, підтверджені стором. Для кожної платформи оберіть один шлях:
RevenueCat (purchases_flutter): передайте в InfluToConfig revenueCatHook, що викликає Purchases.setAttributes, як у main.dart вище. SDK викликає його один раз, коли знайдено запрошення або застосовано код, з influto_code та influto_referral. Потім підключіть вебхук RevenueCat у Setup & SDK.
Напряму зі стору (in_app_purchase): додайте influto_iap, створіть один InfluToPurchaseObserver і ввімкніть його після завершення initialize. Він працює, лише коли для застосунку в Settings → Validation вибрано прямий збір зі стору, тож та сама збірка безпечна й для застосунку з RevenueCat.
Без хука жоден код не встановлює атрибут RevenueCat у Flutter: на відміну від React Native, автоматичного тегування тут немає. Налаштуйте RevenueCat до checkAttribution і викличте identifyUser з app user ID RevenueCat. InfluTo використовує його як запасний варіант, коли подія приходить без атрибута.
Що observer робить у вашому застосунку: завершує відкладені покупки (completePurchase), щоб магазин не надсилав їх повторно й не повертав кошти; його зворотне заповнення викликає restorePurchases(), тож ваш власний слухач теж бачить відновлені покупки на старті (enable(backSync: false) це вимикає); а на iOS перемикає in_app_purchase на StoreKit 2, який потрібен для store-direct.
Одноразові продукти Android додаються в oneTimeProductIds в observer, а не в InfluToConfig. Щоб повідомляти про покупки самостійно, задайте autoCapture: false, пропустіть observer і викличте reportPurchase із підписаною транзакцією StoreKit 2 або purchaseToken з Play. Налаштування observer:
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Крок 4: перевірте все від початку до кінця
Покупки в пісочниці не переміщують гроші й не змінюють вашу статистику:
- 1
Перевірте Setup & SDK. Після першого успішного initialize там з’явиться «SDK connected» із платформою та версією SDK; debug: true виводить кожен крок через debugPrint.
- 2
Симулюйте покупку. Simulate a purchase на сторінці Setup & SDK надсилає тестову покупку з пісочниці через справжній конвеєр InfluTo. Введіть один зі своїх кодів, щоб побачити, як він розпізнається.
- 3
Встановіть через реферальне посилання. Приєднайтеся до своєї кампанії з другого акаунта автора, відкрийте його посилання на тестовому пристрої, встановіть і запустіть застосунок. Найнадійніший тест — ввести код вручну.
- 4
Купіть у пісочниці. Скористайтеся тестувальником TestFlight чи sandbox (на iOS зі store-direct спершу переключіть середовище Apple на Sandbox) або ліцензійним тестувальником Google Play. Журнал Integration, перемкнений на Sandbox, показує покупку з атрибуцією. enable() повертає кількість отриманих, надісланих і невдалих записів для налагодження.
clearAttribution() скидає пристрій для наступного прогону.
Нотатки про Flutter
Три речі, на яких найчастіше спотикаються під час інтеграції у Flutter:
Порядок важливий. Налаштуйте RevenueCat, потім initialize, потім checkAttribution. Вмикайте observer influto_iap лише після завершення initialize, інакше він лишиться вимкненим.
const-конфіги. InfluToConfig має const-конструктор, але замикання не є константою, тож прибирайте const, коли передаєте revenueCatHook.
Ідентифікуйте один раз. Викликайте identifyUser один раз за вхід, найкраще в першій сесії користувача, а не з build.
Або доручіть це кодинг-агентові
Підключіть MCP-сервер InfluTo до Claude Code, Codex або Cursor і попросіть інтеграцію: агент зіставить Dart-проєкт із цим SDK, напише код для обраного вами шляху валідації та перевірятиме influto_integration_status, доки не надійде покупка з пісочниці з атрибуцією.
Партнерський SDK для Flutter: відповіді.
Чи є партнерський SDK для Flutter?
Так. influto на pub.dev (MIT, код на github.com/influto/influto-flutter) додає у Flutter-застосунки на iOS і Android виявлення встановлень за рекомендацією, реферальні коди та атрибуцію покупок. Потрібні Flutter 3.22+ і Dart 3.4+.
Які реферальні інструменти підтримують Flutter?
Пакети для Flutter випускає кілька партнерських платформ. Пакет InfluTo охоплює атрибуцію, типізовані коди з готовим віджетом ReferralCodeInput, тегування RevenueCat через хук і автоматичне захоплення store-direct через influto_iap. Він має єдиний протокол обміну даними з SDK InfluTo для iOS, Android, React Native і вебу.
Чи працює це з purchases_flutter (RevenueCat)?
Так. Передайте revenueCatHook, що викликає Purchases.setAttributes, спершу налаштуйте RevenueCat і підключіть вебхук RevenueCat. Застосунку на RevenueCat influto_iap не потрібен.
Чи заважатиме influto_iap моєму слухачу покупок?
Він завершує відкладені покупки й на старті запускає відновлення для зворотного заповнення, тож ваш слухач теж бачить відновлені покупки. Якщо цього не хочете, викличте enable(backSync: false). Контент, як і раніше, видавайте зі свого слухача purchaseStream.
Скільки це коштує?
0 $ на місяць. За кожну підтверджену покупку ви платите встановлену комісію плюс 10% від тієї самої виручки (7%, 5% або 3% за великих обсягів). Передплачений гаманець починається від 50 $ і підлягає поверненню. InfluTo виплачує авторам щомісяця через Stripe Connect у 33 країнах, щойно вони заробили 20 $.
Додайте реферальні коди у наступну збірку Flutter.
Один пакет, один шлях валідації, депозит із поверненням. 0 $ на місяць; 10% лише з виручки, яку приносять автори.
Почати безкоштовно