Новости

Как правильно применять в JavaScript асинхронные функции: примеры работы с ES 2017
От автора: возможность писать на JavaScript асинхронные функции является важным обновлением в ES2017. Что такое асинхронные функции? Асинхронные функции — это функции, которые возвращают promise. Мы

WordPress JavaScript — как правильно подключить файл скрипта к шаблону сайта
Использование в шаблонах WordPress JavaScript скриптов давно стало обычным делом. Их подключение возможно несколькими способами, начиная с классического варианта с использование голого HTML. Но чтобы все

Как исправить JavaScript error "ВКонтакте"? Что делать при ошибках JavaScript в "ВКонтакте"?
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Правильное использование Tor Browser
Tor Browser полностью анонимен – Миф или реальность? Многие считают, что Tor — это полностью анонимное и безопасное средство для интернет-серфинга, которое не дает никому возможность контролировать то,

Javascript error object is not a function вконтакте как исправить
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Как исправить ошибку javascript error вконтакте
На сегодняшний день «Вконтакте» является наиболее удобным русскоязычным ресурсом, который представляет собой не только крупнейшую социальной сеть, но и сервис для просмотра видео и прослушивания аудиозаписей.

Что такое JavaScript и для чего он используется?
Подробности декабря 10, 2015 Просмотров: 20225 В интернете миллионы веб-страниц,

Практика javascript синтаксис написания
Javascript — это язык программирования, который активно используется для построения динамических веб страниц. Собственно с этой целью он и был изобретен. У нашего с вами языка еще есть такое интересное

JavaScript учебник
Код функций в JavaScript начинает выполнение после их вызова. Функции являются одним из наиболее важных строительных блоков кода в JavaScript. Функции состоят из набора команд и обычно выполняют

Рекомендации решившим начать изучать JavaScript
Если вы решили начать изучать JavaScript , то эта статья для вас. Надеюсь, что её прочтение избавит вас в будущем от множества ошибок и сделает его изучения более простым, быстрым и эффективным. В статье

LibGDX: Часть 7.1. Использование AdMob

Опубликовано: 01.09.2018

видео libGDX: Часть 7.1. Использование AdMob

LibGDX - Scene2D (Slide 15) - FreeType Fonts (Part 7)

Ради интереса решил посмотреть сколько в принципе можно заработать на рекламе в не очень раскрученном приложении. Как раз дописывал Lode Runner’а , в него и запихнул. Решил показать, как добавить в свои игры на LibGDX рекламу.


LibGDX Part 7: Intro to Box2D - Creating Super Mario Bros

Google AdMob Ads SDK для Android

В целом трудностей никаких нет. Порадовало, что в руководстве всё чётко расписано как делать, при чём на русском. Так же, не мало инфы можно на developer.android.com найти.

В Eclipse вообще проблем нет. Выбирайте Android SDK Manager и там скачивайте/обновляйте необходимый SDK. В принципе, можно и самому скачать SDK с developer.android.com .


Part 7: Make Birds Fly - Make Video Games w/ LibGDX: Flappy Bird

Для работы пакета Google AdMob Ads SDK для Android требуется операционная система Android версии 1.5 или более поздней. Убедитесь, что у вас установлена последняя версия SDK для Android и что компиляция настроена как минимум для Android 3.2 (задайте для target в default.properties значение android-13).

AdMob SDK в разделе Extras в менеджере.

Добавление JAR-архива SDK

1. Нажмите правой кнопкой мыши на проект своего приложения в Eclipse и выберите Properties .

2. Выберите Java Build Path .

3. На вкладке Libraries нажмите Add External JARs и добавьте SDK.

4. На вкладке Order and Export поставьте галку напротив либы.

Введение

В оффициальном мануале по либе написано как рекламу добавить. Может кто-то там не разберётся или ещё чего, поэтому сам распишу.

Background

Чтобы встроить рекламу, необходимо понять как работает LibGDX. Взглянем на типичную реализацию главного Activity для игры на LibGDX. Что-то вроде такого:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.useAccelerometer = false; config.useCompass = false; config.useWakelock = true; config.useGL20 = true; initialize(new BomberMan(this), config); }

Нам тут интересен метод initialize. Посмотрим, что там внутри.

public void initialize(ApplicationListener listener, AndroidApplicationConfiguration config) { graphics = new AndroidGraphics(this, ... ... requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags( WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); setContentView(graphics.getView(), createLayoutParams()); ... }

Что там происходит:

Создаётся объект AndroidGraphics с некоторыми параметрами. Определяется, что у окна нет названия. Определяется, что окно во весь экраню Вызывается setContentView().

Последний шаг всё связывает и позволяет использовать представление libgdx в качестве основного представления. Теперь надо понять, как туда впихнуть AdMob.

Инициализация

Надо понять, что AdMob использует свое собственное представление. И мы знаем, что libgdx создает представление. Вызывая setContentView () для представления libgdx, мы уже не можем впихнуть AdMob. Таким образом, вот то, что мы должны сделать:

Создать слой, который может включать в себя другие. Создать представление libgdx, добавить к слою. Создать представление AdMob, добавить его к слою. Вызвать setContentView() для слоя.

Для этого идеально подходит RelativeLayout, которые может содержать другие слои, которые могут перекрывать друг друга. Приведу весь код целиком с комментами. После всех манипуляций метод будет примерно таким:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.useAccelerometer = false; config.useCompass = false; config.useWakelock = true; config.useGL20 = true; //создём главный слой RelativeLayout layout = new RelativeLayout(this); //устанавливаем флаги, которые устанавливались в методе initialize() вместо нас requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags( WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); //представление для LibGDX View gameView = initializeForView(new LodeRunner(this), config); //представление и настройка AdMob adView = new AdView(this, AdSize.BANNER, "ваш_ID_в_AdMob"); AdRequest adRequest = new AdRequest(); adView.loadAd(adRequest); //добавление представление игрык слою layout.addView(gameView); RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); //добавление представление рекламы к слою layout.addView(adView, adParams); //всё соединяем в одной слое setContentView(layout); }

AndroidManifest

Нужно добавить разрешения на доступ к сети.

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Ну и добавить само активити AdMob.

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden| orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

Управление рекламой

Теперь нам необходимо скрывать/отображать и подгружать рекламу. Для начала в админке AdMob надо выбрать пункт, что вы будете сами обновлять рекламу в коде. Можно этого и не делать. Но, с нашей реализацией реклама в фоне есть всегда, если она будет обновляться каждые 60 секунд, как пример, то CTR упадёт, так как юзер её не видит, а счётчик показов растёт.

Создадим метод, который будет отображать/скрывать рекламу, когда нам надо. Если сделать обычный метод, то при попытке вызова из игры, вывалиться ошибка Can’t create handler inside thread that has not called Looper.prepare() . Из-за того, что вызов происходит из рабочего дочернего потока.

Для обхода этой ошибки создадим интерфейс.

public interface IActivityRequestHandler { public void showAdMob(boolean show); }

Реализуем его в нашем классе и будем работать с хэндлером и слать ему сообщения.

public class MainActivity extends AndroidApplication implements IActivityRequestHandler { ... @Override public void showAdMob(boolean show){ handler.sendEmptyMessage(show ? 1 : 0); } protected Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what ==0) adView.setVisibility(View.GONE); if(msg.what==1){ adView.setVisibility(View.VISIBLE); AdRequest adRequest = new AdRequest(); adView.loadAd(adRequest); } } }; }

Теперь, когда вам необходимо показать рекламу, вызывайте метод showAdMob(true); и showAdMob(false); для скрытия.

Тестирование

Во время разработки должен быть включен тестовый режим, иначе вы не сможете нажимать на свои объявления. Для этого необходимо добавить строку adRequest.addTestDevice("TEST_DEVICE_ID"); Как узнать ID для этого метода?

Добавьте фильтр для лога. Запустите ваше приложение в режиме отладки. Вы увидите в логе что-то вроде такого.

Берёте этот ID и вписываете в метод. Теперь при разработке вам будут показаны тестовые рекламные предложения. Они будут кликабельны и за клики по ним ваш аккаунт не заблокируют.

rss