Как я рекламу в игру внедрял
Решил написать статейку для тех, кто еще не решил какую рекламу в свои приложения встроить, или просто для тех, кто может наступить на те же грабли, что и я)
Немного предыстории:
В общем, как-то пришло время внедрить в игру рекламу, и я решил, что всякие admob'ы нам не подходят ни по формату (слишком уж уродливые у них баннеры), ни по типу объявлений ни по удобству внедрения. Тогда стал подыскивать наиболее подходящий вариант. Хотелось как можно больше разных сетей, но чтобы внедрять было как можно проще. После недолгих поисков (в других играх я часто видел более крутую рекламу), выбор пал на fyber.com. Их реклама в андроид играх мне нравилась больше всего. Оказалось, что на момент решения использовать их рекламу, они как раз провели у себя реструктуризацию, и только только выпустили совершенно новый ANE медиатор (до этого они назывались sponsorpay.com). Вышло так, что ane то они сделали, а инструкции еще обновили не полностью (что, кстати, до сих пор так), поэтому пришлось столкнуться с целой кучей проблем при внедрении. Долго пришлось общаться с их службой поддержки, благо ребата там сидят грамотные и отзывчивые, в результате реклама заработала.
К делу:
Сразу оговорюсь, что приложения не обязательно должно быть размещено в маркетах, чтобы оно работало. Достаточно в файбере поставить галочку this app is not in the app store
--------------------------
Какую рекламу мы получим:
1) Видео с наградой за просмотр, так называемые Rewarded Video.
Игрок смотрит это видео, после чего ему показывается ссылка на игру или приложение, которое нужно скачать с гугл плей. После полного просмотра он засчитывается и игрок получает награду, которая заранее нами настраивается в панели управления файбера. Выдавать или не выдавать награду за каждый просмотр одного и того же видео, решает сам разработчик на уровне своего приложения, файбер всегда будет возвращать положительный ответ и количество денег в качестве награды. Так же будет возвращен код внутреигровой валюты, в которой бала награда. Больше всего обычно платят разные казино, но и требования у них тоже самые серьезные.
2) Межстраничная реклама или Interstitial
Это вид рекламы, который можно показывать, например, во время загрузки игры или при переходе с одного экрана на другой. В общем, где вздумается. Разницы между ней и видео рекламой особенно нет. Она только в том, что если будет показано видео, то его нельзя отменнить, или может показаться баннер во весь экран вместо видео, в зависимости от доступности в том или ином регионе планеты.
3) Стена предложений или Offer Wall,
По-моему самый интересный и перспективный вид рекламы. Игроку показывается стена со списком разных заданий, типа "скачай игру и получи первый уровень" или "собери 150 очков в приложении" и т.п. Награда сразу показана рядом с заданием в списке. Но выдается награда не сразу, а после проверки. Честно сказать, не знаю кто это проверят, машина или модераторы люди, но проверка может занимать от 1 минуты, до нескольких часов. И пройдет она только если это задание не выполнялось ранее. После завершения, файбер вернет событие с результатом проверки. Событие прийдет либо после инициализации файбера, если прилоежние только запущено, или во время его работы. Оно бязательно приходит.
4) Простые баннеры от admob. Думаю, здесь и объяснять не надо.
И так, что нужно сделать чтобы запустить у себя эту сеть. Первым дело идем на fyber.com и жмем sing up now. Дальше на вкладке Monetization выбираем sign up. Проходим стандартную процедуру регистрации. После этого нужно дождаться проверки и активации вашего аккаунта. Это делают живые модераторы, так что если хотите более быстрой проверки, не регистрируйтесь в пятницу, субботу или воскресенье, делайте это среди недели. Если же и так проверка затянулась больше, чем на сутки, напишите им в суппорт, с просьбой активировать аккаунт.
Дальше когда уже зашли в dashboard.fyber.com, на вкладке apps жмем add new app, и выбираем нужную платформу. Если приложение и для iOS и для андроида, то придется в дэшборде создать 2 прилоежния под каждую платформу отдельно.
Когда прилоежние создано, заходим в него и пробегаемся по вкладкам. На вкладке ad formats выбираем какая нам нужна реклама и все настраиваем, а на владке ad networks видим все поддерживаемые сети.
Чтобы подключиться к любой из них, вым придется реально там зарегистрироваться, а полученные данные вписать в эту панель управления. Процесс довольно муторный, но вполне выполняемый. Как настраивать каждую сеть, у них подробно описано на сайте, вот пример для AdColony http://developer.fyber.com/content/c...orks/adcolony/
Дальше вам надо включить рекламу для своего приложения. Не вижу смысла запрашивать тестовую рекламу, так как можно сразу включить все в боевом режиме. Лично я так и сделал. Рядом с названием приложения должна быть зеленая иконка со словом live. Активируется оно там же в дэшборде.
После того как все это настроено, пришло время непосредственной интеграции в приложение. Вот тут то и крылось больше всего проблем.
1) Качаем расширение для медиации отсюда
2) С этой страницы обязательно качаем ANE для каждой сети и платформы, которые мы подключаем, это для видео, а вот тут докачиваем недостающие ANE для interstitials. Я этого сначала не сделал, так как думал, что все есть в медиаторе от файбера. А оказалось, что нет.
3) Вот на этой странице читаем инструкцию, и особое внимание образаем на файл adapters.info. Это самый важный файл, и его обязательно нужно добавить в проект. Там есть еще файл adapters.config, но он нам не нужен, так как все это уже настроено в дэшборде файбера онлайн.
Файле adapters.info запрашивается либой файбера вот так:
То есть куда его положить, зависит от каждой среды. Для FB и Idea там написано, а для FD файл должен лежать в директории bin/assets
Дальше добавляем все ANE в проект. Тут есть еще один важный момент. Реклама от admob не будет работать, если в проекте нет гугл сервисов.
Качаем отсюда исходники, дальше распаковывем этот архив в директорию не содержащую пробелов и русских букв. Так же в директории не может быть двоеточия. Так как указать на винде полный путь без двоеточия невозможно, то будем использовать относительный путь.
Сначала внутри распакованной папки находим папку playservices, и в ней создаем диреткорию под flex sdk или air sdk. Я использовал AIR SDK 20. Создал папку playservices/air и туда скопировал все содержимое из AIR SDK (3й скрин).
Ах, да, если у вас еще не установлена Gradle, то установите ее. Как ее устанавливать объяснять не буду, это за рамками данной статьи.
Дальше выполните команду описанную в README.md. И, если все сделали правильно, в папке playservices\build\libs будет лежать готовый ANE с плей сервисами, нужными для рекламы.
Вот, собственно и всё. Теперь пришло время кода as3.
try { _fyber = FyberSdk.instance; _fyber.enableLogging(true); _fyber.setLogLevel(FyberSdk.LogLevelDebug); _fyber.addEventListener(RewardedVideoEvent.STATUS, onFyberRewardedVideoEvent); _fyber.addEventListener(InterstitialEvent.STATUS, onFyberInterstitialEvent); _fyber.addEventListener(OfferwallEvent.STATUS, onFyberOfferwallEvent); _fyber.addEventListener(ExceptionEvent.STATUS, onFyberExceptionEvent); _fyber.addEventListener(VCSEvent.STATUS, onVCSEvent); _credentialsToken = _fyber.start(fyberApiId, clientSecToken); requestAds(); } catch (e:Error) { Console.log(e.message, "Не инициализуется Fyber. Возможно не добавлен в extensions в application.xml"); } private function requestAds():void { if (!_fyber) return; requestInterstitial(); requestRewardedVideo(); } private function requestInterstitial():void { if (!interstitialAvailable) { _fyber.requestInterstitialAds(_credentialsToken); } } private function requestRewardedVideo():void { if (!videoAvailable) { _fyber.requestRewardedVideoAds(_credentialsToken); } }
Официальная инструкция здесь
По as3 коду у них все правильно и полностью работает в новой версии ANE.
Важно: ни в коем случае не делайте новый запрос загрузки рекламы сразу после того, как вызвали показ предыдущей. Иначе вместо рекламы будет просто черный экран.
Ну и не менее важная часть - это манифест файл.
Он должен содержать следующее:
Вот такие ANE файбера использованы у меня. Не забывайте добавлять свои, если список отличается от моего
<extensions> <extensionID>com.fyber.sdk</extensionID> <extensionID>com.fyber.mediation.adcolony</extensionID> <extensionID>com.fyber.mediation.admob</extensionID> <extensionID>com.fyber.mediation.applovin</extensionID> <extensionID>com.fyber.mediation.chartboost</extensionID> <extensionID>com.fyber.mediation.unityads</extensionID> <extensionID>com.fyber.playservices</extensionID> </extensions>
<manifestAdditions><












