π‘Tips
- Automatically manages parallel loading across multiple placements, caching, and eCPM-optimized display β developers only need
loadβisReadyβshowload()must be called only afterMCSDK.init()completes, otherwise loading silently fails- SDK auto-refills after ad close, no manual reload needed;
isReady()returning false also triggers automatic background refill
// 1. Set callbacks
MCRewardAdManager.getInstance().setListener(new MCRewardAdManagerListener() {
@Override
public void onAdLoaded(MCAdInfo adInfo) {
// At least one ad is ready (triggered at most once per loading round)
}
@Override
public void onAdLoadFailed(MCError error) {
// All placements failed to load (mutually exclusive with onAdLoaded)
}
@Override
public void onAdLoadFinished() {
// All placements in this round have finished loading (fires regardless of success or failure)
}
@Override
public void onAdDisplayed(MCAdInfo adInfo) {
// Ad displayed successfully
}
@Override
public void onAdHidden(MCAdInfo adInfo) {
// Ad closed (SDK auto-refills, no manual load needed)
}
@Override
public void onAdClicked(MCAdInfo adInfo) {
// Ad clicked
}
@Override
public void onAdDisplayFailed(MCAdInfo adInfo, MCError error) {
// Display failed
}
@Override
public void onAdRevenuePaid(MCAdInfo adInfo) {
// Ad revenue callback (for revenue attribution)
}
// --- Rewarded-specific callbacks ---
@Override
public void onUserRewarded(MCAdInfo adInfo, MCReward reward) {
// User completed reward β grant reward here
}
@Override
public void onUserRewardFailed(MCAdInfo adInfo) {
// Reward grant failed
}
@Override
public void onRewardedVideoStarted(MCAdInfo adInfo) {
// Video playback started
}
@Override
public void onRewardedVideoCompleted(MCAdInfo adInfo) {
// Video playback completed
}
});
// 2. Load (SDK automatically manages multiple placements based on server configuration)
MCRewardAdManager.getInstance().load();
β οΈ Note
setListener()should be called beforeload(), otherwise the first loading callbacks may be missed- Duplicate
load()calls during an ongoing loading cycle are automatically ignored β no manual deduplication neededonUserRewardedis the only reliable timing for granting rewards β do not grant rewards in other callbacks
if (MCRewardAdManager.getInstance().isReady()) {
MCRewardAdManager.getInstance().show(activity);
}
π‘ Note
show()automatically selects the highest eCPM ad from the cache pool β no manual comparison needed- After display, the cache for that placement is consumed and the SDK auto-refills
- When
isReady()returnsfalse, the SDK automatically triggers background refill β you can periodically poll to check readiness
MCRewardAdManager.getInstance().destroy();
β οΈ Note
- Must call
destroy()when Activity / Fragment is destroyed to release resources- After destruction,
load()must be called again before further usedestroy()is safe to call repeatedly
Map<String, Object> loadExtraParameter = new HashMap<>();
loadExtraParameter.put(MCAdConst.KEY.USER_ID, "test_userid_001");
loadExtraParameter.put(MCAdConst.KEY.USER_CUSTOM_DATA, "test_userdata_001");
MCRewardAdManager.getInstance().setLoadExtraParameter(loadExtraParameter);
Map<String, String> extraParameter = new HashMap<>();
extraParameter.put("key", "value");
MCRewardAdManager.getInstance().setExtraParameter(extraParameter);
// Custom parameters must be set before load()
MCRewardAdManager.getInstance().load();
π‘ Note
Rewarded Ads support passing user identifiers and custom data via
MCAdConst.KEY.USER_IDandMCAdConst.KEY.USER_CUSTOM_DATAfor server-side reward verification.