Unolink SDK
Ссылки показывают, кто нажал. SDK показывает, что было дальше: установки, онбординг, просмотры пейволла, регистрации, пробные периоды и покупки, по каждой ссылке и кампании. А на Android он ещё и открывает приложение на нужном экране после установки по ссылке.
У него открытый исходный код, подключение занимает около пяти минут, и он доступен на тарифе Pro и выше.
- Android: Kotlin или Java, Android 6.0+.
- iOS: Swift или Objective-C, iOS 13+.
- React Native и Expo: React Native 0.79+, dev-сборки Expo.
- Flutter: Flutter 3.22+, Android и iOS.
Исходный код: github.com/unolink-dev/unolink-sdk.
Быстрый старт
Выберите платформу. Выполните шаги сами или скопируйте один промпт в своего ИИ-ассистента. Внутри панели (приложение → SDK) те же шаги содержат ваш настоящий ключ, а проверка статуса становится зелёной, когда приходит ваша первая установка. Здесь показывается демо.
ulk_…в приложении → НастройкиШаг 1: Установите пакет
app/build.gradle.kts → dependencies { }Maven Central уже есть в каждом новом Android-проекте, так что этой одной строки достаточно. Затем синхронизируйте Gradle.
dependencies {ДокументацияРуководство по настройке AndroidШаг 2: Запустите его с вашим ключом
Ваш класс Application → onCreate()Настройте один раз, до всего остального. Ещё нет класса Application? Создайте этот и добавьте android:name=".MyApp" в <application> в AndroidManifest.xml.
class MyApp : Application() { override fun onCreate() { super.onCreate() Unolink.configure(this, "ulk_…") } }Шаг 3: Отметьте шаги воронки
Одна строка в каждый важный момент. Из них складываются шаги «Воронки» и «Путей».
Unolink.onboardingStep("goal") // as each onboarding screen appears Unolink.onboardingCompleted() Unolink.paywallViewed("onboarding") Unolink.signUp("email") // a new account Unolink.signIn("apple") // a returning user signed in Unolink.signUpSkipped() // "continue as guest" Unolink.connectRevenueCat { Purchases.sharedInstance.appUserID } // with RevenueCat, once Unolink.setUserId(user.id) // without RevenueCatВызовШаг воронкиКогдаonboardingStep(step)Вкладка «Онбординг»При появлении каждого экрана онбординга (не по его кнопке). Показывает, на каком экране люди уходят. Бесплатно: не входит в ваши события SDK.onboardingCompleted()ОнбордингСразу после последнего экрана онбординга, до пейволла или регистрации, которые идут за нимpaywallViewed(placement)ПейволлКаждый раз, когда появляется пейволл. Placement указывает, какой именно («onboarding», «settings»…)signUp(method)РегистрацияСразу после создания нового аккаунтаsignIn(method)ВернувшиесяКогда кто-то входит в уже существующий аккаунт (SDK 0.3.0+)signUpSkipped()Продолжили как гостьКогда кто-то нажимает «продолжить как гость» вместо создания аккаунта (SDK 0.3.2+)connectRevenueCat { } / setUserId(id)Связывает покупкиС RevenueCat: connectRevenueCat, один раз при запуске (SDK 0.3.2+), поддерживает актуальный app user ID RevenueCat, включая гостей. Иначе setUserId с вашим собственным ID пользователя, null при выходеИспользуете RevenueCat? Подключите его в «Настройки» → RevenueCat, вызывайте connectRevenueCat вместо setUserId (SDK 0.3.2+) и не добавляйте вызовы для пробных периодов и покупок. Пробные периоды, покупки, продления и возвраты придут сами.Шаг 4: Открывайте диплинки из ваших ссылок
Ваша первая Activity или место, где вы управляете навигациейКогда кто-то устанавливает приложение по ссылке с диплинком, Unolink передаёт его вам при первом запуске. Отправьте человека сразу туда.
Unolink.setDeferredDeepLinkListener { link -> // link.deepLink = "/promo/3for2", link.params["offer"] = "3for2" navigate(link.deepLink) Unolink.consumeDeferredDeepLink() }ДокументацияОтложенные диплинки на AndroidШаг 5: Проверьте, что всё работает
Запустите debug-сборку на телефоне или эмуляторе и один раз откройте приложение. Через несколько секунд проверка станет зелёной.
- Debug-сборки и эмуляторы считаются тестовыми устройствами: включите Учитывать тестовые устройства в «Воронке» и «Путях», чтобы их увидеть.
- Ничего не появляется? Настройте с
UnolinkOptions(logLevel = LogLevel.DEBUG)и ищитеUnolinkв логах.
Как это работает
- Вы создаёте ключ SDK в панели: приложение → Настройки → Ключи SDK → Новый ключ. Ключ публичный: он поставляется внутри вашего приложения и может отправлять данные только для этого одного приложения.
- При первом запуске SDK создаёт случайный ID установки и регистрирует установку. На Android он также читает реферер установки Google Play, который сообщает, с какой ссылки Unolink пришла установка.
- Ваше приложение вызывает одну строку на каждом шаге воронки: онбординг завершён, показан пейволл, создан аккаунт. Три события SDK добавляет сам: первое открытие, начало сессии и уход приложения в фон.
- События ждут на устройстве и отправляются небольшими пакетами в фоне. Нет сети? Они ждут и отправляются повторно. SDK никогда не блокирует ваше приложение и никогда не выбрасывает исключений.
Где видны данные
Откройте приложение в панели:
- Воронка: сколько установок дошло до каждого шага, по каждой ссылке. Создавайте сколько угодно воронок (Новая воронка), у каждой свои шаги; «Пути» показывают ту, которую вы выберете.
- «Пути»: каждая установка в виде анонимного кода, от ссылки, которая её привела, до покупки. Фильтруйте по платформе, источнику и результату или нажмите на шаг, чтобы увидеть только тех, кто до него дошёл. Зелёная точка показывает, кто сейчас в приложении (активен за последние 5 минут), а вверху — их число.
- Отчёт: что работает, где вы теряете людей и что попробовать дальше. Фиксированные правила на ваших собственных цифрах; для каждого вывода показано, как он получен.
Debug-сборки, сборки TestFlight и Xcode, сборки Android, установленные из Android Studio или через adb, установки, сделавшие покупку в песочнице, и сборки, которые вы пометили как тестовые, считаются тестовыми устройствами. Они скрыты, пока вы не включите Учитывать тестовые устройства. См. Тестирование.
Покупки
Если ваше приложение использует RevenueCat, подключите его и не отправляйте покупки из приложения: RevenueCat
сам сообщает о пробных периодах, покупках, продлениях, отменах и возвратах. Сообщайте собственный app user ID RevenueCat (в том
числе для гостей), чтобы они привязывались к нужной установке: connectRevenueCat делает это одной строкой (SDK 0.3.2 и новее), или
вызывайте с ним setUserId.
Без RevenueCat вызывайте trialStarted и purchase сами. См. События.
Конфиденциальность
- Без фингерпринтинга, без IDFA и Google Advertising ID, без запроса App Tracking Transparency.
- IP-адреса никогда не хранятся. Страна определяется на границе сети.
- Ваши ID пользователей хранятся только в виде одностороннего хеша, который у каждого вашего приложения свой.
- В ярлыке конфиденциальности App Store данные SDK — это аналитика, не связанная с личностью. Пакет для iOS включает манифест конфиденциальности.
Никогда не передавайте имена, email или другие персональные данные в свойствах событий.
Тарифы и лимиты
SDK входит в тарифы Pro и Studio. Автоматические события (первое открытие, начало сессии, уход приложения в фон), экраны онбординга и покупки из RevenueCat бесплатны. Любое другое событие, которое отправляет ваше приложение, стандартное или собственное, учитывается в месячном лимите событий: 1 миллион на Pro, 5 миллионов на Studio.