Как я рекламу в игру внедрял
Решил написать статейку для тех, кто еще не решил какую рекламу в свои приложения встроить, или просто для тех, кто может наступить на те же грабли, что и я)
Немного предыстории:
В общем, как-то пришло время внедрить в игру рекламу, и я решил, что всякие 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><![CDATA[<manifest android:installLocation="auto"> <uses-sdk android:minSdkVersion="15" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.vending.BILLING" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
<!-- FYBER --> <activity android:name="com.jirbo.adcolony.AdColonyOverlay" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> <activity android:name="com.jirbo.adcolony.AdColonyFullscreen" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" /> <activity android:name="com.jirbo.adcolony.AdColonyBrowser" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" /> <activity android:name="com.applovin.adview.AppLovinInterstitialActivity" /> <activity android:name="com.applovin.adview.AppLovinConfirmationActivity" /> <meta-data android:name="applovin.sdk.key" android:value="bv7p5qHKHiF3N1ry2alMuCXSUz3IZT_AN7zSyFoDz1HL26I5h1SZE-0iy30VX0fv7dL3t8Hr9TACfSILUlvikw" /> <activity android:name="com.sponsorpay.publisher.ofw.SPOfferWallActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="sensor" /> <activity android:name="com.fyber.sdk.wrapper.FYBRewardedVideoAirActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:hardwareAccelerated="true" /> <activity android:name="com.sponsorpay.publisher.interstitial.SPInterstitialActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:hardwareAccelerated="true" /> <activity android:name="com.fyber.sdk.wrapper.FYBWrapperActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:hardwareAccelerated="true" /> <service android:name="com.sponsorpay.publisher.mbe.player.caching.SPCacheVideoDownloadService" /> <activity android:name="com.chartboost.sdk.CBImpressionActivity" android:excludeFromRecents="true" android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
Всего комментариев 32
Комментарии
08.02.2016 18:22 | |
Так выходит, это теперь, собственно, HeyZap?
|
08.02.2016 20:44 | |
Цитата:
Так выходит, это теперь, собственно, HeyZap?
Цитата:
А вот это всё адское свинство и неуважение к игроку. Не знаю, как другим, но лично мне противно, когда ко мне относятся, исключительно как к средству заработка, а не как к игроку.
Цитата:
Одно дело - небольшой баннер в углу, другое - постоянно вылезающая полноэкранная реклама никому не нужной хрени.
1) В момент пока грузится игра 2) По запросу самого игрока. Там есть кнопочка "Бесплатно" (и не одна). Игрок выполняет задание или смотрит рекламу, и получает за это бабки на свой игровой счет. Все честно и все довольны. 3) Вот как раз эти баннеры в углу экрана и раздражают больше всего. Interstitial реклама красивая и не "напряжная", а вот какой-то уродливый баннер мигающий постоянно действительно мозолит глаза и раздражает игрока. Тем более что для них даже размер не настраивается. И вот уж что точно никому не нужная хрень, так это реклама в этих баннерах. Межстараничная реклама четко таргетирована, а в баннерах показывается вообще невесть что Цитата:
Стоит оно того? Мне кажется, выхлоп с рекламы будет не сильно больше нуля.
Если грамотно сделать, то "выхлоп" с такой рекламы в некоторых регионах даже превышает доходы от инапов. У нас в игре есть еще и дополнительные награды типа "просмотри 3 рекламы" получи 1000 золотых. Посмотри 50 реклам и получишь 30 кристаллов. Это не обязательное требование, но игрок, желающий на халяву заработать внутреигровых деньжат, может это сделать, и честно получит свою награду) |
|
Обновил(-а) caseyryan 08.02.2016 в 21:19
|
08.02.2016 20:57 | |
И это дейлик? Или разовый бонус?
|
08.02.2016 20:57 | |
Цитата:
И это дейлик? Или разовый бонус?
|
08.02.2016 20:58 | |
Если забанят, или предупреждение вышлют, дай знать плз. )
|
09.02.2016 08:30 | |
Цитата:
Некорректный пример. Правильней будет так: "посмотрите 50 реклам и получите одну десятую буханки, которую нельзя купить за деньги"
1) Все, что получает игрок за просмотр рекламы, он может купить и за деньги. А вознаграждение там приличное. Рассчитано все так, чтобы доход от рекламы для нас был примерно соизмерим доходу от инапов. Если просмотр рекламы игроком приносит нам 7 центов, то и получит он внутреигровых денег столько же, сколько мог бы купить в магазине за 7 центов (приблизительно) 2) Магазин тебя воспринимает исключительно как средство заработка и им ты абсолютно пофиг как человек. Что не так? Плюс к тому в магазинах ты так же увидишь тонны рекламы, которую, ты еще и бесплатно смотришь) Это даже хуже. Цитата:
Я с удовольствием плачу за хорошие игры, но тонны рекламы дико бесят. Да, я не целевая аудитория подобного, но сейчас в магазинах ничего, кроме таких вижималок денег(которые почему-то называют играми) не осталось.
Разница в десятки и даже сотни раз. И совсем не в пользу платных. Так что реклама и инапы (за которые тоже не все платят) - это единственный способ как-то окупать игры. И вообще, что тут обсуждать. Кто не хочет смотреть рекламу, может отключить интернет. Но при этом не получит никакой халявы, хотя играть, в принципе, сможет. Цитата:
Я с удовольствием плачу за хорошие игры
Подозреваю, что мало, и не очень то с удовольствием. Человек вообще редко когда с удовольствием расстается со своими деньгами Цитата:
Но вот думаю, не дадут ли за это по рукам. Вроде совершенно нет никаких нарушений и читерства, с учетом того, что львиная доля рекламы оплачивается лишь по факту отклика игрока.
Кстати вот в этих оффер воллах есть такие игры, в которые надо поиграть, чтобы получить вознаграждение. И там после проигрыша постоянно показывается реклама, которую нельзя скипнуть, но тем не менее, никто их за это не наказывает. Или вот игры типа Flappy Bird взять. Реклама постоянная. Сам создатель этой игры рассказывал, что на рекламе рубил по 50 тысяч долларов в день Цитата:
У меня была мысль за interstitial давать немного необязательных ништяков (монеток, например)
|
|
Обновил(-а) caseyryan 09.02.2016 в 09:32
|
09.02.2016 10:59 | |
Цитата:
Только где ты там набрал столько хороших игр, что аж не жалко было заплатить за все?
Вот, хотя, кому это интересно... |
09.02.2016 13:55 | |
Цитата:
Я считаю, что к игроку нужно относиться трепетно, в определённой степени.
Грань тут ключевое слово |
10.02.2016 11:22 | |
Не только для айпада. На андроиде так же
|
10.02.2016 16:38 | |
Ты не анализировал, какие именно сети с rewarded video ads стоит подключать? Ну т.е. с одной стороны "чем больше тем лучше", чтобы fill rate был высоким. С другой — медиатор это конечно хорошо, но бабосики выводить придется с каждой сетки по отдельности, а там везде (везде?) есть порог, что несколько омрачает ситуацию, если приложение приносит не такие большие доходы. Не хотелось бы распыляться, короче.
Как-то попадались обзоры. Но они уже могут быть не такими актуальными. Мало того, что сами сети развиваются, так еще и новых добавилось — лопатой грузи! |
|
Обновил(-а) Zebestov 11.02.2016 в 11:25
|
11.02.2016 07:56 | |
Цитата:
С Андроидом у меня есть 3 опыта общения, и, думаю, через годик устрою 4-ое.
Цитата:
Ты не анализировал, какие именно сети с rewarded video ads стоит подключать?
|
|
Обновил(-а) caseyryan 11.02.2016 в 10:53
|
Последние записи от caseyryan
- Небольшой хак для записи или удаления файлов из директории приложения (07.04.2017)
- Как я рекламу в игру внедрял (07.02.2016)
- Самое слабое место Dragon Bones - класс TransformUtil (02.02.2016)
- Разгружаем ресурсоемкие циклы на мобилах без воркеров (13.07.2015)