Монетизация игры в Google AdMob

Разберемся с вопросом, как монетизировать свою игру в системе Google AdMob. Добавить в приложение можно как обычный баннер или же межстраничное рекламное объявление. В данном примере мы рассмотрим подробнее именно межстраничный блок, так как в отличии от баннера, где нужно под него специально выделять место в игровом пространстве, межстраничный тип, разворачивается на весь экран поверх самого приложения и не требует особых приготовлений. Следуя из названия «межстраничный» такой тип рекламы обычно размещают при переходах, например, в игровом меню. Мы напишем специальный скрипт, который будет постоянно запрашивать рекламный блок, через определенный промежуток времени.

Итак, всё на самом деле просто. Для начала, нужно зарегистрироваться в системе Google AdMob и получить свой идентификатор издателя, если такового еще нет. После такого как с этим будет готово, переходим к самой игре.

Теперь, нужно скачать плагин. Импортируем пакет в игру.

Далее, создаем новый скрипт AdmobGames и добавляем его на сцену:

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class AdmobGames : MonoBehaviour {

	public int timeout = 300; // запрос, через каждый 5 минут (300 секунд)
	private static InterstitialAd interstitial;
	private static bool _done, _open;

	public static bool onScreen
	{
		get{ return _open; }
	}

	public static bool isLoaded
	{
		get{ return _done; }
	}

	void Check()
	{
		if(!interstitial.IsLoaded())
		{
			RequestInterstitial();
		}
	}

        void Awake()
	{
		RequestInterstitial();
		InvokeRepeating("Check", 0, timeout);
	}

	public static void Show()
	{
		if(interstitial.IsLoaded())
		{
			interstitial.Show();
		}
	}

	#region Interstitial callback handlers

	void InterstitialLoaded(object sender, System.EventArgs args)
	{
		_done = true;
		// успешная загрузка запроса 
	}

	void InterstitialFailedToLoad(object sender, AdFailedToLoadEventArgs args)
	{
		// ошибка загрузки
	}

	void InterstitialOpened(object sender, System.EventArgs args)
	{
		_open = true;
		Time.timeScale = 0;
		// развернуто на экране
	}

	void InterstitialClosed(object sender, System.EventArgs args)
	{
                interstitial.Destroy();
		_open = false;
		_done = false;
		Time.timeScale = 1;
		// закрыто / возврат в приложение
	}

	#endregion

	void RequestInterstitial()
	{
		#if UNITY_EDITOR
		string adUnitId = "unused";
		#elif UNITY_ANDROID
		string adUnitId = "MY_ID";  // идентификатор рекламного блока, полученный в личном кабинете Google AdMob
		#elif UNITY_IPHONE
		string adUnitId = "MY_ID";
		#else
		string adUnitId = "unexpected_platform";
		#endif

		interstitial = new InterstitialAd(adUnitId);
		interstitial.OnAdLoaded += InterstitialLoaded;
		interstitial.OnAdFailedToLoad += InterstitialFailedToLoad;
		interstitial.OnAdOpening += InterstitialOpened;
		interstitial.OnAdClosed += InterstitialClosed;
		AdRequest request = new AdRequest.Builder().Build();
		interstitial.LoadAd(request);
	}
}

Данный скрипт, на старте, сразу создает запрос и затем повторяет операцию, через указанный промежуток времени. Дело в том что, чтобы вставить рекламный блок, в начале нужно делать запрос, и когда он успешно обработан, только после этого можно развернуть само объявление.

Чтобы показать объявление, создадим еще один скрипт AdmobGamesComponent:

using UnityEngine;
using System.Collections;

public class AdmobGamesComponent : MonoBehaviour {

	public void ShowAdmob()
	{
		AdmobGames.Show();
	}
}

Его мы цепляем например на кнопки менюшки:

Монетизация игры в Google AdMob

То есть, каждый раз когда происходит нажатие данной кнопки, делается вызов рекламы и если она загружена, то будет развернута. А загружаем мы ее с определенным промежутком времени, например, через каждые пять минут.

Когда игра будет опубликована, допустим в Google Play
Заходим в личный кабинет https://apps.admob.com/
Переходим на вкладку "Монетизация" и добавляем приложение, следуя инструкциям.


Собственно на этом всё. Дополнительную информацию смотрим по этому адресу.

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

Офлайн
sony 14 апреля 2017
Привет!
Вот здесь:
string adUnitId = "MY_ID"; // идентификатор издателя, полученный в личном кабинете Google AdMob

прописывается идентификатор рекламного блока ведь, а не издателя?
Офлайн
sony 14 апреля 2017
Вроде сделал все по инструкции... все равно на устройстве вылазит ошибка загрузки.
void InterstitialFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
Debug.Log("Ошибка загрузки рекламы.");
// ошибка загрузки
}

apk опубликован...
Офлайн
Light 15 апреля 2017
Цитата: sony
прописывается идентификатор рекламного блока ведь, а не издателя?

Да, рекламного блока.
Офлайн
Light,
Не получается в Google Admob зарегаться дает ошибку.Все поля заполнил что делать?
Офлайн
Light 17 июля 2017
Давуд Ахмедов, я тут причем? С этими вопросами в поддержку гугла обращайся.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика