Миграция с Google AdMob (ex. AdMob) на медиацию Яндекса на Android (Java)

Чтобы заменить рекламу Google AdMob (ex. AdMob) на медиацию Yandex Ads на Android, внесите в свой код следующие изменения.

Подключение SDK

Добавьте зависимости для Yandex Mobile Ads SDK в файл Gradle вашего модуля на уровне приложения, обычно app/build.gradle.

dependencies {
    implementation 'com.google.android.gms:play-services-ads:22.5.0'
}
dependencies {
    implementation 'com.yandex.android:mobileads:6.2.0'
    implementation 'com.yandex.ads.mediation:mobileads-admob:22.5.0.0'
    implementation 'com.google.android.gms:play-services-ads:22.5.0'
}

Перед загрузкой рекламы инициализируйте библиотеку с помощью метода initialize():

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
    }
}
public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new InitializationListener() {
            @Override
            public void onInitializationCompleted() {
            }
        });
    }
}

Форматы объявлений

Interstitial

Загрузка объявления

// ...
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      MobileAds.initialize(this, new OnInitializationCompleteListener() {
        @Override
        public void onInitializationComplete(InitializationStatus initializationStatus) {}
      });
      AdRequest adRequest = new AdRequest.Builder().build();

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
        new InterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
        // The mInterstitialAd reference will be null until
        // an ad is loaded.
        mInterstitialAd = interstitialAd;
        Log.i(TAG, "onAdLoaded");
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Handle the error
        Log.i(TAG, loadAdError.getMessage());
        mInterstitialAd = null;
      }
    });
  }
}
// ...
import com.yandex.mobile.ads.interstitial.InterstitialAd;
import com.yandex.mobile.ads.interstitial.InterstitialAdEventListener;

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new InitializationListener() {
            @Override
            public void onInitializationCompleted() {
            }
        });
        final AdRequest adRequest = new AdRequest.Builder().build();

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("demo-interstitial-yandex");
        mInterstitialAd.loadAd(adRequest);
    }
}

Установка колбеков рекламы

Перед показом рекламы установите колбеки, чтобы отслеживать события, связанные с вашим объявлением.

mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when fullscreen content is dismissed.
    Log.d("TAG", "The ad was dismissed.");
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when fullscreen content failed to show.
    Log.d("TAG", "The ad failed to show.");
  }

  @Override
  public void onAdShowedFullScreenContent() {
    // Called when fullscreen content is shown.
    // Make sure to set your reference to null so you don't
    // show it a second time.
    mInterstitialAd = null;
    Log.d("TAG", "The ad was shown.");
  }
});
mInterstitialAd.setInterstitialAdEventListener(new InterstitialAdEventListener() {
    @Override
    public void onAdLoaded() {
        Log.i(TAG, "onAdLoaded");
    }

    @Override
    public void onAdFailedToLoad(@NonNull AdRequestError error) {
        // Handle the error
        Log.i(TAG, error.getDescription());
    }

    @Override
    public void onAdDismissed() {
       // Called when an interstitial ad has been dismissed.
       Log.d("TAG", "The ad was dismissed.");
    }

    @Override
    public void onAdShown() {
      // Called when an interstitial ad has been shown.
      Log.d("TAG", "The ad was shown.");
    }

    @Override
    public void onImpression(@Nullable final ImpressionData impressionData) {
         // Called when an impression was tracked
       Log.d("TAG", "The ad imprassion was tracked.");
    }

    @Override
    public void onAdClicked() {
        // Called when user clicked on the ad.
      Log.d("TAG", "The ad was clicked.");
    }

    @Override
    public void onReturnedToApplication() {
    // Called when user returned to application after click.
      Log.d("TAG", "The ad was clicked.");
    }

    @Override
    public void onLeftApplication() {
// Called when user is about to leave application after tapping on an ad.
    Log.d("TAG", "The ad left application after click.");
    }
});

Показать объявление

Межстраничная реклама должна отображаться во время естественных пауз в работе приложения. Например, между уровнями игры или после того, как пользователь выполнил задачу. Чтобы показать межстраничное объявление, используйте метод show().

if (mInterstitialAd != null) {
  mInterstitialAd.show(MyActivity.this);
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}
if (mInterstitialAd.isLoaded()) {
  mInterstitialAd.show();
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}

Добавьте AdView в верстку

Чтобы отобразить баннер, разместите BannerAdView в нужном Activity или Fragment. Для этого добавьте его в соответствующий XML-файл макета:

# main_activity.xml
...
  <com.google.android.gms.ads.AdView
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_alignParentBottom="true"
      ads:adSize="BANNER"
      ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
  </com.google.android.gms.ads.AdView>
...
# main_activity.xml
...
  <com.yandex.mobile.ads.banner.BannerAdView
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_alignParentBottom="true">
  </com.yandex.mobile.ads.banner.BannerAdView>
...

Укажите в коде обязательные атрибуты:

// ...
mBannerAdView = (BannerAdView) findViewById(R.id.adView);
mBannerAdView.setAdUnitId("demo-banner-yandex")
mBannerAdView.setAdSize(AdSize.BANNER_320x50);
// ...
  • adSize — необходимый размер для баннера.

  • adUnitId — уникальный идентификатор рекламного блока. Если в вашем приложении баннер показывается в разных Activity, рекомендуется для каждого баннера создавать отдельные идентификаторы рекламных блоков в Партнерском интерфейсе.

Также вы можете создать BannerAdView программно:

AdView adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.
BannerAdView adView = new BannerAdView(this);
adView.setAdSize(AdSize.BANNER_320x50);
adView.setAdUnitId("demo-banner-yandex");
// TODO: Add adView to your view hierarchy.

Загрузка рекламы

package ...

import ...
import com.google.android.gms.ads.adRequest;
import com.google.android.gms.ads.adView;

public class MainActivity extends AppCompatActivity {
private AdView mAdView;

protected void  onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
}
}
package ...

import ...
import com.yandex.mobile.ads.banner.BannerAdEventListener;
import com.yandex.mobile.ads.banner.BannerAdView;

public class MainActivity extends AppCompatActivity {
private BannerAdView mAdView;

protected void  onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new InitializationListener() {
            @Override
            public void onInitializationCompleted() {
            }
        });
        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
}
}

Подписка на события отображения рекламы

Чтобы настраивать поведение рекламы, вы можете подписаться на события жизненного цикла рекламных объявлений.

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
    // Code to be executed when an ad finishes loading.
  }
    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
    // Code to be executed when an ad request fails.
    }
    @Override
    public void onAdOpened() {
    // Code to be executed when an ad opens an overlay that
    // covers the screen.
    }
    @Override
    public void onAdClicked() {
    // Code to be executed when the user clicks on an ad.
    }
    @Override
    public void onAdClosed() {
    // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }
});
mAdView.setBannerAdEventListener(new BannerAdEventListener() {
  @Override
  public void onAdLoaded() {
     // Code to be executed when an ad finishes loading.
}
@Override
  public onAdFailedToLoad(@NonNull AdRequestError error) {
     // Code to be executed when an ad request fails.
}
  @Override
  public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
}
  @Override
  public void onImpression(@Nullable final ImpressionData impressionData) {
      // Called when an impression was tracked
  }
  @Override
  public void onLeftApplication() {
      // Called when user is about to leave application after tapping on an ad.
  }
@Override
  public void onReturnedToApplication() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
}
});

Реклама с вознаграждением

Загрузка объекта рекламы с вознаграждением

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.getMessage());
          mRewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
          mRewardedAd = rewardedAd;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}
// ...
import com.yandex.mobile.ads.rewarded.RewardedAd;
import com.yandex.mobile.ads.rewarded.RewardedAdEventListener;

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

mRewardedAd = new RewardedAd(this);
    mRewardedAd.setAdUnitId("demo-rewarded-yandex");
  }
}

Установка колбеков рекламы

mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad was shown.");
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.d(TAG, "Ad failed to show.");
  }

  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad was dismissed.");
    mRewardedAd = null;
  }
});
mRewardedAd.setRewardedAdEventListener(new RewardedAdEventListener() {    @Override
    public void onAdLoaded() {
        Log.i(TAG, "onAdLoaded");
    }

    @Override
    public void onAdFailedToLoad(@NonNull AdRequestError error) {
        // Handle the error
        Log.i(TAG, error.getDescription());
    }

    public void onRewarded(@NonNull final Reward reward) {
        // Handle the reward.
        Log.d(TAG, "The user earned the reward.");
        int rewardAmount = rewardItem.getAmount();
        String rewardType = rewardItem.getType();
    }

    @Override
    public void onAdDismissed() {
       // Called when an interstitial ad has been dismissed.
       Log.d("TAG", "The ad was dismissed.");
    }

    @Override
    public void onAdShown() {
       // Called when an interstitial ad has been shown.
       Log.d("TAG", "The ad was shown.");
    }

    @Override
    public void onImpression(@Nullable final ImpressionData impressionData) {
           // Called when an impression was tracked
       Log.d("TAG", "The ad imprassion was tracked.");
    }

    @Override
    public void onAdClicked() {
            // Called when user clicked on the ad.
      Log.d("TAG", "The ad was clicked.");
    }

    @Override
    public void onReturnedToApplication() {
            // Called when user returned to application after click.
      Log.d("TAG", "The ad was clicked.");
    }

    @Override
    public void onLeftApplication() {
            // Called when user is about to leave application after tapping on an ad.
      Log.d("TAG", "The ad left application after click.");
    }
});

Показать объявление

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

if (mRewardedAd != null) {
  Activity activityContext = MainActivity.this;
  mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}
if (mRewardedAd.isLoaded()) {
  mRewardedAd.show();
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Обратиться в службу поддержки

Предыдущая
Следующая