Search...
Menu

Rewarded Ads

💡Tips

  • 🚀 Use preloading mechanism to enhance UX
  • ⚠️ Handle lifecycle properly to prevent memory leaks
  • 🔧 Recommended to use standardized callback workflow

java Copy
MCRewardedAd mRewardVideoAd = new MCRewardedAd(activity, "your mediation unit id");  
mRewardVideoAd.setListener(new MCRewardedAdListener() {  
    @Override  
    public void onUserRewarded(MCAdInfo mcAdInfo, MCReward mcReward) {  
        // Reward triggered callback  
    }  

    @Override  
    public void onUserRewardFailed(MCAdInfo mcAdInfo) {  
        // Reward failure callback  
    }  

    @Override
    public void onRewardedVideoStarted(MCAdInfo mcAdInfo) { }  

    @Override
    public void onRewardedVideoCompleted(MCAdInfo mcAdInfo) { }  
    
    @Override  
    public void onAdLoaded(MCAdInfo mcAdInfo) {  
        // Ad load success callback  
        // Reset retry attempt
        retryAttempt = 0;
    }  

    @Override  
    public void onAdDisplayed(MCAdInfo mcAdInfo) {  
        // Ad display success callback  
        // pre-load
        mRewardVideoAd.loadAd(); 
    }  

    @Override  
    public void onAdHidden(MCAdInfo mcAdInfo) {  
        // Ad closed callback  
        // pre-load
        mRewardVideoAd.loadAd();  
    }  

    @Override  
    public void onAdClicked(MCAdInfo mcAdInfo) {  
        // Ad click callback  
    }  

    @Override  
    public void onAdLoadFailed(MCError mcError) {  
        // Ad load failure callback  
        // We recommends that you retry with exponentially higher delays up to a maximum delay (in this case 8 seconds) or the maximum number of retries (in this case 3)
        if (retryAttempt >= 3) return;
        retryAttempt++;
		long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(3, retryAttempt)));
		new Handler().postDelayed(new Runnable() {
    		@Override
    		public void run() {
        		mRewardVideoAd.loadAd();
    		}
		}, delayMillis);
    }  

    @Override  
    public void onAdDisplayFailed(MCAdInfo mcAdInfo, MCError mcError) {  
        // Ad display failure callback  
        // pre-load
        mRewardVideoAd.loadAd();  
    }  
});  

mRewardVideoAd.setRevenueListener(new MCAdRevenueListener() {  
    @Override  
    public void onAdRevenuePaid(MCAdInfo adInfo) {  
        // Revenue tracking callback  
    }  
});  
  
mRewardVideoAd.loadAd();  

java Copy
if (mRewardVideoAd.isAdReady()) {  
   mRewardVideoAd.showAd(activity, null);  
} else {  
   mRewardVideoAd.load();  
}  

3. Resource Release

java Copy
if (mRewardVideoAd != null) {  
    mRewardVideoAd.destroy();  
}  

4. Customized Parameter Configuration

java Copy
MCRewardedAd mRewardVideoAd = new MCRewardedAd(activity, "your mediation unit id");  
String userid = "test_userid_001";  
String userdata = "test_userdata_001";  
Map<String, Object> localMap = new HashMap<>();  
localMap.put(MCAdConst.KEY.USER_ID, userid);
localMap.put(MCAdConst.KEY.USER_CUSTOM_DATA, userdata); 
mRewardVideoAd.setLoadExtraParameter(localMap);  

Map<String, String> extraParameter = new HashMap<>();  
extraParameter.put("test_extra_key", "test_extra_value");  
mRewardVideoAd.setExtraParameter(extraParameter);  

mRewardVideoAd.setListener(new MCRewardedAdListener() {  
    ...  
    @Override  
    public void onAdLoaded(MCAdInfo mcAdInfo) {  
        // Retrieve customized parameters  
        mcAdInfo.getOriginJsonString();  
    }  
    ...  
});  

mRewardVideoAd.loadAd();  
Previous
AD Formats
Next
Interstitial Ads
Last modified: 2025-07-21Powered by