Реалізація реферальної програми в мобільному додатку
Реферальна програма — це attribution на мобільній платформі, а не просто «поділись посиланням». Головна технічна складність: пов'язати встановлення додатку з конкретним реферером, коли між переходом по посиланню й відкриттям додатку можуть пройти кілька днів і змінитися пристрій.
Deep linking та deferred deep linking
Звичайна deep link не працює: якщо додаток не встановлений, користувач потрапляє в App Store й посилання втрачається. Потрібен deferred deep link — механізм, при якому посилання «запам'ятовується» й передається додатку при першому запуску після встановлення.
Інструменти: Branch.io, Firebase Dynamic Links (deprecated з 2025, не рекомендую для нових проектів), AppsFlyer OneLink, Adjust. Branch найбільш універсальна.
// iOS — Branch SDK
Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
if let referrerID = params?["referrer_id"] as? String {
// Перший запуск з реферальним параметром
ServerAPI.attributeInstall(referrerID: referrerID, newUserID: currentUser.id)
}
}
Branch відслідковує клік по посиланню через fingerprinting (IP + User-Agent + час) й зіставляє з встановленням у 2-годинному вікні. Точність ~85-95% — не 100%, але для бізнес-метрик достатньо.
Генерація реферальних посилань
Кожен користувач отримує унікальне коротке посилання:
let linkProperties = BranchLinkProperties()
linkProperties.channel = "app_share"
linkProperties.feature = "referral"
let universalObject = BranchUniversalObject(canonicalIdentifier: "referral/\(userID)")
universalObject.contentMetadata.customMetadata["referrer_id"] = userID
universalObject.getShortUrl(with: linkProperties) { url, error in
self.referralLink = url
}
На Android — аналогічно через Branch SDK для Android.
Attribution та нарахування бонусів
Після успішної attribution (новий користувач встановив й відкрив додаток) — серверна логіка:
- Перевіряємо, що
new_user_idдійсно новий (немає попередніх сесій, немає збігу device fingerprint з існуючими акаунтами — для захисту від накруток через переустановку) - Створюємо запис в
referral_attributions: referrer_id, referred_id, attributed_at, status=pending - Нараховуємо бонус рефереру тільки після виконання умови — наприклад, після першої покупки реферала або після 7 днів активності
Рано нараховувати не можна: користувач встановить додаток, отримає бонус для реферера, видалить — це сміттєвий трафік.
Умови та антифрод
Базові захисти: один реферальний бонус за один пристрій (device_id), обмеження на кількість рефералів у місяць, мінімальний вік акаунту реферера для участі в програмі (наприклад, 7 днів).
Для серйозних обсягів — інтеграція з антифрод-сервісом (Adjust Fraud Prevention, Branch Fraud Protection): вони перевіряють поведінкові паттерни й сигнали еміля.
Екрани в додатку
Сторінка реферальної програми: поточний баланс реферальних бонусів, кількість запрошених, історія нарахувань, кнопка «Поділитися» з нативним share sheet.
Терміни — 3–5 днів: інтеграція Branch SDK (iOS + Android), серверна attribution логіка, антифрод базовий, UI екрани.







