Интеграция рекламной сети IronSource в мобильное приложение
Многие разработчики сталкиваются с тем, что после подключения IronSource реклама не показывается или падает fill rate. Мы за 5+ лет интегрировали IronSource в более чем 20 проектов — от казуальных игр до сложных сервисов. Одна из типичных ошибок — игнорирование порядка инициализации. IronSource (теперь Unity LevelPlay) требует последовательного вызова: сначала init(), затем загрузка рекламных форматов. Если этого не сделать — на Android вылезает IronSourceError code 510, а на iOS rewarded видео просто не отображается. В этой статье разберём, как правильно подключить IronSource, настроить медиацию и не потерять доход.
Типичные проблемы при подключении
Самый частый вопрос на поддержке: «Баннер грузится, а rewarded не показывается». Причина почти всегда одна — не дождались события onInitializationComplete перед вызовом IronSource.loadRewardedVideo(). SDK асинхронный, инициализация на слабых устройствах занимает 1.5–3 секунды, и если нагрузить его сразу после Application.onCreate(), адаптер AdMob или Meta не успевает зарегистрироваться.
На iOS картина другая: ISInitializationDelegate отрабатывает быстро, но ISRewardedVideoDelegate нужно навесить до IronSource.init(), иначе пропускаешь первый rewardedVideoHasChangedAvailability(true) и получаешь пустой экран там, где должна быть реклама.
Ещё одна грабля — GDPR и ATT. IronSource требует передачи consent до инициализации через IronSource.setMetaData("do_not_sell", "true") и IronSource.setConsent(true/false). Если consent-экран показывается после init(), часть сетей в медиации получает неверный флаг и просто не отдаёт рекламу — без каких-либо ошибок в логах.
| Платформа | Порядок инициализации | Типичная ошибка |
|---|---|---|
| Android | init() → загрузка рекламы |
code 510 при параллельном вызове |
| iOS | Навесить делегаты до init() |
Пропущен первый callback availability |
Как избежать ошибки code 510 на Android?
Чтобы не получить IronSourceError code 510, всегда используйте колбэк onInitializationComplete. Примерная последовательность:
IronSource.init(this, appKey, object : IronSourceInitListener { override fun onInitializationComplete() { // Теперь можно загружать рекламу IronSource.loadRewardedVideo() } override fun onInitializationFailed(error: IronSourceError) { // Обработать ошибку } }) Никогда не вызывайте loadRewardedVideo сразу после init без ожидания колбэка.
Почему rewarded видео не показывается на iOS?
На iOS делегаты ISRewardedVideoDelegate должны быть назначены до вызова IronSource.init(). Если вы сделаете это после, первый rewardedVideoHasChangedAvailability(true) не будет вызван, и кнопка «Смотреть рекламу» останется серой. Исправление: настройте делегаты в application:didFinishLaunchingWithOptions: до инициализации.
Как мы подключаем IronSource
Процесс начинается с аудита текущего состояния: какие рекламные SDK уже есть в приложении, есть ли конфликты с com.google.android.gms:play-services-ads или Meta Audience Network по версиям. IronSource требует строгих версий адаптеров — несовпадение на минорную версию ломает медиацию молча.
Стек для Android:
implementation 'com.ironsource.sdk:mediationsdk:7.9.0' implementation 'com.ironsource.adapters:admobadapter:4.3.40' implementation 'com.ironsource.adapters:metaadapter:4.3.43' Добавляем IronSourceInitListener в Application класс, а не в Activity — это позволяет переиспользовать уже инициализированный инстанс при смене экранов. Для Unity-проектов подход другой: IronSourceUnityWrapper.CallStaticAndroid блокирует main thread при неправильной настройке threading model.
Серверная верификация rewarded реализуется через Rewarded Video Server-Side Verification (SSV): IronSource делает GET-запрос на ваш endpoint с подписью hmac-sha256, вы верифицируете и выдаёте награду. Без SSV награды можно накрутить через Charles Proxy за 10 минут — это реальный вектор атаки в играх. Как показывает практика, правильная реализация SSV экономит до 40% бюджета на антифрод.
Аналитику подключаем через ISImpressionDataDelegate: каждый impression передаёт revenue, ad_unit, country, instance_name — этого достаточно для построения дашборда eCPM по сетям в реальном времени. Медиация с IronSource даёт на 30% более высокий eCPM по сравнению с использованием только AdMob — особенно это заметно на регионах с низкой конкуренцией.
| Адаптер | Версия | Минимальная версия SDK |
|---|---|---|
| AdMob | 4.3.40 | 7.9.0 |
| Meta | 4.3.43 | 7.9.0 |
| Unity Ads | 4.3.41 | 7.9.0 |
Что входит в интеграцию
- Аудит текущих рекламных SDK и версий
- Регистрация приложения в консоли Unity LevelPlay, получение App Key
- Настройка рекламных блоков (placement ID) для каждого формата
- Интеграция SDK с правильным порядком инициализации и consent-флагами
- Подключение адаптеров нужных сетей (AdMob, Meta, Applovin, Unity Ads)
- Реализация SSV-эндпоинта для rewarded (если нужен)
- Тестирование на 10+ реальных устройствах с включёнными test device ID
- Мониторинг fill rate и eCPM после публикации
- Документация по флагам consent и test mode
- Поддержка после запуска — 1 месяц
Сроки и стоимость
Базовая интеграция с одним форматом рекламы занимает 1–2 дня. Полное подключение с медиацией, SSV и аналитикой — 2–3 дня. Стоимость рассчитывается индивидуально после анализа текущего стека проекта. Мы гарантируем прозрачные сроки и фиксированную стоимость. Свяжитесь с нами для оценки вашего проекта — получите консультацию бесплатно. Закажите интеграцию IronSource и увеличьте доход от рекламы.







