> For the complete documentation index, see [llms.txt](https://docs.blueseasx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.blueseasx.com/android/rewarded-ads.md).

# Rewarded Ads

### **Step1. Load**

Before requesting ads, please ensure that the SDK has been initialized.

To request rewarded video ads, declare a `MediationInfo` object. This object should include the ad mediation platform, the mediation version, and the BlueSea Adapter version used when requesting the ads. If you are integrating BlueSea SDK through your own mediation platform, it is recommended to declare the `MediationInfo` object and pass in the mediation information to facilitate monetization data management and channel monetization optimization. If you are integrating BlueSea SDK through third-party mediations like MAX, LevelPlay, etc., you can skip this step.

```
MediationInfo mediationInfo = new MediationInfo("<in house or mediation name>","<mediation-version-name>", "<adapter-version-code>");
```

* `<in house or mediation name>`: Pass the value as "in-house" or the specific mediation platform name.
* `<mediation-version-name>`: Pass the version number of the mediation SDK.
* `<adapter-version-code>`: Pass the version number of the adapter.

Call the `loadRewardVideoAd()` method, pass the ad's Placement ID, and initiate the ad request:

```
BlueseasxSDK.loadRewordVideoAd("<BlueSea-pid>", mediationInfo, new AdLoadCallback<RewardVideoAd>() {
   @Override
   public void onAdLoadError(@NonNull AdError error) {
       Log.d(TAG, "loadRewordVideoAd error, code=" + error.getCode() + ", message=" + error.getMessage());
   }

   @Override
   public void onAdLoaded(@NonNull RewardVideoAd ad) {
       Log.d(TAG, "loadRewordVideoAd success");
       mRewardVideoAd = ad;
   }
});
```

`AdLoadCallback<RewardVideoAd>` callback:

* `onAdLoadError(AdError error)`: Indicates that no ads were filled. This may be due to the advertiser not bidding or other issues. You can check the error code and message using `AdError.getCode()` and `AdError.getMessage()`. For details on error codes, refer to xx
* `onAdLoaded(RewardVideoAd ad)`: Indicates that the ad was successfully filled and returns an instance of the `RewardVideoAd` object.

The following example shows how to fully load a rewarded video ad in the `onCreate()` method of an Activity:

```
...
import com.blueseasx.sdk.AdError;
import com.blueseasx.sdk.AdLoadCallback;
import com.blueseasx.sdk.RewardVideoAd;
import com.blueseasx.sdk.MediationInfo;
import com.blueseasx.sdk.RewardAdListener;

public class MainActivity extends Activity {

    RewardVideoAd mRewardVideoAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        ...
        MediationInfo mediationInfo = new MediationInfo("<in house or mediation name>","<mediation-version-name>", "<adapter-version-code>");
        BlueseasxSDK.loadRewordVideoAd("<BlueSea-pid>", mediationInfo, new AdLoadCallback<RewardVideoAd>() {
         @Override
         public void onAdLoadError(@NonNull AdError error) {
           Log.d(TAG, "loadRewordVideoAd error, pid=" + pid + ", code=" + error.getCode() + ", message=" + error.getMessage());
      }

       @Override
       public void onAdLoaded(@NonNull RewardVideoAd ad) {
         Log.d(TAG, "loadRewordVideoAd success");
         mRewardVideoAd = ad;
       }
     });
    }
}
```

### **Step2. Show**

After receiving the `onAdLoaded(RewardVideoAd ad)` callback, register the ad listener using the `RewardVideoAd.setAdListener()` method:

```
mRewardVideoAd.setAdListener(new RewardAdListener() {
    @Override
    public void onAdDisplayFailed(@NonNull AdError error) {
        // an error occurs when displaying the ad
    }

    @Override
    public void onAdDisplayed() {
        // an ad impression occurs
    }

    @Override
    public void onAdClicked() {
        // the ad is clicked by user
    }

    @Override
    public void onAdOpened() {
        // the ad overlays the screen
    }

    @Override
    public void onAdClosed() {
        // the ad is closed
    }

    @Override
    public void onAdRewarded() {
        // a reward can be granted
    }
});
```

Before displaying the ad, use the `RewardVideoAd.isExpired()` method to check if the ad has expired (the ad's validity period is typically 60 minutes). If the ad has expired, you can request a new one. If it has not expired, you can use the `RewardVideoAd.show(Activity activity)` method to display the rewarded video ad:

```
mRewardVideoAd.show(activity);
```

### **Step3. Destroy**

The SDK will automatically destroy the ad after detecting that the user has closed it.
