Ödüllü Reklam Bağdaştırıcısı Uygulama

Uyumlulaştırma bağdaştırıcısı, Google Mobile Ads SDK'sından mesaj ve istek alır ve bu istekleri yerine getirmek için üçüncü taraf ağ SDK'sı ile iletişim kurar.

Bu kılavuz, Google Mobil Reklam Uyumlulaştırması için ödüllü reklam uyumlulaştırma bağdaştırıcısı oluşturmak isteyen reklam ağları için hazırlanmıştır. Aşağıdaki kod snippet'lerinde gösterim amacıyla Örnek SDK kullanılmıştır. Bu örnek SDK için derlenen bir bağdaştırıcının eksiksiz uygulamasını Android Uyumlulaştırma projemizde bulabilirsiniz. Bu kılavuzda, adaptörün nasıl oluşturulacağı açıklanmaktadır.

Bağdaştırıcı sınıfı adını ve sunucu parametrelerini tanımlayın

AdMob Uyumlulaştırması platformuyla uyumlulaştırılan reklam ağları, bir yayıncıyı tanımlamak için genellikle bir veya daha fazla tanımlayıcı gerektirir. Bu tanımlayıcılar sunucu parametreleri olarak temsil edilir ve AdMob kullanıcı arayüzünde uyumlulaştırma için üçüncü taraf reklam ağı yapılandırılırken tanımlanır.

Reklam ağınıza erişmek için, uyumlulaştırma bağdaştırıcısı geliştirmeden önce bağdaştırıcı sınıf adınızı ve diğer gerekli parametreleri Google'a sağlamanız gerekir.

Bağdaştırıcı Sınıfını Uygulama

İlk adım, Adapter soyut sınıfını uygulamaktır:

...
import com.google.android.gms.ads.mediation.Adapter;
...

public class SampleAdapter extends Adapter {
 ...
}

Bu değişiklik, sınıfınızın aşağıda açıklanan çeşitli yöntemleri uygulamasını sağlar.

Rapor sürüm numaraları

Bağdaştırıcı, Google Mobile Ads SDK'sına hem adaptörün hem de üçüncü taraf SDK'nın sürümünü bildirmelidir. Sürümler, VersionInfokullanılarak raporlanır.

Google'ın açık kaynak ve farklı sürümlerde kullanılabilen adaptörleri, 4 haneli bir adaptör sürümü şeması kullanır ancak VersionInfoyalnızca 3 haneli sürümlere izin verir. Bu sorunu çözmek için son iki basamağı aşağıda gösterildiği gibi yama sürümünde birleştirmeniz önerilir:

...
import com.google.android.gms.ads.VersionInfo;
...

public class SampleAdapter extends Adapter implements SampleRewardedAdListener {
  ...
  @Override
  public VersionInfo getVersionInfo() {
    String versionString = BuildConfig.VERSION_NAME;
    String[] splits = versionString.split("\\.");

    if (splits.length >= 4) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }

  @Override
  public VersionInfo getSDKVersionInfo() {
    String versionString = SampleAdRequest.getSDKVersion();
    String[] splits = versionString.split("\\.");

    if (splits.length >= 3) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }
  ...
}

Adaptörü başlatma

Bir uygulama Google Mobile Ads SDK'sını başlattıktan sonra, AdMob kullanıcı arayüzünde uygulama için yapılandırılmış tüm bağdaştırıcılarda initialize() çağrılır.

List<MediationConfiguration> bağımsız değişkeni, AdMob kullanıcı arayüzünde reklam ağınız için yapılandırılmış tüm yerleşimler hakkında bilgi sağlar. Reklam ağı SDK'nızı ilk kullanıma hazırlamak için bu bilgileri kullanın. Reklam ağı SDK'nız başlatıldıktan sonra, initialize() çağrısında sağlanan InitializationCompleteCallbackbağımsız değişkende onInitializationSucceeded() veya onInitializationFailed() yöntemini çağırarak Google Mobile Ads SDK'sına başarılı veya başarısız bir başlatma bildirin.

...
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...

public class SampleAdapter extends Adapter {
  ...
  @Override
  public void initialize(
      Context context,
      InitializationCompleteCallback initializationCompleteCallback,
      List<MediationConfiguration> mediationConfigurations) {
    if (context == null) {
      initializationCompleteCallback.onInitializationFailed(
          "Initialization Failed: Context is null.");
      return;
    }

    // The Sample SDK doesn't have an initialization method, so this example
    // immediately reports a success callback.
    initializationCompleteCallback.onInitializationSucceeded();
  }
  ...
}

Ödüllü reklam isteme

Ödüllü reklam isteğinde bulunmak için loadRewardedAd() yöntemini kullanın. Bir başarılı veya başarısız reklam yüklemesini Google Mobile Ads SDK'sına bildirmenizi sağlayan MediationAdLoadCallback referansını tutun.

MediationRewardedAdCallback nesnesi, onSuccess() çağrıldıktan sonra kullanılabilir. Bu nesne, daha sonra tıklama veya ödül gibi diğer reklam etkinliklerini aktarmak için kullanırsınız.

...
import com.google.ads.mediation.sample.sdk.SampleAdRequest;
import com.google.ads.mediation.sample.sdk.SampleRewardedAd;
import com.google.ads.mediation.sample.sdk.SampleRewardedAdListener;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationRewardedAd;
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
...

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...

  /**
   * A MediationAdLoadCallback that handles any callback when a Sample rewarded
   * ad finishes loading.
   */
  private MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> adLoadCallBack;

  /**
   * Represents a SampleRewardedAd.
   */
  private SampleRewardedAd sampleRewardedAd;

  /**
   * Used to forward rewarded video ad events to the Google Mobile Ads SDK..
   */
  private MediationRewardedAdCallback rewardedAdCallback;

  ...

  // Hold a reference to the MediationAdLoadCallback object to report ad load
  // events to the Google Mobile Ads SDK.
  @Override
  public void loadRewardedAd(
      MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
          mediationAdLoadCallback) {
    adLoadCallBack = mediationAdLoadCallback;
    MediationRewardedAdConfiguration adConfiguration = mediationRewardedAdConfiguration;

    String adUnitId = adConfiguration.getServerParameters().getString(SAMPLE_AD_UNIT_KEY);

    sampleRewardedAd = new SampleRewardedAd(adUnitId);
    SampleAdRequest request = new SampleAdRequest();
    sampleRewardedAd.setListener(this);
    sampleRewardedAd.loadAd(request);
  }

  // Hold a reference to the MediationRewardedAdCallback object to report ad
  // lifecycle events to the Google Mobile Ads SDK.
  @Override
  public void onRewardedAdLoaded() {
    rewardedAdCallback = mediationAdLoadCallBack.onSuccess(this);
  }

  @Override
  public void onRewardedAdFailedToLoad(SampleErrorCode error) {
    mediationAdLoadCallBack.onFailure(error.toString());
  }
  ...
}

Reklamı göster

Google Mobile Ads SDK'sı, SDK'ya başarılı bir reklam yüklemesi bildirildikten sonra her zaman bağdaştırıcınızın showAd() yöntemini çağırabilir. Bağdaştırıcı, ödüllü reklamı görüntülemelidir. Reklam herhangi bir nedenle gösterilemiyorsa onAdFailedToShow() geri çağırmasını arayın.

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void showAd(Context context) {
    if (!(context instanceof Activity)) {
      rewardedAdCallback.onAdFailedToShow(
          "An activity context is required to show Sample rewarded ad.");
      return;
    }
    Activity activity = (Activity) context;

    if (!sampleRewardedAd.isAdAvailable()) {
      rewardedAdCallback.onAdFailedToShow("No ads to show.");
      return;
    }
    sampleRewardedAd.showAd(activity);
  }
  ...
}

Reklam etkinliklerini Mobile Ads SDK'sına bildirme

Bağdaştırıcı, reklamı görüntüledikten sonra başarılı reklam yükleme zamanında sağlanan nesneyi kullanarak reklam yaşam döngüsü olaylarını Google Mobile Ads SDK'sınaMediationRewardedAdCallback uygun şekilde raporlamalıdır.

Bu geri çağırmalar genellikle reklam ağı SDK'nız tarafından tetiklenen geri çağırma yöntemlerinden yönlendirilir. Bu örnek, Örnek SDK geri çağırmalarını uygular ve bunları MediationRewardedAdCallback üzerinde bulunan geri çağırmalarla eşler.

public class SampleAdapter extends Adapter, SampleRewardedAdListener
    implements MediationRewardedAd {
  ...
  @Override
  public void onAdRewarded(final String rewardType, final int amount) {
    RewardItem rewardItem =
        new RewardItem() {
          @Override
          public String getType() {
            return rewardType;
          }

          @Override
          public int getAmount() {
            return amount;
          }
        };
    rewardedAdCallback.onUserEarnedReward(rewardItem);
  }

  @Override
  public void onAdClicked() {
    rewardedAdCallback.reportAdClicked();
  }

  @Override
  public void onAdFullScreen() {
    rewardedAdCallback.onAdOpened();
    rewardedAdCallback.onVideoStart();
    rewardedAdCallback.reportAdImpression();
  }

  @Override
  public void onAdClosed() {
    rewardedAdCallback.onAdClosed();
  }

  @Override
  public void onAdCompleted() {
    rewardedAdCallback.onVideoComplete();
  }
  ...
}

Google Mobile Ads SDK'sına bildirilmesi gereken reklam etkinlikleri aşağıda ayrıntılı bir şekilde açıklanmıştır:

Reklam etkinliği Açıklama
onAdOpened() Google Mobile Ads SDK'sına reklamın açılacağını bildirir.
onVideoStart() Google Mobile Ads SDK'sına bir ödüllü reklamın oynatılmaya başladığını bildirir.
reportAdImpression() Google Mobile Ads SDK'sına reklamda bir gösterim oluştuğunu bildirir.
onVideoComplete() Google Mobile Ads SDK'sına ödüllü reklamın oynatmayı bitirdiğini bildirir.
onUserEarnedReward() Google Mobile Ads SDK'sına kullanıcının ödül kazandığını bildirir.
reportAdClicked() Google Mobile Ads SDK'sına reklamın tıklandığını bildirir.
onAdClosed() Google Mobile Ads SDK'sına reklamın kapatıldığını bildirir.
onAdFailedToShow() Google Mobile Ads SDK'sına reklamın gösterilemediğini bildirir.