Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Туториал: встраивание баннера в мобильное приложение за 3 минуты (http://www.flasher.ru/forum/showthread.php?t=213417)

GeneralVimes 25.09.2016 01:00

Туториал: встраивание баннера в мобильное приложение за 3 минуты
 
http://i.imgur.com/0o0QJO7.png
Сервис FGL Enhance обновился, теперь появилась возможность встраивать в своё приложение, помимо видео и полноэкранной рекламы, также и статичные баннеры AdMob. Эту полезную функцию запрашивали многие разработчики.

Лично я на то, чтобы в моей первой мобильной игре появился баннер, потратил в 2014 году вечера три, не меньше. Сначала выяснил, что есть платный Milkman ANE. Потом нашёл бесплатный Pozirk ANE. Поразбирался со встраиваниями, поборолся с application.xml, поотлавливал баги, многократно пересобирая приложение.

Сейчас протестировал встраивание баннера с Enhance - это заняло минуты 3, если встраивать постоянно висящий баннер. Если показывать/убирать, в зависимости от происходящего в приложении - минут за 5, наверное, можно управиться, если учитывать подключение промежуточной библиотеки и написание кода.

Как встроить баннер в свою мобильную игру
1. Заходим на FGL Enhance
Выбираем, какое SDK нужно встраивать. Для этого в разделе "I want to choose SDK myself" отмечаем AdMob.

http://i.imgur.com/astcTnJ.png

Обращу внимание, что в Enhance одним махом можно встроить сразу все необходимые SDK: рекламу от разных провайдеров, статистику, Crash reporting, Dolby Audio и т.п. Но в данном случае рассмотрим встраивание конкретно адмоба.

2. Указываем, на какой технологии было сделано ваше приложение. Если вы захотите управлять видмостью баннера, нужно будет дополнительно прописать в код пару строк кода, подключив библиотеку drag-and-drop library. В зависимости от выбранной технологии будет даваться ссылка на скачивание нужной библиотеки.

http://i.imgur.com/gWoIQwA.png

Но если же вы хотите просто показывать баннер всё время, ничего скачивать и прописывать в код не нужно. Это решение называется ZeroCode и оно работает с лыюбыми .apk и .ipa файлами, даже с сконвертированными из HTML5-игр или сделанными с помощью гейм мейкера.

3. На этой же странице будет выбор типов рекламы, которую можно показывать.

http://i.imgur.com/TwL9Uhl.png

-Interstitial - реклама между уровнями
-Rewarded Video - видео с наградой игроку за просмотр
-Flexible Banner - баннер, видимостью которого вы можете управлять в коде
-Persistent Banner - баннер, который будет постоянно висеть в игре (и обновляться по настройкам, которые вы зададите в Адмобе)
-Pre-Roll - реклама, показываемая при старте приложения (как в кетчаповских играх, например)

Обратите внимание, что два последних варианта отмечены как ZeroCode. Вам не нужно ничего добавлять в ваш файл игры, чтобы их встроить.

Выбираем для нашего примера только Persistent banner.

4. Теперь загружаем своё приложение.
http://i.imgur.com/kY8T114.png

5. На следующем экране нам предложат задать тип баннера. Можно, например, использовать SMART_BANNER или любые другие, перечисленные в справке АдМоба. Указываем и идентифиактор баннера из своего адмобовского аккаунта. При создании идентификатора в адмобе можно указать его частоту обновлений.

http://i.imgur.com/UnOlla9.png

6. Заключительный этап - задание метода подписывания приложения. Можно использовать свой сертификат разработчика. Тогда приложение после вшивания кода можно будет сразу загружать в стор.
Можно использовать тестовый сертификат для проверки на своём устройстве. А можно получить неподписанное приложение и подписать его уже самостоятельно локально.

http://i.imgur.com/F9xVsLz.png

7. Теперь ещё один прогресс бар...

http://i.imgur.com/PlJBKR1.png

И готово!
http://i.imgur.com/VC1GKC2.png

Сервис полностью бесплатен для разработчиков и доход от рекламы вы будете получать такой же, как если бы встраивали Адмоб любым другим методом. FGL получает доход от провайдеров SDK, ведь по сути Enhance облегчает их работу по повышению привлекательности SDK для новых разработчиков.
Попробуйте Enhance для своей игры

Zebestov 25.09.2016 16:17

Готовлю апдейт игры (AIR) уже с Enhance. Работает все как часики.

caseyryan 26.09.2016 07:10

Интересно, надо попробовать. Спасибо за инфу. Судя по описанию вещь мега крутая (главное чтобы работала так же круто, как описана). Внушает доверие хотя бы то, что это fgl, а не какая-то вновь объявившаяся конторка с неизвестной репутацией

GeneralVimes 26.09.2016 14:06

Да-да, рекомендую :) И поделись опытом интеграции, пожалуйста, команда очень открыта к фичереквестам.
________
Отлично! :)

GeneralVimes 07.12.2016 00:50

Коллеги! FGL запускал акцию "50 долларов" за игру. Для получения бонуса достаточно встроить в свою мобильную игру любой из SDK (аналитику, рекламу, медиацию и т.п.) через сервис Enhance и опубликовать апдейт в сторе.

Она завтра заканчивается. Учитывая, что между тихоокеанским временем и нашим часов 10 разницы, есть ещё более суток, чтобы воспользоваться этой возможностью.

Godwarlock 07.12.2016 03:18

У меня возникли вопросы по этой системе
1) Почему нельзя просто скачать sdk и не использовать его в своем приложении, остановившись на 2 пункте подписания.
2) Каким образом, fgl определит, что игрок прошел уровень. А если в игре нет уровней?
3) Я так понимаю, готовится релизная версия игры, apk отправляется на fgl, там apk получает подпись и уже полученный apk заливается в store?
4) Есть ли документация по sdk? Ну например чтобы сделать настройку показа рекламы, надо ведь вызывать для этого методы, о них где-то можно почитать?

caseyryan 07.12.2016 06:44

Цитата:

Сообщение от Godwarlock (Сообщение 1197765)
У меня возникли вопросы по этой системе
1) Почему нельзя просто скачать sdk и не использовать его в своем приложении, остановившись на 2 пункте подписания.
2) Каким образом, fgl определит, что игрок прошел уровень. А если в игре нет уровней?
3) Я так понимаю, готовится релизная версия игры, apk отправляется на fgl, там apk получает подпись и уже полученный apk заливается в store?
4) Есть ли документация по sdk? Ну например чтобы сделать настройку показа рекламы, надо ведь вызывать для этого методы, о них где-то можно почитать?

Код AS3:

FglEnhance.showInterstitialAd ();

Там все есть. Почитай доки. Все вопросы отпадут сразу.

caseyryan 07.12.2016 08:18

Вложений: 1
Вот так там. Качаешь либу, делаешь где надо эти вызовы. Профит

undefined 13.12.2016 21:22

кто-нибудь пытался туда закинуть не air apk?У меня ругается что drag and drop library not found.Хотя если бы ее не было, я даже не собрал бы этот apk.Пойду ругаться с саппортом.

Zebestov 13.12.2016 21:29

Цитата:

Сообщение от undefined (Сообщение 1197913)
кто-нибудь пытался туда закинуть не air apk?

А не проще сразу сказать, на какой платформе ты создавал свой apk? Может кто и подскажет по факту.

undefined 13.12.2016 22:01

Цитата:

Сообщение от Zebestov (Сообщение 1197915)
А не проще сразу сказать, на какой платформе ты создавал свой apk? Может кто и подскажет по факту.

Android Studio 2.2.3

Zebestov 13.12.2016 22:14

Ну вот, другое дело. Подожди Генерала, може он прояснит.

GeneralVimes 14.12.2016 01:11

Вот и я! Прошу прощения, давно не заглядывал, всё свою стратегию пилю. Zebestov, спасибо! :)

undefined, так Drag-and-drop library есть и для нативной разработки. Выбор платформы происходит вот на этом шаге:
http://i.imgur.com/ao2Tvzq.png

Само наличие этой библиотеки проверяется, если использовать не-ZeroCode решения, т.е. нужно, например, запустить видео в определённые момент или послать определённое сообщение в систему статистики.

Теперь по пунктам из вопросов Godwarlock:

Цитата:

1) Почему нельзя просто скачать sdk и не использовать его в своем приложении, остановившись на 2 пункте подписания.
Как происходит работа. При встаивании Drag-and-drop SDK происходит, можно сказать, разметка вашего .апк файла, указывается, куда затем встраивать "настоящие" SDK. Имея один файл с разметкой, можно попробовать по этой разметке встроить один набор SDK, другой, поэкспериментировать, выбрать лучшее - и всё это без перекомпиляции самого приложения.
Вариант перенсти процесс непосредственного вшивания SDK с сервера на клиент рассматривается, но не в главном приоритете.

Цитата:

2) Каким образом, fgl определит, что игрок прошел уровень. А если в игре нет уровней?
Это уже вам, как разработчику, нужно бужет после подключения drag-and-drop library дать команду показа междууровневой рекламы, как указал caseyryan. При тесте собранного приложения в этот момент вы увидите окно-заглушку типа "произошёл вызов междууровневой рекламы". А после оборачивания .апк в Enhance уже будет показывать непосредственно реклама.

Цитата:

3) Я так понимаю, готовится релизная версия игры, apk отправляется на fgl, там apk получает подпись и уже полученный apk заливается в store?
Да-да, в размеченные места вшивается фактические рекламные вызовы

Цитата:

4) Есть ли документация по sdk? Ну например чтобы сделать настройку показа рекламы, надо ведь вызывать для этого методы, о них где-то можно почитать?
Да, на том же экране, где выбор платформы, ниже code samples. Согласен, надо будет отдельно вынести в более удобное место, сделаем :)

undefined 14.12.2016 12:38

Цитата:

undefined, так Drag-and-drop library есть и для нативной разработки. Выбор платформы происходит вот на этом шаге:
Это я понял, но на странице аплода нигде не указано, что инжектить он будет только в релизный апк.И саппорт почему-то не догодался сказать об этом.Вчера весь день промучались.

Добавлено через 2 часа 53 минуты
Теперь засада что генрируется нерабочий apk.В android device monitor при установке выскакивает следующая портянка эроров:
Цитата:

12-14 13:30:41.080: E/audio_hw_primary(178): select_devices_signal starting... adev->out_devices 0x2 adev->in_devices 0x0
12-14 13:30:41.090: E/Parcel(741): Class not found when unmarshalling: com.android.packageinstaller.InstallFlowAnalytics
12-14 13:30:41.090: E/Parcel(741): java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics
12-14 13:30:41.090: E/Parcel(741): at java.lang.Class.classForName(Native Method)
12-14 13:30:41.090: E/Parcel(741): at java.lang.Class.forName(Class.java:309)
12-14 13:30:41.090: E/Parcel(741): at java.lang.Class.forName(Class.java:273)
12-14 13:30:41.090: E/Parcel(741): at android.os.Parcel.readParcelableCreator(Parcel.java:2281)
12-14 13:30:41.090: E/Parcel(741): at android.os.Parcel.readParcelable(Parcel.java:2245)
12-14 13:30:41.090: E/Parcel(741): at android.os.Parcel.readValue(Parcel.java:2152)
12-14 13:30:41.090: E/Parcel(741): at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
12-14 13:30:41.090: E/Parcel(741): at android.os.BaseBundle.unparcel(BaseBundle.java:221)
12-14 13:30:41.090: E/Parcel(741): at android.os.BaseBundle.getString(BaseBundle.java:918)
12-14 13:30:41.090: E/Parcel(741): at android.content.Intent.getStringExtra(Intent.java:5854)
12-14 13:30:41.090: E/Parcel(741): at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2582)
12-14 13:30:41.090: E/Parcel(741): at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2056)
12-14 13:30:41.090: E/Parcel(741): at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:5906)
12-14 13:30:41.090: E/Parcel(741): at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:5684)
12-14 13:30:41.090: E/Parcel(741): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:146)
12-14 13:30:41.090: E/Parcel(741): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3771)
12-14 13:30:41.090: E/Parcel(741): at android.os.Binder.execTransact(Binder.java:446)
12-14 13:30:41.090: E/Parcel(741): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.packageinstaller.InstallFlowAnalytics" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
12-14 13:30:41.090: E/Parcel(741): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-14 13:30:41.090: E/Parcel(741): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
12-14 13:30:41.090: E/Parcel(741): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
12-14 13:30:41.090: E/Parcel(741): ... 17 more
12-14 13:30:41.090: E/Parcel(741): Suppressed: java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics
12-14 13:30:41.090: E/Parcel(741): at java.lang.Class.classForName(Native Method)
12-14 13:30:41.090: E/Parcel(741): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
12-14 13:30:41.090: E/Parcel(741): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
12-14 13:30:41.090: E/Parcel(741): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
12-14 13:30:41.090: E/Parcel(741): ... 18 more
12-14 13:30:41.090: E/Parcel(741): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
12-14 13:30:41.270: E/BufferQueueCore(164): [com.android.packageinstaller/com.android.packageinstaller.InstallAppProgress] setDefaultMaxBufferCount: setting count to 3, previous is 2
12-14 13:30:59.618: E/Watchdog(741): !@Sync 5387 [12-14 13:30:59.630]
12-14 13:31:00.189: E/[AccuTab](6538): {[684C52C211A714B91D10EDD4C71A2A18D5799FDA933CFD74B4ED93A48016C00D]}
12-14 13:31:00.189: E/[AccuTab](6538): {[44D0F53ECDC9265C42AFC2F06DEAAFED437C230F2AE1981E4E40A23AB12DAA35258B5978E85E65F22DE58C3D8EEC087FE7A198AE49D5286341963BBBDB927C61]}

Zebestov 14.12.2016 16:04

undefined, не думаю, что эта тема подходит для анализа подобных листингов, она немного о другом.
GeneralVimes не входит в группу разработчиков, которая трудится над реализацией Enhanced.
Лучше будет создать тему на более подходящем для этого форуме.

undefined 14.12.2016 16:14

Цитата:

GeneralVimes не входит в группу разработчиков, которая трудится над реализацией Enhanced.
Как тогда понимать это?
Цитата:

а, на том же экране, где выбор платформы, ниже code samples. Согласен, надо будет отдельно вынести в более удобное место, сделаем
Добавлено через 1 минуту
Указанную проблему сейчас разбираем с сапортом.Жирный плюс конторе за оперативность.

Zebestov 14.12.2016 19:17

Цитата:

Сообщение от undefined (Сообщение 1197935)
Как тогда понимать это?

GeneralVimes работает в FGL, продвигает Enhance в среде русскоговорящих разработчиков мобильных игр и прочих приложений. Но непосредственно по коду и прочим техническим моментам лучше, все же, на форум.

Цитата:

Сообщение от undefined (Сообщение 1197935)
Жирный плюс конторе за оперативность.

Да, как правило они весьма бодро реагируют на запросы!

GeneralVimes 15.12.2016 22:48

Поделюсь небольшим инсайдом:
http://i.imgur.com/NDZ77sk.png
Когда статус будет live, можно будет парой кликов встроить в свою игру push-уведомления.

Zebestov 16.12.2016 00:03

Это отлично!

undefined 16.12.2016 14:12

Цитата:

Теперь засада что генрируется нерабочий apk.В android device monitor при установке выскакивает следующая портянка эроров:
Надеюсь сэкономлю кому-то массу нервов и времени т.к. мне пришлось вайпнуть девайс из-за этого.
Вообщем проблема была в следующем:
У меня все время стояла дебажная версия апк и андройд почему-то не может ее заменить релизной.После удаления все завелось

Добавлено через 2 часа 19 минут
GeneralVimes,энханс пытается максимизировать прибыль разраба или выдает рекламу в порядке добавления нетворков?

Добавлено через 2 часа 24 минуты
другими словами является ли энханс медиэйшеном?

GeneralVimes 18.12.2016 21:38

Да-да, является. Там вообще можно выбрать на старте "handle everything for me", тогда и прибыль с разных сеток будет агрегироваться энхансом, и высылаться разработчику единым платежом от FGL.

undefined 18.12.2016 22:31

Цитата:

Сообщение от GeneralVimes (Сообщение 1198008)
Да-да, является. Там вообще можно выбрать на старте "handle everything for me", тогда и прибыль с разных сеток будет агрегироваться энхансом, и высылаться разработчику единым платежом от FGL.

А вот тут по подробнее единственное отличие, которое я заметил - отсутствие выбора нетворков.Откуда он знает какие нетворки я хочу использовать?

Zebestov 18.12.2016 22:38

Цитата:

Сообщение от undefined (Сообщение 1198009)
Откуда он знает какие нетворки я хочу использовать?

Так ведь ты же их галочками отмечаешь на предыдущей странице!

undefined 18.12.2016 23:01

Вложений: 1
Цитата:

Сообщение от Zebestov (Сообщение 1198011)
Так ведь ты же их галочками отмечаешь на предыдущей странице!

нет, галочки отмечаешь на первой странице.И список нетворков есть только у I want to choose SDKs myself

Вложение 32571

Zebestov 18.12.2016 23:27

Все верно. Вот выбранные тобой сети и будут участвовать в медиации. На следующей странице тебе лишь предлагается вписать все необходимые данные от себя или показывать показывать рекламу из-под аккаунтов FGL с последующей разовой выплатой тебе суммарно полученного дохода.

Если ошибаюсь, Генерал поправит.

undefined 19.12.2016 01:06

Так в том то и дело что в пункте "сделай все за меня" выбора нетворков не предлагается. Получается он все доступные адаптеры инжектит в апк? Но по размеру готового апк так не скажешь.

Zebestov 19.12.2016 01:24

Ты не понял суть.
- На первой странице ты выбираешь сети.
- На второй странице ты заполняешь для ЭТИХ СЕТЕЙ поля либо позволяешь заполнить ЭТИ САМЫЕ поля под аккаунты FGL. "Сделай все за меня" — это не сброс галочек на первой странице, а заполнение выбранных сетей данными FGL на второй.

undefined 19.12.2016 01:50

Хочешь сказать надо сначала выбрать I want to choose SDKs myself, расставить галки у нетворков,потом выбрать handle everything for me и он добавит адаптеры из I want to choose SDKs myself? Крайне неинтуитивно.

Zebestov 19.12.2016 15:07

Как это неинтуитивно! Просто нужно всегда не летать в облаках, а не упускать контекст, это легко.

undefined 19.12.2016 15:37

так контекст такой: заходит человек первый раз и жмет "сделать все красиво", его кидают на следующую страницу, где нетворков уже нет и не будет до конца процесса.Это интуитивно по твоему?

Добавлено через 7 минут
при этом список нетворков появляется только при выборе I want to choose SDKs myself что как бы намекает что и относится он(список) только к этому пункту.

Zebestov 19.12.2016 16:10

Все, о чем ты говоришь, должно быть вполне ожидаемым после выбора на первой же странице пункта "Handle everything for me", на правда ли?
Констатирую очевидный факт: бро, ты заморачиваешься! =)

undefined 19.12.2016 16:46

Сейчас попробовал:
исходный апк:1.2 мб
enhanced с выбором одного нетворка :8 мб
enhanced Handle everything for me:5.94 мб
Похоже никто из нас не прав.Вопрос о списке нетворков остается открытым

Zebestov 19.12.2016 17:12

Вывод неверный. Как ты сделал его из своего теста? Почему ты не допускаешь, что солянка из ANE разных сетей (даже одной) может оказаться более громоздкой, чем ANE медиатора Enhance?

undefined 19.12.2016 17:29

из того, что медиатор энханса должен включать адаптеры всех сетей, которые он крутит.Либо они договорились с нетворками что у видео всегда будет одинаковый стандартизованный ui(верее его не будет вообще т.к. в том, что собралось нельзя даже звук у видео выключить).

Zebestov 19.12.2016 17:40

Ну вот видишь! Твой тест принес больше вопросов, чем ответов, а ты уже обвиняешь меня в неправоте =)

GeneralVimes 20.12.2016 01:15

Некоторые сети из самостоятельного встраивания не участвуют в handle everything for me. Это из-за особенностей договоров FGL с сетями. Какие конкретно - напишу точно завтра.

undefined 20.12.2016 01:35

GeneralVimes, а можешь у разрабов спросить поддерживаются ли серверные колбэки? А то куда не напишу - всюду динамо :(

caseyryan 20.12.2016 07:32

Нет у них такой штуки пока, даже в планах, но они согласны с тем, что фича нужная. Вот мой вопрос и ответ разработчиков:

Цитата:

Hi!
I'm interested if server callbacks for rewarded videos are possible (maybe I've just missed out on it in the docs, but I haven't managed to find anything like that)?
I want to give some valuable rewards to users for watching video ads and store them with other monetary data in my server database, but as you know, everything that comes from a client is not trustworthy. So it would be just great if Enhance would duplicate its reward callbacks to the specified server address.
And if there is no such possibility for server callbacks, do you have any plans on implementing them?
This is a really vital feature, and I'm not the only one who is interested in having that.
Best regards, Konstantin

----------->>>

Hi Konstantin,

Dave from the FGL engineering team here!

We do not currently support this feature, but as you say it'd definitely be good to support it. I will discuss with the other engineers and see if and where we can get it on our roadmap.

Thanks for using Enhance, and thanks for your feedback!
В общем, есть вероятность, что такая фича в будущем появится

undefined 20.12.2016 12:45

круто.Жаль только через их аккаунты это не пропустишь.

GeneralVimes 20.12.2016 20:08

Цитата:

Сообщение от GeneralVimes (Сообщение 1198046)
Некоторые сети из самостоятельного встраивания не участвуют в handle everything for me. Это из-за особенностей договоров FGL с сетями. Какие конкретно - напишу точно завтра.

Напишу пока по памяти, т.к. английская команда разработки Enhance уже пошла на праздники :) Точно помню, что HeyZap и Applovin входят в "handle everything for me", входит также MediaBrix, причём у них есть интересная фишка. Для игр, показывающих хороший ретеншен они открывают более выгодные объявления (дающие 10$ eCPM для игроков из США, к примеру). Чтобы разработчику получить эти более выгодные рейты, нужно отследить, как игроки играют в игру и скинуть мне сообщение на alexey@fgl.com с графиками. А вообще, если и статистика тоже встроена через Enhance, то автоматически должно приходить "письмо счастья" от FGL.

Вот АдМоб, насколько я помню, в "handle" ещё не участвовал. Но если включать его наряду с другими рекламными СДК отдельными галочками, то медиация происходить будет.


Часовой пояс GMT +4, время: 07:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.