보상형 광고

<ph type="x-smartling-placeholder"></ph> 보상형 광고 상호작용에 대한 사용자에게 인앱 상품을 리워드로 제공할 수 있습니다. 동영상 광고, 플레이어블 광고, 설문조사가 포함되어 있습니다

기본 요건

  • Google 모바일 광고 SDK 19.7.0 이상
  • 시작 가이드를 모두 읽어보세요.

항상 테스트 광고로 테스트

앱을 빌드하고 테스트할 때는 만들 수 있습니다. 이렇게 하지 않으면 계정이 정지될 수 있습니다.

테스트 광고를 로드하는 가장 쉬운 방법은 Android 보상형 광고:

/6499/example/rewarded

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

모바일 광고 SDK의 테스트 광고가 작동하는 방식을 자세히 알아보려면 테스트 광고를 참조하세요.

보상형 광고 객체 로드

보상형 광고는load() RewardedAd 클래스를 사용하고 RewardedAdLoadCallback를 전달합니다. 일반적으로 ActivityonCreate() 메서드에서 실행됩니다. 다른 형식 로드 콜백과 마찬가지로 RewardedAdLoadCallbackLoadAdError를 활용하여 더 높은 충실도의 오류 세부정보를 제공합니다.

자바

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd rewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
    RewardedAd.load(this, "/6499/example/rewarded",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.toString());
          rewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd ad) {
          rewardedAd = ad;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}

Kotlin

class MainActivity : AppCompatActivity() {

  private var rewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var adRequest = AdManagerAdRequest.Builder().build()
    RewardedAd.load(this,"/6499/example/rewarded", adRequest, object : RewardedAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, adError?.toString())
        rewardedAd = null
      }

      override fun onAdLoaded(ad: RewardedAd) {
        Log.d(TAG, "Ad was loaded.")
        rewardedAd = ad
       }
    })
  }
}

FullScreenContentCallback 설정

FullScreenContentCallback는 앱 표시와 관련된 이벤트를 처리합니다. RewardedAd RewardedAd을(를) 표시하기 전에 콜백을 설정해야 합니다. 다음과 같습니다.

자바

rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
  @Override
  public void onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.");
  }

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

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    rewardedAd = null;
  }

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

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

Kotlin

rewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.")
    rewardedAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    rewardedAd = null
  }

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

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

광고 게재

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

자바

if (rewardedAd != null) {
  Activity activityContext = MainActivity.this;
  rewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Kotlin

rewardedAd?.let { ad ->
  ad.show(this, OnUserEarnedRewardListener { rewardItem ->
    // Handle the reward.
    val rewardAmount = rewardItem.amount
    val rewardType = rewardItem.type
    Log.d(TAG, "User earned the reward.")
  })
} ?: run {
  Log.d(TAG, "The rewarded ad wasn't ready yet.")
}

FAQ

초기화 호출에 제한 시간이 있나요?
10초 후에 Google 모바일 광고 SDK가 미디에이션 네트워크가OnInitializationCompleteListener 확인할 수 있습니다.
초기화 콜백을 받을 때 일부 미디에이션 네트워크가 준비되지 않은 경우 어떻게 해야 하나요?

OnInitializationCompleteListener 미디에이션 네트워크가 준비되지 않은 경우에도 Google 모바일 광고 SDK는 여전히 해당 네트워크에 광고를 요청합니다. 만약 초기화가 완료되더라도 여전히 향후 광고 요청을 처리할 수 있습니다.

이 과정에서 모든 어댑터의 초기화 상태를 앱 세션을 시작할 수 있습니다.MobileAds.getInitializationStatus()

특정 미디에이션 네트워크가 준비되지 않은 이유를 확인하려면 어떻게 해야 하나요?

AdapterStatus.getDescription()은 어댑터에서 네트워크 연결을 요청할 준비가 되지 않은 이유를 서비스 광고 요청을 사용합니다

onUserEarnedReward() 콜백이 항상 onAdDismissedFullScreenContent() 콜백보다 먼저 호출되나요?

Google 광고의 경우 모든 onUserEarnedReward() 호출이 다음 날짜 이전에 발생함 onAdDismissedFullScreenContent() 다음을 통해 게재된 광고 조정은 네트워크 SDK의 구현에 따라 콜백 순서가 결정됩니다. 광고 네트워크의 경우 리워드 정보가 포함된 단일 닫기 콜백을 제공하는 SDK, 미디에이션 어댑터가onUserEarnedReward() onAdDismissedFullScreenContent()

GitHub의 예

다음 단계

다음 주제를 살펴보세요.