Миграция с 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.");
}