Sự kiện tuỳ chỉnh cho quảng cáo có tặng thưởng

Điều kiện tiên quyết

Hoàn tất việc thiết lập sự kiện tuỳ chỉnh.

Yêu cầu quảng cáo có tặng thưởng

Khi mục hàng sự kiện tuỳ chỉnh được tiếp cận trong chuỗi dàn xếp kiểu thác nước, phương thức loadRewardedAd() được gọi trên tên lớp mà bạn được cung cấp khi tạo một đối tượng tuỳ chỉnh sự kiện. Trong trường hợp này, phương thức đó nằm trong SampleCustomEvent, sau đó sẽ gọi loadRewardedAd() trong SampleRewardedCustomEventLoader.

Để yêu cầu một quảng cáo có tặng thưởng, hãy tạo hoặc sửa đổi lớp mở rộng Adapter thành triển khai loadRewardedAd(). Ngoài ra, hãy tạo một lớp mới để triển khai MediationRewardedAd.

Trong ví dụ về sự kiện tuỳ chỉnh, SampleCustomEvent mở rộng lớp Adapter, sau đó uỷ quyền cho SampleRewardedCustomEventLoader.

Java

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdConfiguration;
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 SampleCustomEvent extends Adapter {

  private SampleNativeCustomEventLoader nativeLoader;

  @Override
  public void loadRewardedAd(
      @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      @NonNull
          MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
              mediationAdLoadCallback) {
    rewardedLoader =
        new SampleRewardedCustomEventLoader(
            mediationRewardedAdConfiguration, mediationAdLoadCallback);
    rewardedLoader.loadAd();
  }
}

SampleRewardedCustomEventLoader chịu trách nhiệm thực hiện những việc sau:

  • Đang tải quảng cáo có tặng thưởng

  • Triển khai giao diện MediationRewardedAd.

  • Nhận và báo cáo lệnh gọi lại sự kiện quảng cáo cho SDK Quảng cáo của Google trên thiết bị di động

Thông số không bắt buộc được xác định trong giao diện người dùng Ad Manager là được bao gồm trong cấu hình quảng cáo. Bạn có thể truy cập thông số này thông qua adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD). Thông số này thường là giá trị nhận dạng đơn vị quảng cáo mà SDK mạng quảng cáo yêu cầu khi tạo thực thể cho một đối tượng quảng cáo.

Java

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration;
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 SampleRewardedCustomEventLoader extends SampleRewardedAdListener
    implements MediationRewardedAd {

  /** Configuration for requesting the rewarded ad from the third-party network. */
  private final MediationRewardedAdConfiguration mediationRewardedAdConfiguration;

  /**
   * A {@link MediationAdLoadCallback} that handles any callback when a Sample
   * rewarded ad finishes loading.
   */
  private final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
      mediationAdLoadCallback;

  /** Callback for rewarded ad events. */
  private MediationRewardedAdCallback rewardedAdCallback;

  /** Constructor. */
  public SampleRewardedCustomEventLoader(
      @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration,
      @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback>
              mediationAdLoadCallback) {
    this.mediationRewardedAdConfiguration = mediationRewardedAdConfiguration;
    this.mediationAdLoadCallback = mediationAdLoadCallback;
  }

  /** Loads the rewarded ad from the third-party ad network. */
  public void loadAd() {
    // All custom events have a server parameter named "parameter" that returns
    // back the parameter entered into the AdMob UI when defining the custom event.
    Log.i("RewardedCustomEvent", "Begin loading rewarded ad.");
    String serverParameter = mediationRewardedAdConfiguration
        .getServerParameters()
        .getString(MediationConfiguration
        .CUSTOM_EVENT_SERVER_PARAMETER_FIELD);
    Log.d("RewardedCustomEvent", "Received server parameter.");
    SampleAdRequest request = createSampleRequest(mediationRewardedAdConfiguration);
    sampleRewardedAd = new SampleRewardedAd(serverParameter);
    sampleRewardedAd.setListener(this);
    Log.i("RewardedCustomEvent", "Start fetching rewarded ad.");
    sampleRewardedAd.loadAd(request);
  }

  public SampleAdRequest createSampleRequest(
      MediationAdConfiguration mediationAdConfiguration) {
    SampleAdRequest request = new SampleAdRequest();
    request.setTestMode(mediationAdConfiguration.isTestRequest());
    request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet());
    return request;
  }
}

Tuỳ thuộc vào việc quảng cáo được tìm nạp thành công hay gặp lỗi, bạn sẽ gọi onSuccess() hoặc onFailure(). onSuccess() được gọi bằng cách truyền vào một thực thể của lớp triển khai MediationRewardedAd

Thông thường, các phương thức này được triển khai bên trong lệnh gọi lại từ SDK của bên thứ ba mà bộ chuyển đổi của bạn triển khai. Trong ví dụ này, SDK mẫu có một SampleAdListener với các lệnh gọi lại có liên quan:

Java

@Override
public void onRewardedAdLoaded() {
  rewardedAdCallback = mediationAdLoadCallback.onSuccess(this);
}

@Override
public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) {
    mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode));
}

MediationRewardedAd yêu cầu triển khai một phương thức showAd() để hiển thị quảng cáo:

Java

@Override
public void showAd(Context context) {
  if (!(context instanceof Activity)) {
    rewardedAdCallback.onAdFailedToShow(
        SampleCustomEventError.createCustomEventNoActivityContextError());
    return;
  }
  Activity activity = (Activity) context;

  if (!sampleRewardedAd.isAdAvailable()) {
    rewardedAdCallback.onAdFailedToShow(
        SampleCustomEventError.createCustomEventAdNotAvailableError());
    return;
  }
  sampleRewardedAd.showAd(activity);
}

Chuyển tiếp các sự kiện dàn xếp đến SDK quảng cáo trên thiết bị di động của Google

Sau khi gọi onSuccess(), MediationRewardedAdCallback được trả về sau đó đối tượng có thể được bộ chuyển đổi sử dụng để chuyển tiếp các sự kiện trình bày từ SDK bên thứ ba sang SDK quảng cáo trên thiết bị di động của Google. Chiến lược phát hành đĩa đơn Lớp SampleRewardedCustomEventLoader mở rộng SampleAdListener để chuyển tiếp lệnh gọi lại từ mạng quảng cáo mẫu đến Google Mobile SDK quảng cáo.

Sự kiện tuỳ chỉnh của bạn cần chuyển tiếp nhiều lệnh gọi lại trong số này nhất có thể có thể, để ứng dụng của bạn nhận được các sự kiện tương đương này từ SDK quảng cáo trên thiết bị di động. Dưới đây là ví dụ về cách sử dụng lệnh gọi lại:

Java

@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();
}

Đến đây, bạn đã hoàn tất việc triển khai sự kiện tuỳ chỉnh cho quảng cáo có tặng thưởng. Đầy đủ ví dụ có trên GitHub. Bạn có thể sử dụng đơn vị quảng cáo đó với một mạng quảng cáo đã được hỗ trợ hoặc sửa đổi đơn vị quảng cáo thành hiển thị quảng cáo có tặng thưởng trong sự kiện tuỳ chỉnh.