Руководство · Capacitor, Ionic, Cordova, PWA
Добавьте партнёрскую или реферальную программу в приложение на Capacitor или Ionic.
@influto/web работает везде, где выполняется ваш код в WebView или браузере: Capacitor (Ionic React, Angular и Vue), Cordova, установленные PWA и Trusted Web Activities. Он следует тому же контракту, что и нативные SDK InfluTo, и добавляет способы точно определить реферала, доступные только в вебе.
Обновлено 1 ноября 2026 г.
Коротко
Установите @influto/web, а для Capacitor ещё @capacitor/device, @capacitor/preferences и @capacitor/app. Один раз вызовите InfluTo.initialize, когда платформа готова, и передайте адаптеры Capacitor. Вызовите listenForCapacitorLaunchUrls(InfluTo), чтобы диплинки закрепляли рефералов, затем checkAttribution и identifyUser. На Android передайте Play Install Referrer в captureInstallReferrer — так совпадение будет точным. Для покупок передайте привязку RevenueCat, например revenueCatCapacitor(Purchases), а без RevenueCat — источник покупок, например capgoNativePurchasesSource для @capgo/native-purchases. Закладывайте полдня, большая часть уйдёт на покупки.
Почему в приложениях на WebView больше рефералов определяется точно
Нативное приложение получает точное совпадение по введённому коду, а переход через магазин сопоставляется уже после. Приложение на WebView может получить сам код тремя способами:
URL запуска. Укажите Settings → General → Web app URL, и реферальные ссылки будут отправлять туда посетителей с компьютера (и с телефона, если для их платформы нет страницы в магазине), добавляя influto_code и influto_click. initialize читает оба параметра и очищает адресную строку.
Диплинки. listenForCapacitorLaunchUrls(InfluTo) передаёт SDK URL холодного старта и каждое событие appUrlOpen; в Cordova вызовите InfluTo.handleLaunchUrl(url).
Play Install Referrer. Ссылки InfluTo на Google Play несут код и клик в параметре referrer. Прочитайте его при первом запуске плагином Install Referrer и передайте в captureInstallReferrer.
Если код не передан, InfluTo переходит к сопоставлению по клику на ссылку в течение 72 часов. Характеристики устройств при этом не сравниваются.
Шаг 1: установка
Добавьте пакет. В Capacitor три плагина необязательны, но рекомендуются: @capacitor/device — данные об устройстве, @capacitor/preferences — хранилище, которое переживает сброс WebView, @capacitor/app — диплинки. После добавления выполните npx cap sync. Если плагинов нет, SDK использует настройки браузера по умолчанию.
Нет сборщика? Подключите сборку для script-тега с https://cdn.jsdelivr.net/npm/@influto/web@1/dist/index.global.js и используйте window.InfluTo. В ней только базовый SDK, а вспомогательным функциям из подпутей нужен сборщик.
npm install @influto/web
# Capacitor / Ionic apps (device info, storage, deep links):
npm install @capacitor/device @capacitor/preferences @capacitor/appШаг 2: инициализируйте один раз и в нужный момент
Вызовите initialize один раз в корне приложения и дождитесь результата. При сбое он выбрасывает InfluToApiError (status, body): перехватите ошибку, запишите в лог и продолжайте. При следующем запуске SDK попробует снова. В таблице ниже — когда вызывать initialize в каждой среде.
API-ключ (it_…, в разделе Setup & SDK) подходит и для разработки, и для продакшена. Храните его в .env.local, исключённом из git, и читайте через сборщик. Типичный запуск приложения на Capacitor с RevenueCat по порядку:
import InfluTo from '@influto/web';
import { capacitorAdapters, listenForCapacitorLaunchUrls } from '@influto/web/capacitor';
import { revenueCatCapacitor } from '@influto/web/revenuecat';
import { Purchases } from '@revenuecat/purchases-capacitor';
export async function startInfluTo() {
await Purchases.configure({ apiKey: 'appl_…' }); // RevenueCat apps: configure it first
try {
await InfluTo.initialize({
apiKey: import.meta.env.VITE_INFLUTO_API_KEY,
appVersion: '1.4.0',
...(await capacitorAdapters()),
revenueCat: revenueCatCapacitor(Purchases),
});
} catch (error) {
console.warn('InfluTo initialize failed', error); // retried on the next launch
return;
}
await listenForCapacitorLaunchUrls(InfluTo); // deep links → referral claim
const attribution = await InfluTo.checkAttribution();
const { appUserID } = await Purchases.getAppUserID();
await InfluTo.identifyUser(appUserID);
}| Среда | Когда вызывать initialize |
|---|---|
| Capacitor / Ionic | При старте приложения, когда платформа готова. Не внутри страницы Ionic: её могут кэшировать и открывать повторно |
| Cordova | После deviceready: сначала await whenDeviceReady() из @influto/web/cordova, затем передайте ...cordovaAdapters() в initialize |
| PWA / браузер | При загрузке страницы |
Шаг 3: точно определяйте установки из Play Store
На Android прочитайте строку referrer при первом запуске через @capgo/capacitor-install-referrer или cordova-play-install-referrer и передайте её после initialize, до checkAttribution. Код, полученный позже, отменяет прежний ответ «органика», а установка с атрибуцией остаётся за своим автором.
await InfluTo.captureInstallReferrer(referrer); // the raw referrer string from the plugin
const attribution = await InfluTo.checkAttribution();Шаг 4: дайте пользователям ввести код
applyCode(code) проверяет код, введённый пользователем, и применяет его, если он действителен. Пробелы по краям убираются, буквы переводятся в верхний регистр. Для недействительного кода возвращается valid: false и error_code, например CODE_NOT_FOUND или CODE_EXPIRED.
В React и Ionic React ReferralCodeInput из @influto/web/react — простая форма без стилей: она подставляет код из ссылки и применяет его при отправке. В Angular, Vue или без фреймворка соберите поле на основе applyCode.
Шаг 5: подключите покупки
InfluTo платит комиссию только за покупки, проверенные в магазине. Выберите один путь для каждой платформы:
RevenueCat: передайте привязку как revenueCat: revenueCatCapacitor(Purchases) для @revenuecat/purchases-capacitor 7.5.10+, revenueCatCordova(window.Purchases) для cordova-plugin-purchases или revenueCatJs для purchases-js. Подключите её до checkAttribution: атрибут записывается в момент, когда реферал найден. Неудачные записи повторяются до 3 раз.
Напрямую через магазин: передайте purchaseSource (см. таблицу). Если в Settings → Validation для приложения выбран режим store-direct, initialize сообщает о новых покупках и дозаписывает уже совершённые, каждую один раз.
На iOS для store-direct нужна подписанная транзакция StoreKit 2. capgoNativePurchasesSource передаёт её дальше, а с cordova-plugin-purchase проверьте, что ваша настройка её отдаёт. На Android эти источники не передают цену, поэтому разовые товары отправляйте сами, с price и currency, иначе они запишутся как $0.
В TWA у Digital Goods API нет события покупки, поэтому после каждой оплаты вызывайте InfluTo.syncExistingPurchases(). Цену digitalGoodsSource найдёт сам.
| Среда | Плагин покупок | Источник |
|---|---|---|
| Capacitor | @capgo/native-purchases | capgoNativePurchasesSource(NativePurchases) из /capacitor |
| Cordova | cordova-plugin-purchase v13 | cordovaPurchaseSource(CdvPurchase.store) из /cordova |
| TWA в Google Play | Digital Goods API (Chrome 101+) | digitalGoodsSource() из /pwa |
Подводные камни платформ
Большинство неудачных интеграций в WebView сводится к одной из этих причин:
Хранилище Capacitor. Если установлен @capacitor/preferences, SDK хранит состояние там. localStorage в WebView стирается при смене androidScheme или iosScheme.
ionic serve. В веб-сборке для разработки плагин RevenueCat для Capacitor — заглушка, поэтому запись атрибутов там ничего не делает. Тестируйте на устройстве.
Cordova по умолчанию блокирует API. В новом шаблоне нужно добавить запись access origin для https://influ.to в config.xml и connect-src https://influ.to в Content-Security-Policy. RevenueCat объявил свой плагин для Cordova устаревшим, поэтому для нового приложения лучше выбрать Capacitor.
Браузеры и PWA. В браузере или PWA всегда передавайте platform (ios или android) в reportPurchase: если SDK определяет веб, он не угадывает платформу. Веб-приложения на домашнем экране iOS не могут продавать встроенные покупки, но атрибуция работает.
Шаг 6: проверьте
Тестовые покупки не двигают деньги и не меняют вашу статистику:
- 1
Загляните в Setup & SDK. После первого успешного initialize там появится «SDK connected» с платформой, @influto/web и версией SDK. Флаг debug: true записывает в лог каждый шаг.
- 2
Имитируйте покупку. Кнопка Simulate a purchase в Setup & SDK отправляет тестовую sandbox-покупку через настоящий конвейер InfluTo. Введите один из своих кодов, чтобы увидеть, как он сработает.
- 3
Проверьте установку по реферальной ссылке на устройстве. Откройте реферальную ссылку автора на тестовом устройстве, установите приложение, запустите его и совершите покупку как sandbox-, TestFlight- или license-тестер. Integration log в режиме Sandbox покажет покупку с атрибуцией.
clearAttribution() стирает сохранённую атрибуцию, код и код запуска, чтобы пройти проверку заново. Если через MCP подключён кодовый агент, он может выполнить эти проверки за вас.
Партнёрский SDK для Capacitor и Ionic: ответы.
Есть ли партнёрский SDK для Capacitor и Ionic?
Да. Это @influto/web в npm, с подпутями для Capacitor, Cordova, PWA, привязок RevenueCat и React. У него нет зависимостей, он работает в любом браузере или WebView с поддержкой ES2019.
Работает ли он с Ionic Angular и Ionic Vue?
Да. SDK не привязан к фреймворку, а Ionic React, Angular и Vue работают на Capacitor. Готовое поле для кода есть только для React (@influto/web/react), поэтому в Angular или Vue поле собирают на основе applyCode.
Можно ли точно определять установки из Google Play?
Да. Ссылки InfluTo на Google Play передают код в Install Referrer, подписанном Play. Прочитайте его через @capgo/capacitor-install-referrer или cordova-play-install-referrer и передайте в captureInstallReferrer перед checkAttribution.
Какие плагины покупок поддерживаются?
Для прямой работы со сторами: @capgo/native-purchases в Capacitor, cordova-plugin-purchase v13 в Cordova и Digital Goods API в TWA на Google Play. Для RevenueCat: @revenuecat/purchases-capacitor 7.5.10+, @revenuecat/purchases-js 1.4.0+ или cordova-plugin-purchases, а также любой объект с методом setAttributes.
Работает ли он в PWA?
Да. Укажите Web app URL, чтобы реферальные ссылки передавали код в ваше приложение. Атрибуция и коды, введённые вручную, работают в любом браузере. TWA в Google Play может продавать через Play Billing с помощью digitalGoodsSource(). Веб-приложения на домашнем экране iOS не могут продавать встроенные покупки.
Сколько это стоит?
0 $ в месяц. За каждую подтверждённую покупку вы платите установленную вами комиссию плюс 10% с той же выручки (7%, 5% или 3% при больших объёмах). Предоплаченный кошелёк начинается с 50 $, и его можно вернуть. InfluTo платит авторам ежемесячно через Stripe Connect в 33 странах, как только они заработают 20 $.
Добавьте реферальные коды в следующую сборку на Capacitor.
Один npm-пакет, один путь проверки, возвращаемый депозит. 0 $ в месяц; 10% только с выручки, которую приносят авторы.
Начать бесплатно