вторник, 15 декабря 2015 г.

Встраивание рекламы в торковские игры 

Юрий “yurembo” Язев
независимый игродел

После того, как я разместил в Google Play свои игры, мне стали приходить разного рода предложения о повышении продаж: через рекламу за определенную плату, за определенный процент от продаж, etc. Одно из этих предложений мне понравилось, показавшись вполне реальным. Поэтому, сегодня, я хочу рассказать как реализовать рекламу в игре на движке Torque 2D.

Итак, я решил воспользоваться услугами сервиса AdBuddiz
Дальнейшее повествование будет вестись на основе моей игры MagicMancala, уже выложенной в Google Play, не беда, загрузим 2-ю версию. 

Чтобы зарегистрировать нашу Android-игру, надо сначала зарегистрироваться на сайте http://www.adbuddiz.com/. Затем, перейти в раздел Dashboard (открывается автоматически) и нажать кнопку Add app. Тебе предложат выбрать платформу: Google Play, Apple Store. На следующей странице надо ввести имя пакета и нажать Next.

Дальше, если приложение уже успешно зарегистрировано в Google Play, загрузиться новая страница, на которой отобразится иконка приложения и будет предложено выбрать стандартную ориентацию. 
Жмем кнопку “Create App”. На следующей - финальной странице, сообщающей об успешном добавлении приложения, будет выведен Publisher Key для твоей игры. 
Этот же ключ будет находиться в письме, которое придет на ящик, указанный при регистрации на http://www.adbuddiz.com/. На этом, добавление приложения завершено. Итак, Publisher Key у нас уже есть, совсем скоро он нам понадобится.

Откроем проект игры в Android Studio. Заодно, я заменил титульную картинку, а так же иконку для запуска игры.

Новая титульная картинка

Далее, откроем файл build.dradle (Module: app), в начало файла, после описания параметров signingConfigs { … } добавим следующий код:

dependencies {
    compile 'com.purplebrain.adbuddiz.sdk:AdBuddiz-Java:3.+'
}
repositories {
    maven {
        url 'http://repository.adbuddiz.com/maven'
    }
}

Затем на инструментальной панели Android Studio надо нажать кнопку «Sync Project with Gradle Files». После это откроем AndroidManifest.xml. В начало файла после описания манифеста добавим следующий код:

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

<!-- Highly recommended permission to get more ads and revenue -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Кроме этого, в раздел тэга <application …> перед его закрытием вставим такие строчки:

<activity android:name="com.purplebrain.adbuddiz.sdk.AdBuddizActivity"
          android:theme="@android:style/Theme.Translucent" />

Тем самым, мы дополняем тэг <activity …>, поскольку он уже написан. 
Еще в этом файле надо увеличить номер версии приложения - строчка: android:versionCode="2" в манифесте. Потому что, при загрузки в Google Play приложения с одинаковым именем и той же версией, магазин сообщит о нарушении и откажет размещать.

Следующим шагом надо настроить SDK и включить объект рекламы. В обычных android-приложениях есть java-метод protected void onCreate() { … }, в нем и осуществляется это действо, однако, игра на движке Torque 2D не совсем обычное android-приложение, оно полностью написано на C/C++, и, хотя в нем имеется код инициализации на java, метод onCreate() там отсутствует. Но есть аналогичный метод, в котором можно произвести настройку рекламы. Откроем файл MyNativeActivity.java и перейдем в метод onWindowFocusChanged. Он выглядит следующим образом:

@Override
  public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
              View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                      | View.SYSTEM_UI_FLAG_FULLSCREEN
                      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);}
  }
}

После установки свойств окна добавим такие строчки:
AdBuddiz.setLogLevel(AdBuddizLogLevel.Info);
Тем самым, мы включили средства логирования данного SDK.
В случае отсутствия регистрации приложения, для проведения проверки на успешность настройки SDK, надо включить тестовый режим (даже если приложение уже зарегистрировано, как в нашем случае, эту проверку лучше провести). Это делается такой строчкой:

AdBuddiz.setTestModeActive();

Затем, надо инициализировать  SDK для получения рекламы:

AdBuddiz.setPublisherKey("полученный Publisher Key");

С помощью этого метода мы передаем полученный при регистрации приложения Publisher Key для инициализации ключа, по которому будет определяться приложение в маркете, и в соответствии с его свойствами (как то: возрастные ограничения, etc) будет подбираться и показываться реклама. Между тем, если приложение не зарегистрировано (отсутствует Publisher Key), и/или нам надо осуществить проверку, тогда в качестве параметра методу надо передать строку: TEST_PUBLISHER_KEY. В этом случае, будет выведена стандартная реклама от AdBuddiz.
Следующим методом, наше приложение получает рекламу и сохраняет ее в кэше:

AdBuddiz.cacheAds(this);

Наконец, отображаем рекламу:

AdBuddiz.showAd(this);

В итоге, метод onWindowFocusChanged принял следующий вид:

@Override
  public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
              View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                      | View.SYSTEM_UI_FLAG_FULLSCREEN
                      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);}

      AdBuddiz.setLogLevel(AdBuddizLogLevel.Info);
      AdBuddiz.setTestModeActive();
      AdBuddiz.setPublisherKey("TEST_PUBLISHER_KEY");
      AdBuddiz.cacheAds(this);
      AdBuddiz.showAd(this);
  }
}

Стандартная реклама от AdBuddiz выглядит так:




Когда добавленный код будет протестирован, и ты убедишься в том, что все работает, как надо, удали строчку: AdBuddiz.setTestModeActive(); А в вызове метода setPublisherKey параметр “TEST_PUBLISHER_KEY” замени на полученный в результате регистрации приложения Publisher Key.

После регистрации приложения и задания ему выданного Publisher Key, в него стала приходить реальная реклама:





Комментариев нет:

Отправить комментарий