# Android でのリワード広告の実装

> Android アプリケーションにリワード広告を実装します。広告コンテンツをロードし、Java コードで表示し、リスナーを使用して広告イベントと報酬ロジックを管理します。

広告を視聴したユーザーに報酬を与えると、ユーザーエンゲージメントが向上し、収益の増加につながります。例えば、ユーザーに与える報酬には、ゲーム内通貨、消耗品、追加のライフ、経験値の倍増などがあります。リワード広告を効果的にデザインする方法の詳細については、[収益化戦略](/grow/ads/monetization-strategy.md) ガイドを参照してください。

動画広告を最後まで視聴したユーザーに報酬を与えるには、[`IUnityAdsShowListener.onUnityAdsShowComplete`](/grow/ads/android-sdk/android-api.md#onunityadsshowcomplete) リスナーコールバックメソッドの [`UnityAdsShowCompletionState`](/grow/ads/android-sdk/android-api.md#unityadsshowcompletionstate) の結果を使用して、ユーザーが広告の視聴を完了し、報酬を受け取る資格を得ているかどうかを確認します。

> **Note:**
>
> Unity Ads では現在実行中のアクティビティにアクセスする必要があるため、以下の例では `getApplicationContext()` を使用しています。
> これはすべての実装に適しているとは限らないため、(インテグレーションによっては) 一部カスタマイズが必要になる場合があります。

## 動画リワード広告の例##rewarded-video-ad-example

1. **Java**

   ```java
     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);
     }
     }
   ```

## 動画リワード広告ボタン##rewarded-video-ad-buttons

動画リワード広告では、プレイヤーが広告の視聴を選択できるボタンを実装するのが一般的です。リワード広告ボタンを作成するには、以下のコード例を使用します。この広告ボタンを押すと、広告が初めてロードされたときに限り、広告が表示されます。ボタンの設定については、[ボタン](https://developer.android.com/guide/topics/ui/controls/button) に関する Android 開発者向けドキュメントを参照してください。

ボタンを実装したら、以下のコードを使用してスクリプトを追加します。`showAdButton` はビューで設定されたボタンを示します。

> **Note:**
>
> Unity Ads では現在実行中のアクティビティにアクセスする必要があるため、以下の例では `getApplicationContext()` を使用しています。
> これはすべての実装に適しているとは限らないため、(インテグレーションによっては) 一部カスタマイズが必要になる場合があります。

1. **Java**

   ```java
     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 でのバナー広告の実装](/grow/ads/android-sdk/banner-ads.md) を参照してください。
