Интеграция Yandex Mobile Ads SDK в Unity

Сегодня мы рассмотрим интеграцию Yandex Mobile Ads SDK в Unity.

Первые шаги:

Первое что надо сделать — это зарегистрироваться в РСЯ https://partner2.yandex.ru/
После регистрации переходим в раздел «Мобильная медиация» и жмём «Добавить
приложение».

ВАЖНО: Приложение должно быть опубликовано в Google Play или App Store, иначе
его невозможно будет добавить.

После успешного добавления нам нужно создать рекламное место. Если мы
интегрируем рекламу в Android Studio или XCode, то нам  доступны
следующие типы рекламы:
● Баннер
● Нативная реклама
● Видео с вознаграждением
● Полноэкранная реклама

Для Unity немного урезанный функционал, и доступны следующие типы рекламы:
● Баннер
● Видео с вознаграждением
● Полноэкранная реклама.

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

Для этого жмём на название приложения и на
кнопку «Добавить рекламное место», вписываем название и выбираем его тип.

Каждое рекламное место имеет свой уникальный ID и находится в столбце «ID
Места». Он нам понадобится в будущем для показа рекламного блока.

Отобразить рекламу пользователю

Для этого у Yandex есть две версии плагина: «Lite Версия» и
«Обычная версия». Мы будем использовать Обычную версию.

Интегрировать плагин вы сможете согласно инструкции: https://yandex.ru/dev/mobile-ads/doc/plugins/unity/mob-mediation/init.html

Возможные ошибки

После добавления обычной версии плагина, у вас может возникнуть
следующая ошибка:
Assets\YandexMobileAds\Editor\PostprocessBuildPlayerYandexMobileAds.cs(12,19): error
CS0234: The type or namespace name ‘iOS’ does not exist in the namespace ‘UnityEditor’
(are you missing an assembly reference?)
Данная ошибка отображается, если у вас не установлена поддержка
билдинга на iOS. Если вы не собираетесь портировать приложение на iOS, то просто
удалите файл по пути:
Assets\YandexMobileAds\Editor\PostprocessBuildPlayerYandexMobileAds.cs, данный
файл никак не влияет на работоспособность плагина на Android.

Как интегрировать каждый тип рекламы:

Интеграция баннера

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

private Banner banner; //переменная с баннером
private void RequestBanner(){
string adUnitId = «adf-12344566789»; //ID места, о котором говорили выше
banner = new Banner(adUnitId, AdSize.BANNER_320x50, AdPosition.BottomCenter);
//указываем id места, размер баннера и его позицию.

Подробнее здесь: https://yandex.ru/dev/mobile-ads/doc/plugins/unity/mob-mediation/banner.html

AdRequest request = new AdRequest.Builder().Build(); //создаём запрос на вызов баннера
banner.LoadAd(request); //отправляем запрос на вызов баннера

Далее, для загрузки баннера просто необходимо вызвать метод «RequestBanner».

Интеграция рекламы с вознаграждением

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

private RewardedAd rewardedAd; //переменная с рекламой
private void RequestRewardedAd(){
     string adUnitId = «adf-1003143»; //ID места
     rewardedAd = new RewardedAd(adUnitId); //заполняем переменную с рекламой
     AdRequest request = new AdRequest.Builder().Build(); //создаём запрос на рекламу
     rewardedAd.LoadAd(request); // отсылаем запрос на рекламу
     //начинаем отслеживать события рекламы
     rewardedAd.OnRewardedAdLoaded += this.HandleRewardedAdLoaded;
     rewardedAd.OnRewardedAdFailedToLoad += this.HandleRewardedAdFailedToLoad;
     rewardedAd.OnReturnedToApplication += this.HandleReturnedToApplication;
     rewardedAd.OnLeftApplication += this.HandleLeftApplication;
     rewardedAd.OnRewardedAdShown += this.HandleRewardedAdShown;
     rewardedAd.OnRewardedAdDismissed += this.HandleRewardedAdDismissed;
     rewardedAd.OnImpression += this.HandleImpression;
     rewardedAd.OnRewarded += this.HandleRewarded;
}
//метод для вызова рекламы
private void ShowRewardedAd(){
//если реклама загружена — показываем её
     if (this.rewardedAd.IsLoaded()){
          rewardedAd.Show();
     }
}
//каждый метод будет вызван при определенном действии связанной с рекламой (её загрузкой и тд)
public void HandleRewardedAdLoaded(object sender, EventArgs args){
     ShowRewardedAd(); //реклама загружена — показываем её
}
public void HandleRewardedAdFailedToLoad(object sender, AdFailureEventArgs args){
     Debug.Log(«HandleRewardedAdFailedToLoad event received with message: » + args.Message);
}
public void HandleReturnedToApplication(object sender, EventArgs args){
     Debug.Log(«HandleReturnedToApplication event received»);
}
public void HandleLeftApplication(object sender, EventArgs args){
     Debug.Log(«HandleLeftApplication event received»);
}
public void HandleRewardedAdShown(object sender, EventArgs args){
     Debug.Log(«HandleRewardedAdShown event received»);
}
public void HandleRewardedAdDismissed(object sender, EventArgs args){
     Debug.Log(«HandleRewardedAdDismissed event received»);
}
public void HandleImpression(object sender, ImpressionData impressionData){
     Debug.Log(«HandleImpression event received with data: » + data);
}
public void HandleRewarded(object sender, Reward args){
     Debug.Log(«HandleRewarded event received: amout = » + args.amount + «, type = » + args.type);
}

Для показа рекламы вызываем метод «RequestRewardedAd»

Интеграция полноэкранной рекламы

Для интеграции полноэкранной рекламы используем код:

private Interstitial interstitial; //переменная с рекламой
private void RequestInterstitial(){
     string adUnitId = «adf-10034305»; //id блока
     interstitial = new Interstitial(adUnitId); //заполняем переменную с рекламой
     AdRequest request = new AdRequest.Builder().Build(); //создаём запрос на показ рекламы
     interstitial.LoadAd(request); //отправляем запрос
     //каждый метод будет вызван при определенном действии связанной с рекламой (её загрузкой и тд)
     interstitial.OnInterstitialLoaded += this.HandleInterstitialLoaded;
     interstitial.OnInterstitialFailedToLoad += this.HandleInterstitialFailedToLoad;
     interstitial.OnReturnedToApplication += this.HandleReturnedToApplication;
     interstitial.OnLeftApplication += this.HandleLeftApplication;
     interstitial.OnInterstitialShown += this.HandleInterstitialShown;
     interstitial.OnInterstitialDismissed += this.HandleInterstitialDismissed;
     interstitial.OnImpression += this.HandleImpression;
}
//метод для показа рекламы
private void ShowInterstitial(){
if (this.interstitial.IsLoaded()){
     interstitial.Show();
}
}
public void HandleInterstitialLoaded(object sender, EventArgs args){
     ShowInterstitial(); //при загрузки рекламы — показываем её
}
public void HandleInterstitialFailedToLoad(object sender, AdFailureEventArgs args){
Debug.Log(«HandleInterstitialFailedToLoad event received with message: » + args.Message);
}
public void HandleReturnedToApplication(object sender, EventArgs args){
     Debug.Log(«HandleReturnedToApplication event received»);
}
public void HandleLeftApplication(object sender, EventArgs args){
     Debug.Log(«HandleLeftApplication event received»);
}
public void HandleInterstitialShown(object sender, EventArgs args){
     Debug.Log(«HandleInterstitialShown event received»);
}
public void HandleInterstitialDismissed(object sender, EventArgs args){
     Debug.Log(«HandleInterstitialDismissed event received»);
}
public void HandleImpression(object sender, ImpressionData impressionData){
     Debug.Log(«HandleImpression event received with data: » + data);
}

Далее, для загрузки показа рекламы необходимо вызвать метод «RequestInterstitial».

Важно:Реклама не будет показываться в редакторе Unity, для этого нужно сбилдить приложение на телефон и уже с телефона запустить его.

Успешных интеграций!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *