Android에서 보상형 광고 구현

광고를 보는 사용자에게 보상을 제공하면 사용자 참여가 증가하고 더욱 높은 수익으로 이어질 수 있습니다. 예를 들어, 게임 내 재화나 소모품, 추가 생명, 경험치 증가 등의 보상을 게임에서 사용자에게 제공할 수 있습니다. 보상형 광고를 효과적으로 설계하는 방법에 관한 자세한 내용은 수익화 전략 가이드를 참고하십시오.

동영상 광고 시청을 완료한 사용자에게 보상을 제공하려면 IUnityAdsShowListener.onUnityAdsShowComplete 리스너 콜백 메서드의 UnityAdsShowCompletionState 결과를 사용하여 사용자가 광고 시청을 완료했으며 보상이 제공되어야 하는지 확인합니다.

보상형 비디오 예시

[!include]

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import com.unity3d.ads.IUnityAdsLoadListener;
import com.unity3d.ads.IUnityAdsShowListener;
import com.unity3d.ads.UnityAdsShowOptions;
import com.unity3d.ads.example.R;

import com.unity3d.ads.IUnityAdsInitializationListener;
import com.unity3d.ads.UnityAds;

public class ShowRewardedAd extends AppCompatActivity implements IUnityAdsInitializationListener  {

  private String unityGameID = "1234567";
  private Boolean testMode = true;
  private String adUnitId = "rewardedVideo";

  private IUnityAdsLoadListener loadListener = new IUnityAdsLoadListener() {
     @Override
     public void onUnityAdsAdLoaded(String placementId) {
        UnityAds.show((Activity)getApplicationContext(), adUnitId, new UnityAdsShowOptions(), showListener);
     }

     @Override
     public void onUnityAdsFailedToLoad(String placementId, UnityAds.UnityAdsLoadError error, String message) {
        Log.e("UnityAdsExample", "Unity Ads failed to load ad for " + placementId + " with error: [" + error + "] " + message);
     }
  };

  private IUnityAdsShowListener showListener = new IUnityAdsShowListener() {
     @Override
     public void onUnityAdsShowFailure(String placementId, UnityAds.UnityAdsShowError error, String message) {
        Log.e("UnityAdsExample", "Unity Ads failed to show ad for " + placementId + " with error: [" + error + "] " + message);
     }

     @Override
     public void onUnityAdsShowStart(String placementId) {
        Log.v("UnityAdsExample", "onUnityAdsShowStart: " + placementId);
     }

     @Override
     public void onUnityAdsShowClick(String placementId) {
        Log.v("UnityAdsExample", "onUnityAdsShowClick: " + placementId);
     }

     @Override
     public void onUnityAdsShowComplete(String placementId, UnityAds.UnityAdsShowCompletionState state) {
        Log.v("UnityAdsExample", "onUnityAdsShowComplete: " + placementId);
        if (state.equals(UnityAds.UnityAdsShowCompletionState.COMPLETED)) {
           // Reward the user for watching the ad to completion
        } else {
           // Do not reward the user for skipping the ad
        }
     }
  };

  @Override
  protected void onCreate (Bundle savedInstanceState) {
     super.onCreate (savedInstanceState);
     setContentView (R.layout.activity_main);
     // Initialize the SDK:
     UnityAds.initialize(getApplicationContext(), unityGameID, testMode, this);
  }

  @Override
  public void onInitializationComplete() {
     DisplayRewardedAd();
  }

  @Override
  public void onInitializationFailed(UnityAds.UnityAdsInitializationError error, String message) {
     Log.e("UnityAdsExample", "Unity Ads initialization failed with error: [" + error + "] " + message);
  }

  // Implement a function to load a rewarded ad. The ad will start to show after the ad has been loaded.
  public void DisplayRewardedAd () {
     UnityAds.load(adUnitId, loadListener);
  }
}

보상형 비디오 광고 버튼

플레이어가 광고 보기를 선택할 수 있는 버튼을 사용하는 것이 보상형 비디오 광고의 일반적인 구현 방식입니다. 다음 예시 코드를 사용하면 보상형 광고 버튼을 생성할 수 있습니다. 광고가 먼저 로드되어야 이 광고 버튼이 눌렸을 때 광고가 표시됩니다. 버튼 구성에 대한 자세한 내용은 버튼에 대한 Android 개발자 기술 자료를 참조하십시오.

버튼을 구현한 후, showAdButton이 View에서 구성된 버튼이라는 내용의 다음 코드가 포함된 스크립트를 추가합니다.

[!include]

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

import com.unity3d.ads.IUnityAdsLoadListener;
import com.unity3d.ads.IUnityAdsShowListener;
import com.unity3d.ads.UnityAdsShowOptions;
import com.unity3d.ads.example.R;

import com.unity3d.ads.IUnityAdsInitializationListener;
import com.unity3d.ads.UnityAds;

public class RewardedAdButton extends AppCompatActivity implements IUnityAdsInitializationListener  {

  private String unityGameID = "1234567";
  private Boolean testMode = true;
  private String adUnitId = "rewardedVideo";
  private Button rewardedButton;

  private IUnityAdsLoadListener loadListener = new IUnityAdsLoadListener() {
     @Override
     public void onUnityAdsAdLoaded(String placementId) {
        UnityAds.show((Activity)getApplicationContext(), adUnitId, new UnityAdsShowOptions(), showListener);
     }

     @Override
     public void onUnityAdsFailedToLoad(String placementId, UnityAds.UnityAdsLoadError error, String message) {
        Log.e("UnityAdsExample", "Unity Ads failed to load ad for " + placementId + " with error: [" + error + "] " + message);
     }
  };

  private IUnityAdsShowListener showListener = new IUnityAdsShowListener() {
     @Override
     public void onUnityAdsShowFailure(String placementId, UnityAds.UnityAdsShowError error, String message) {
        Log.e("UnityAdsExample", "Unity Ads failed to show ad for " + placementId + " with error: [" + error + "] " + message);
        // Re-enable the button if the user should be allowed to watch another rewarded ad
        rewardedButton.setEnabled(true);
     }

     @Override
     public void onUnityAdsShowStart(String placementId) {
        Log.v("UnityAdsExample", "onUnityAdsShowStart: " + placementId);
     }

     @Override
     public void onUnityAdsShowClick(String placementId) {
        Log.v("UnityAdsExample", "onUnityAdsShowClick: " + placementId);
     }

     @Override
     public void onUnityAdsShowComplete(String placementId, UnityAds.UnityAdsShowCompletionState state) {
        Log.v("UnityAdsExample", "onUnityAdsShowComplete: " + placementId);
        if (state.equals(UnityAds.UnityAdsShowCompletionState.COMPLETED)) {
           // Reward the user for watching the ad to completion
        } else {
           // Do not reward the user for skipping the ad
        }
        // Re-enable the button if the user should be allowed to watch another rewarded ad
        rewardedButton.setEnabled(true);
     }
  };

  @Override
  protected void onCreate (Bundle savedInstanceState) {
     super.onCreate (savedInstanceState);
     setContentView (R.layout.activity_main);

     // Initialize the SDK:
     UnityAds.initialize(getApplicationContext(), unityGameID, testMode, this);

     // Find the button in the view hierarchy and set its click function to load ads:
     rewardedButton = findViewById (R.id.showAdButton);
     rewardedButton.setOnClickListener (new View.OnClickListener () {
        @Override
        public void onClick (View v) {
           DisplayRewardedAd ();
           rewardedButton.setEnabled(false);
        }
     });
  }

  @Override
  public void onInitializationComplete() {
     rewardedButton.setEnabled(true);
  }

  @Override
  public void onInitializationFailed(UnityAds.UnityAdsInitializationError error, String message) {
     Log.e("UnityAdsExample", "Unity Ads initialization failed with error: [" + error + "] " + message);
  }

// Implement a function to load an rewarded ad. The ad will start to show after the ad has been loaded.
  public void DisplayRewardedAd () {
     UnityAds.load(adUnitId, loadListener);
  }
}

다음 단계: Android에서 배너 광고 구현을 참조하십시오.