보상형 전면 광고

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

기본 요건

  • Google 모바일 광고 SDK 19.2.0 이상
  • 시작하기 가이드에 따라 Google 모바일 광고 SDK를 가져오고 AndroidManifest.xml을 업데이트합니다.
  • 계정 관리자에게 연락하여 보상형 전면 광고에 대한 액세스 권한을 얻습니다.

구현

보상형 전면 광고를 통합하는 기본 단계는 아래와 같습니다.

  1. 광고를 로드합니다.
  2. 전체 화면 이벤트 콜백을 등록합니다.
  3. 보상 콜백을 처리합니다.
  4. 광고를 표시합니다.

광고 로드

광고는 RewardedInterstitialAd 클래스의 정적 load() 메서드를 사용하여 로드됩니다. 로드 메서드에는 컨텍스트, 광고 단위 ID, an AdRequest 객체, 광고 로드에 성공하거나 실패할 때 알림을 받을 RewardedInterstitialAdLoadCallback이 필요합니다. 로드된 RewardedInterstitialAd 객체는 onRewardedInterstitialAdLoaded() 콜백의 매개변수로 제공됩니다. 다음은 MainActivityRewardedInterstitialAd를 로드하는 방법의 예입니다.

public class MainActivity extends AppCompatActivity {
  private RewardedInterstitialAd rewardedInterstitialAd;
  private String TAG = "MainActivity";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MobileAds.initialize(this, new OnInitializationCompleteListener() {
      @Override
      public void onInitializationComplete(InitializationStatus initializationStatus) {
        loadAd();
      }
    });

  public void loadAd() {
    // Use the test ad unit ID to load an ad.
    RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
        new AdRequest.Builder().build(),  new RewardedInterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedInterstitialAd ad) {
        rewardedInterstitialAd = ad;
        Log.e(TAG, "onAdLoaded");
      }
      @Override
      public void onAdFailedToLoad(LoadAdError loadAdError) {
        Log.e(TAG, "onAdFailedToLoad");
      }
    });
  }
}

콜백 등록

표시 이벤트에 대한 알림을 받으려면 FullScreenContentCallback 객체를 광고의 setter에 전달해야 합니다. FullScreenContentCallback 객체는 광고 표시에 성공 또는 실패했을 때와 광고가 닫혔을 때의 콜백을 처리합니다. 아래는 RewardedInterstitialAdLoadCallback 내에서 익명의 FullScreenContentCallback 객체를 설정하는 방법을 나타내는 코드입니다.

public void loadAd(){
  RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
      new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() {
    @Override
    public void onAdLoaded(RewardedInterstitialAd ad) {
      rewardedInterstitialAd = ad;
      rewardedInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
        /** Called when the ad failed to show full screen content. */
        @Override
        public void onAdFailedToShowFullScreenContent(AdError adError) {
          Log.i(TAG, "onAdFailedToShowFullScreenContent");
        }

        /** Called when ad showed the full screen content. */
        @Override
        public void onAdShowedFullScreenContent() {
          Log.i(TAG, "onAdShowedFullScreenContent");
        }

        /** Called when full screen content is dismissed. */
        @Override
        public void onAdDismissedFullScreenContent() {
          Log.i(TAG, "onAdDismissedFullScreenContent");
        }
      });
    }
    @Override
    public void onAdFailedToLoad(LoadAdError loadAdError) {
      Log.e(TAG, "onAdFailedToLoad");
    }
  });
}

보상 처리

보상형 전면 광고를 표시하려면 사용자가 보상을 획득할 때 알림을 받을 수 있도록 MainActivityOnUserEarnedRewardListener 인터페이스를 구현합니다.

public class MainActivity extends AppCompatActivity implements OnUserEarnedRewardListener {
  ...
  @Override
  public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
    Log.i(TAG, "onUserEarnedReward");
    // TODO: Reward the user!
  }
}

광고 게재

OnUserEarnedRewardListener 인터페이스를 구현한 후 다음과 같이 광고의 show() 메서드를 사용하여 광고를 표시할 수 있습니다.

rewardedInterstitialAd.show(/* Activity */ MainActivity.this,/*
    OnUserEarnedRewardListener */ MainActivity.this);

GitHub의 예