Офферволл для Telegram Mini Apps: второй источник дохода поверх rewarded-видео
Офферволл — это экран внутри приложения со списком заданий от рекламодателей: подписаться на канал, открыть другой мини-апп, зарегистрироваться в сервисе. Пользователь выполняет задание и получает внутриигровую награду; рекламодатель платит за выполненное действие, и вы зарабатываете на нём. Это второй источник дохода, который большинство Telegram Mini Apps оставляют на столе после того, как подключили rewarded-видео. GigaPub — рекламная сеть и платформа медиации рекламы для Telegram Mini Apps, и её OfferWall SDK добавляет этот источник одним скриптом-загрузчиком и одним обработчиком события.
Коротко
- Офферволл платит за выполненное действие, а не за просмотр — его доход не зависит ни от fill rate видео, ни от eCPM.
- Он не конкурирует с rewarded-видео: другой момент, другое намерение пользователя, никакой рекламной усталости.
- Интеграция в три шага: загрузить SDK, обработать событие
rewardClaim, открыть стену по кнопке. Кнопку показывать только когдаhasOffers()возвращает true. - Не терять награды: вызывать
pending()при запуске и зачислять каждый id награды ровно один раз.
Что такое офферволл и за что вам платят?
Офферволл — каталог заданий рекламодателей внутри вашего приложения, у каждого — награда в вашей валюте. Пользователь выбирает задание, выполняет его, и ваше приложение зачисляет награду. Платят вам за выполненное действие — подписку, установку, регистрацию, — а не за показ списка и не за просмотр.
Это меняет экономику по сравнению с видеорекламой. Rewarded-видео приносит небольшую фиксированную сумму за просмотр и зависит от того, есть ли что показать; задание офферволла приносит доход, когда пользователь делает то, что ценно рекламодателю, — независимо от того, как сегодня выглядит видеоспрос на ваши страны.
Почему офферволл не конкурирует с rewarded-видео?
Потому что закрывает другой момент. Rewarded-видео — кнопка «мне нужна ещё одна жизнь прямо сейчас»: 15–30 секунд за небольшую награду. Офферволл — экран «хочу много монет»: пользователь сам решает потратить несколько минут на задание ради награды размером во много просмотров видео.
Из этого следуют три вещи:
- Нет рекламной усталости. Ничего не показывается, пока пользователь не откроет стену. Лимиты частоты и тревоги за удержание, справедливые для межстраничной рекламы, здесь не работают — формат добровольный дважды: сначала стена, потом задание.
- Другие пользователи. Часть аудитории никогда не смотрит рекламу, но охотно подпишется на канал за большой бонус. Офферволл часто единственный доход, который вы с них получаете.
- Независимость от заполнения. Если видеоспрос на страну тонкий, задания в стене всё равно есть. Два потока отказывают независимо — ровно то, что нужно от второго источника.
Как в одном приложении уживаются rewarded-видео и межстраничная реклама — в статье rewarded-видео против межстраничной рекламы.
Rewarded-видео против офферволла
| Rewarded-видео | Офферволл | |
|---|---|---|
| За что платят | за показ рекламы | за выполненное действие |
| Кто инициирует | пользователь нажимает «посмотреть рекламу» | пользователь открывает список заданий |
| Типичный момент | нужен небольшой бонус сейчас | хочется много валюты сразу |
| Размер награды | небольшой, фиксированный за просмотр | больше, зависит от задания |
| Зависит от fill rate видео | да | нет |
| Работа разработчика | один вызов showGiga() | загрузчик, обработчик rewardClaim, open() |
Куда ставить кнопку офферволла?
Рядом с балансом, в магазине — там, куда пользователь смотрит, когда валюта кончилась: кнопка «Бесплатные монеты» или «Заработать». Работает при двух правилах:
- Показывайте кнопку, только если за ней что-то есть.
sdk.hasOffers()говорит, есть ли у текущего пользователя доступные задания; пустая стена хуже, чем отсутствие кнопки. - Не прячьте её. Стена в один тап от места, где пользователь ощущает нехватку, зарабатывает; стена в пяти тапах в настройках — нет.
Как подключить OfferWall SDK GigaPub?
Три шага. Создайте офферволл в кабинете паблишера, чтобы получить его project id, затем:
1. Добавьте загрузчик. Его отдаёт бэкенд, и он сам выбирает оптимальный CDN по региону пользователя.
<script src="https://wall.giga.pub/api/v1/loader.js?projectId=YOUR_PROJECT_ID"></script>
2. Инициализируйте SDK и обработайте получение награды. Очередь колбэков делает код безопасным даже при асинхронной загрузке скрипта.
(window.loadGigaSDKCallbacks || (window.loadGigaSDKCallbacks = [])).push(() => {
window.loadOfferWallSDK({ projectId: 'YOUR_PROJECT_ID' })
.then((sdk) => {
window.gigaOfferWallSDK = sdk
sdk.on('rewardClaim', async (data) => {
// data: { rewardId, userId, projectId, hash, amount, description }
await creditUserReward(data.userId, data.amount) // ваша система
sdk.confirmReward(data.rewardId, data.hash)
})
})
.catch((error) => console.error('OfferWall SDK не загрузился', error))
})
3. Откройте стену по кнопке.
document.getElementById('rewards-button').addEventListener('click', () => {
if (window.gigaOfferWallSDK?.hasOffers())
window.gigaOfferWallSDK.open()
})
Это вся интеграция. Если задания хочется рисовать в своём интерфейсе, sdk.getOffers()
возвращает доступные и активные задания с названием, иконкой и размером награды, а
sdk.openOffer(offerId) открывает конкретное. Полный справочник, включая варианты для React
и TypeScript, — в гайде по быстрой интеграции OfferWall.
Как не потерять награду — и не получить поддельную?
Задание часто выполняется вне вашего приложения — в другом мини-аппе, в канале, — поэтому пользователь может вернуться, когда сессия, в которой он открыл стену, давно завершилась. Три привычки, чтобы награды доходили правильно:
- Забирайте отложенные награды при запуске.
await sdk.pending()возвращает награды, которые получены, но ещё не подтверждены; зачислите их и вызовитеconfirmRewardдля каждой. Уведомление «у вас есть незабранные награды» при возвращении — приятная деталь. - Зачисляйте каждый id награды ровно один раз. Храните обработанные id и считайте
повторный
rewardClaimс тем же id уже выполненным. Повторный вызов подтверждения безопасен; двойное зачисление — нет. - Включите расширенный режим, если ставки высоки. По умолчанию поток выше работает как есть. Для проектов со строгими требованиями можно включить серверную проверку хеша: ваш бэкенд проверяет входящий хеш награды и генерирует подтверждающий хеш с секретным ключом проекта до подтверждения. См. серверную проверку хеша.
SDK также отправляет события opened и closed — обновляйте баланс пользователя по
closed, чтобы награда, зачисленная пока стена была открыта, была видна сразу после
возвращения в игру.
FAQ
Что такое офферволл в Telegram Mini App? Экран внутри приложения со списком заданий от рекламодателей — подписаться на канал, открыть другой мини-апп, зарегистрироваться в сервисе. Пользователь выполняет задание и получает внутриигровую награду; рекламодатель платит за выполненное действие, и вы зарабатываете на нём. За просмотры никто не платит.
Заменяет ли офферволл rewarded-видео? Нет, дополняет. Rewarded-видео закрывает момент, когда пользователю нужен небольшой бонус прямо сейчас; офферволл — момент, когда пользователь хочет много валюты и готов потратить несколько минут на задание. Форматы не каннибализируют друг друга.
Как пользователь получает награду из офферволла?
Когда задание выполнено, SDK отправляет событие rewardClaim с id пользователя, суммой и id
награды. Приложение зачисляет награду и вызывает sdk.confirmReward(rewardId, hash). Награды,
полученные пока приложение было закрыто, забираются при следующем запуске через
sdk.pending().
Можно ли показывать задания в своём интерфейсе вместо встроенного офферволла?
Да. sdk.getOffers() возвращает доступные и активные задания, а sdk.openOffer(offerId)
открывает конкретное напрямую. Встроенная стена через sdk.open() — вариант без дизайна с
вашей стороны.
Как защититься от поддельных наград офферволла? Зачисляйте каждый id награды один раз на своей стороне, а для строгих проектов включите расширенный режим: бэкенд проверяет хеш награды и генерирует подтверждающий хеш с секретным ключом проекта до подтверждения.
Rewarded-видео, межстраничная реклама и офферволл живут в одном кабинете паблишера, а видеоформаты идут через один и тот же слой медиации рекламы. Добавьте второй источник дохода на giga.pub.
