보상형 전면 광고

보상형 전면 광고는 자연스러운 앱 전환 중에 자동으로 게재되는 광고에 대해 보상을 제공하는 인센티브형 광고 형식입니다. 보상형 광고와 달리 사용자는 수신 동의하지 않고도 보상형 전면 광고를 볼 수 있습니다.

기본 요건

항상 테스트 광고로 테스트

앱을 제작하고 테스트할 때는 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 이렇게 하지 않으면 계정이 정지될 수 있습니다.

테스트 광고를 로드하는 가장 쉬운 방법은 Android 보상형 전면 광고 테스트를 위한 전용 광고 단위 ID를 사용하는 것입니다.

ca-app-pub-3940256099942544/5354046379

이 ID는 모든 요청에 대해 테스트 광고를 반환하도록 특별히 구성되었으며, 코딩, 테스트, 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 앱을 게시하기 전에 이 ID를 자체 광고 단위 ID로 바꿔야 합니다.

GMA Next-Gen SDK 테스트 광고에 관한 자세한 내용은 테스트 광고 사용 설정을 참고하세요.

광고 로드

광고를 로드하기 위해 GMA Next-Gen SDK는 다음을 제공합니다.

단일 광고 로드 API로 로드

다음 예시는 단일 광고를 로드하는 방법을 보여줍니다.

Kotlin

import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAd
import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds

class RewardedInterstitialActivity : Activity() {
  private var rewardedInterstitialAd: RewardedInterstitialAd? = null

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Load ads after you initialize GMA Next-Gen SDK.
    RewardedInterstitialAd.load(
      AdRequest.Builder(AD_UNIT_ID).build(),
      object : AdLoadCallback<RewardedInterstitialAd> {
        override fun onAdLoaded(ad: RewardedInterstitialAd) {
          // Rewarded interstitial ad loaded.
          rewardedInterstitialAd = ad
        }

        override fun onAdFailedToLoad(adError: LoadAdError) {
          // Rewarded interstitial ad failed to load.
          rewardedInterstitialAd = null
        }
      },
    )
  }

  companion object {
    // Sample rewarded interstitial ad unit ID.
    const val AD_UNIT_ID = "ca-app-pub-3940256099942544/5354046379"
  }
}

자바

import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAd;
import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;

class RewardedActivity extends Activity {
  // Sample rewarded interstitial ad unit ID.
  private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/5354046379";
  private RewardedInterstitialAd rewardedInterstitialAd;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load ads after you initialize GMA Next-Gen SDK.
    RewardedInterstitialAd.load(
        new AdRequest.Builder(AD_UNIT_ID).build(),
        new AdLoadCallback<RewardedInterstitialAd>() {
          @Override
          public void onAdLoaded(@NonNull RewardedInterstitialAd rewardedInterstitialAd) {
            // Rewarded interstitial ad loaded.
            AdLoadCallback.super.onAdLoaded(rewardedInterstitialAd);
            RewardedActivity.this.rewardedInterstitialAd = rewardedInterstitialAd;
          }

          @Override
          public void onAdFailedToLoad(@NonNull LoadAdError adError) {
            // Rewarded interstitial ad failed to load.
            AdLoadCallback.super.onAdFailedToLoad(adError);
            rewardedInterstitialAd = null;
          }
        }
    );
  }
}

광고 미리 로드 API로 로드

사전 로드를 시작하려면 다음을 실행하세요.

  1. 광고 요청으로 미리 로드 구성을 초기화합니다.

  2. 광고 단위 ID와 미리 로드 구성으로 보상형 전면 광고의 프리로더를 시작합니다.

Kotlin

private fun startPreloading(adUnitId: String) {
  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig)
}

자바

private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig);
}

광고를 표시할 준비가 되면 프리로더에서 광고를 폴링합니다.

Kotlin

// Polling returns the next available ad and loads another ad in the background.
val ad = RewardedInterstitialAdPreloader.pollAd(adUnitId)

자바

// Polling returns the next available ad and loads another ad in the background.
final RewardedInterstitialAd ad = RewardedInterstitialAdPreloader.pollAd(adUnitId);

RewardedInterstitialAdEventCallback 설정하기

RewardedInterstitialAdEventCallbackRewardedInterstitialAd 표시와 관련된 이벤트를 처리합니다. 보상형 전면 광고를 표시하기 전에 콜백을 설정해야 합니다.

Kotlin

// Listen for ad events.
rewardedInterstitialAd?.adEventCallback =
  object : RewardedInterstitialAdEventCallback {
    override fun onAdShowedFullScreenContent() {
      // Rewarded interstitial ad did show.
    }

    override fun onAdDismissedFullScreenContent() {
      // Rewarded interstitial ad did dismiss.
      rewardedInterstitialAd = null
    }

    override fun onAdFailedToShowFullScreenContent(
      fullScreenContentError: FullScreenContentError
    ) {
      // Rewarded interstitial ad failed to show.
      rewardedInterstitialAd = null
    }

    override fun onAdImpression() {
      // Rewarded interstitial ad did record an impression.
    }

    override fun onAdClicked() {
      // Rewarded interstitial ad did record a click.
    }
  }

자바

// Listen for ad events.
rewardedInterstitialAd.setAdEventCallback(
    new RewardedInterstitialAdEventCallback() {
      @Override
      public void onAdShowedFullScreenContent() {
        // Rewarded interstitial ad did show.
        RewardedInterstitialAdEventCallback.super.onAdShowedFullScreenContent();
      }

      @Override
      public void onAdDismissedFullScreenContent() {
        // Rewarded interstitial ad did dismiss.
        RewardedInterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
        rewardedInterstitialAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(
          @NonNull FullScreenContentError fullScreenContentError) {
        // Rewarded interstitial ad failed to show.
        RewardedInterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
            fullScreenContentError);
        rewardedInterstitialAd = null;
      }

      @Override
      public void onAdImpression() {
        // Rewarded interstitial ad did record an impression.
        RewardedInterstitialAdEventCallback.super.onAdImpression();
      }

      @Override
      public void onAdClicked() {
        // Rewarded interstitial ad did record a click.
        RewardedInterstitialAdEventCallback.super.onAdClicked();
      }
    }
);

광고 게재

보상형 전면 광고를 표시하려면 show() 메서드를 사용합니다. OnUserEarnedRewardListener 객체를 사용하여 보상 이벤트를 처리합니다.

Kotlin

// Show the ad.
rewardedInterstitialAd?.show(
  this@RewardedActivity,
  object : OnUserEarnedRewardListener {
    override fun onUserEarnedReward(rewardItem: RewardItem) {
      // User earned the reward.
      val rewardAmount = rewardItem.amount
      val rewardType = rewardItem.type
    }
  },
)

자바

// Show the ad.
rewardedInterstitialAd.show(
    RewardedActivity.this,
    new OnUserEarnedRewardListener() {
      @Override
      public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
        // User earned the reward.
        int rewardAmount = rewardItem.getAmount();
        String rewardType = rewardItem.getType();
    }
});

GMA Next-Gen SDK의 사용을 보여주는 예시 앱을 다운로드하여 실행합니다.