Ö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 mesajları ve istekleri alır ve bu istekleri karşılamak 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 bir Örnek SDK kullanılmıştır. Bu örnek SDK için derlenen bir bağdaştırıcının eksiksiz bir 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ırma platformu aracılığıyla uyumlulaştırılan reklam ağları, bir yayıncıyı tanımlamak için genellikle bir veya daha fazla tanımlayıcıya ihtiyaç duyar. 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.

Bir uyumlulaştırma bağdaştırıcısı geliştirmeden önce, reklam ağınıza erişmek için 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, Bağdaştırıcı 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 bağdaştırıcını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 sürümlü bağdaştırıcıları, 4 haneli bir bağdaştırıcı sürümü şeması kullanır ancak VersionInfoyalnızca 3 haneli değerlere 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 uygulamanın Google Mobile Ads SDK'sını başlatmasının ardından, 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ı başlatmak 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ı ya da 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. Başarılı veya başarısız bir 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ükleme bildirildikten sonra herhangi bir zamanda bağdaştırıcınızın showAd() yöntemini çağırabilir. Bağdaştırıcı, ödüllü reklamı göstermelidir. 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.

Genellikle bu geri çağırmalar 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 üzerindeki mevcut 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 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 gerçekleştiğini bildirir.
onVideoComplete() Google Mobile Ads SDK'sına ödüllü reklamın oynatıldığını 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.