Перейти к содержимому

Руководство · 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-purchasescapgoNativePurchasesSource(NativePurchases) из /capacitor
Cordovacordova-plugin-purchase v13cordovaPurchaseSource(CdvPurchase.store) из /cordova
TWA в Google PlayDigital 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. 1

    Загляните в Setup & SDK. После первого успешного initialize там появится «SDK connected» с платформой, @influto/web и версией SDK. Флаг debug: true записывает в лог каждый шаг.

  2. 2

    Имитируйте покупку. Кнопка Simulate a purchase в Setup & SDK отправляет тестовую sandbox-покупку через настоящий конвейер InfluTo. Введите один из своих кодов, чтобы увидеть, как он сработает.

  3. 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% только с выручки, которую приносят авторы.

Начать бесплатно