보상형 광고

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

시작하기 전에

계속하기 전에 다음을 수행하세요.

  • Google Mobile Ads SDK (Legacy)을 설정합니다.
  • 테스트용 보상형 광고 단위 ID /21775744923/example/rewarded를 사용합니다.
    • 앱을 빌드하고 테스트할 때는 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 테스트 광고 단위 ID를 사용하지 않으면 Google에서 계정을 정지할 수 있습니다.
    • 앱을 게시하기 전에 이 ID를 광고 단위 ID로 바꿔야 합니다.
    • Google Mobile Ads SDK (Legacy) 테스트 광고에 관한 자세한 내용은 테스트 광고 사용 설정을 참고하세요.

보상형 광고 객체 로드

보상형 광고는 RewardedAd 클래스의 정적 load 메서드를 호출하고 RewardedAdLoadCallback을 전달하여 로드됩니다. 이 작업은 일반적으로 ActivityonCreate 메서드에서 실행됩니다. 다른 형식의 로드 콜백과 마찬가지로 RewardedAdLoadCallback은 보다 정확한 오류 세부정보를 제공하기 위해 LoadAdError를 사용합니다.

자바

RewardedAd.load(
    this,
    "AD_UNIT_ID",
    new AdManagerAdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
        Log.d(TAG, "Ad was loaded.");
        MainActivity.this.rewardedAd = rewardedAd;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        Log.d(TAG, loadAdError.getMessage());
        rewardedAd = null;
      }
    });

Kotlin

RewardedAd.load(
  this,
  "AD_UNIT_ID",
  AdManagerAdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      Log.d(TAG, "Ad was loaded.")
      rewardedAd = ad
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, adError.message)
      rewardedAd = null
    }
  },
)

AD_UNIT_ID를 광고 단위 ID로 바꿉니다.

FullScreenContentCallback 설정하기

FullScreenContentCallbackRewardedAd 표시와 관련된 이벤트를 처리합니다. RewardedAd를 표시하기 전에 다음과 같이 콜백을 설정합니다.

자바

rewardedAd.setFullScreenContentCallback(
    new FullScreenContentCallback() {
      @Override
      public void onAdDismissedFullScreenContent() {
        // Called when fullscreen content is dismissed.
        Log.d(TAG, "Ad was dismissed.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(AdError adError) {
        // Called when fullscreen content failed to show.
        Log.d(TAG, "Ad failed to show.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdShowedFullScreenContent() {
        // Called when fullscreen content is shown.
        Log.d(TAG, "Ad showed fullscreen content.");
      }

      @Override
      public void onAdImpression() {
        // Called when an impression is recorded for an ad.
        Log.d(TAG, "Ad recorded an impression.");
      }

      @Override
      public void onAdClicked() {
        // Called when an ad is clicked.
        Log.d(TAG, "Ad was clicked.");
      }
    });

Kotlin

rewardedAd?.fullScreenContentCallback =
  object : FullScreenContentCallback() {
    override fun onAdDismissedFullScreenContent() {
      // Called when fullscreen content is dismissed.
      Log.d(TAG, "Ad was dismissed.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      // Called when fullscreen content failed to show.
      Log.d(TAG, "Ad failed to show.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdShowedFullScreenContent() {
      // Called when fullscreen content is shown.
      Log.d(TAG, "Ad showed fullscreen content.")
    }

    override fun onAdImpression() {
      // Called when an impression is recorded for an ad.
      Log.d(TAG, "Ad recorded an impression.")
    }

    override fun onAdClicked() {
      // Called when an ad is clicked.
      Log.d(TAG, "Ad was clicked.")
    }
  }

광고 게재

보상형 광고를 게재할 때는 OnUserEarnedRewardListener 객체를 사용하여 보상 이벤트를 처리합니다.

자바

rewardedAd.show(
    MainActivity.this,
    new OnUserEarnedRewardListener() {
      @Override
      public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
        Log.d(TAG, "User earned the reward.");
        // Handle the reward.
      }
    });

Kotlin

rewardedAd?.show(
  this,
  OnUserEarnedRewardListener { rewardItem ->
    Log.d(TAG, "User earned the reward.")
    // Handle the reward.
    val rewardAmount = rewardItem.amount
    val rewardType = rewardItem.type
  },
)

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

선택사항: 서버 측 확인(SSV) 콜백 검사

서버 측 확인 콜백에서 추가 데이터가 필요한 앱은 보상형 광고의 맞춤 데이터 기능을 사용해야 합니다. 보상형 광고 객체에 설정된 모든 문자열 값은 SSV 콜백의 custom_data 쿼리 매개변수에 전달됩니다. 맞춤 데이터 값이 설정되지 않은 경우 custom_data 쿼리 매개변수 값은 SSV 콜백에 표시되지 않습니다.

다음 코드 샘플은 광고를 요청하기 전에 보상형 광고 객체에 맞춤 데이터를 설정하는 방법을 보여줍니다.

자바

RewardedAd.load(
    context,
    AD_UNIT_ID,
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedAd ad) {
        rewardedAd = ad;
        ServerSideVerificationOptions options =
            new ServerSideVerificationOptions.Builder()
                .setCustomData("SAMPLE_CUSTOM_DATA_STRING")
                .build();
        rewardedAd.setServerSideVerificationOptions(options);
      }
    });

Kotlin

RewardedAd.load(
  context,
  AD_UNIT_ID,
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      rewardedAd = ad
      val options =
        ServerSideVerificationOptions.Builder().setCustomData("SAMPLE_CUSTOM_DATA_STRING").build()
      rewardedAd?.setServerSideVerificationOptions(options)
    }
  },
)

SAMPLE_CUSTOM_DATA_STRING을 맞춤 데이터로 바꿉니다.

맞춤 보상 문자열을 설정하려면 광고를 게재하기 전에 해야 합니다.

GitHub의 예

다음 단계

다음 주제를 살펴보세요.