보상형 광고

보상형 광고 를 사용하면 동영상 광고, 플레이어블 광고, 설문조사와 상호작용하는 사용자에게 인앱 상품을 리워드로 제공할 수 있습니다.

기본 요건

  • 설정 GMA Next-Gen SDK.
  • 항상 테스트 광고로 테스트

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

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

    /21775744923/example/rewarded

    이 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.rewarded.RewardedAd
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback
    import com.google.android.libraries.ads.mobile.sdk.MobileAds
    
    class RewardedActivity : Activity() {
      private var rewardedAd: RewardedAd? = null
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Load ads after you inititalize GMA Next-Gen SDK.
        RewardedAd.load(
          AdRequest.Builder(AD_UNIT_ID).build(),
          object : AdLoadCallback<RewardedAd> {
            override fun onAdLoaded(ad: RewardedAd) {
              // Rewarded ad loaded.
              rewardedAd = ad
            }
    
            override fun onAdFailedToLoad(adError: LoadAdError) {
              // Rewarded ad failed to load.
              rewardedAd = null
            }
          },
        )
      }
    
      companion object {
        // Sample rewarded ad unit ID.
        const val AD_UNIT_ID = "/21775744923/example/rewarded"
      }
    }
    

    자바

    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.rewarded.RewardedAd;
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback;
    import com.google.android.libraries.ads.mobile.sdk.MobileAds;
    
    class RewardedActivity extends Activity {
      // Sample rewarded ad unit ID.
      private static final String AD_UNIT_ID = "/21775744923/example/rewarded";
      private RewardedAd rewardedAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize GMA Next-Gen SDK.
        RewardedAd.load(
            new AdRequest.Builder(AD_UNIT_ID).build(),
            new AdLoadCallback<RewardedAd>() {
              @Override
              public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                // Rewarded ad loaded.
                AdLoadCallback.super.onAdLoaded(rewardedAd);
                RewardedActivity.this.rewardedAd = rewardedAd;
              }
    
              @Override
              public void onAdFailedToLoad(@NonNull LoadAdError adError) {
                // Rewarded ad failed to load.
                AdLoadCallback.super.onAdFailedToLoad(adError);
                rewardedAd = null;
              }
            }
        );
      }
    }
    

    광고 미리 로드 API로 로드

    미리 로드를 시작하려면 다음 단계를 따르세요.

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

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

    Kotlin

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

    자바

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

    광고를 게재할 준비가 되면 미리 로더에서 광고를 폴링합니다.

    Kotlin

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

    자바

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

    RewardedAdEventCallback 설정

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

    Kotlin

    // Listen for ad events.
    rewardedAd?.adEventCallback =
      object : RewardedAdEventCallback {
        override fun onAdShowedFullScreenContent() {
          // Rewarded ad did show.
        }
    
        override fun onAdDismissedFullScreenContent() {
          // Rewarded ad did dismiss.
          rewardedAd = null
        }
    
        override fun onAdFailedToShowFullScreenContent(
          fullScreenContentError: FullScreenContentError
        ) {
          // Rewarded ad failed to show.
          rewardedAd = null
        }
    
        override fun onAdImpression() {
          // Rewarded ad did record an impression.
        }
    
        override fun onAdClicked() {
          // Rewarded ad did record a click.
        }
      }
    

    자바

    // Listen for ad events.
    rewardedAd.setAdEventCallback(
        new RewardedAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Rewarded ad did show.
            RewardedAdEventCallback.super.onAdShowedFullScreenContent();
          }
    
          @Override
          public void onAdDismissedFullScreenContent() {
            // Rewarded ad did dismiss.
            RewardedAdEventCallback.super.onAdDismissedFullScreenContent();
            rewardedAd = null;
          }
    
          @Override
          public void onAdFailedToShowFullScreenContent(
              @NonNull FullScreenContentError fullScreenContentError) {
            // Rewarded ad failed to show.
            RewardedAdEventCallback.super.onAdFailedToShowFullScreenContent(
                fullScreenContentError);
            rewardedAd = null;
          }
    
          @Override
          public void onAdImpression() {
            // Rewarded ad did record an impression.
            RewardedAdEventCallback.super.onAdImpression();
          }
    
          @Override
          public void onAdClicked() {
            // Rewarded ad did record a click.
            RewardedAdEventCallback.super.onAdClicked();
          }
        }
    );
    

    광고 게재

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

    Kotlin

    // Show the ad.
    rewardedAd?.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.
    rewardedAd.show(
        RewardedActivity.this,
        new OnUserEarnedRewardListener() {
          @Override
          public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
            // User earned the reward.
            int rewardAmount = rewardItem.getAmount();
            String rewardType = rewardItem.getType();
        }
    });
    

    Google에서 게재하는 광고의 경우 GMA Next-Gen SDKonUserEarnedReward() 메서드를 onAdDismissedFullScreenContent() 메서드보다 먼저 호출합니다. 미디에이션을 통해 게재되는 광고의 경우 서드 파티 광고 소스에서 콜백 순서를 결정합니다. 단일 닫기 콜백에서 보상 정보를 제공하는 광고 소스의 경우 미디에이션 어댑터가 onUserEarnedReward() 메서드를 onAdDismissedFullScreenContent() 메서드보다 먼저 호출합니다. 자세한 내용은 미디에이션 설정을 참고하세요.

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