Search...
Menu

Rewarded Video Ads

Rewarded Video Ads

💡Tips

  • 🚀 Use preloading mechanism to enhance user experience
  • 🔧 Recommended to use standardized callback handling process

csharp Copy
public void InitializeRewardedAd() 
{
    McSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent;
    McSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdLoadFailedEvent;
    McSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdDisplayFailedEvent;
    McSdkCallbacks.Rewarded.OnAdDisplayedEvent += OnRewardedAdDisplayedEvent;
    McSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent;
    McSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent;
    McSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
    McSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedAdRevenuePaidEvent;
    
    LoadRewardedAd();
}

private void LoadRewardedAd() 
{
    McSdk.LoadRewardedAd("your mediation unit id");
}

private void OnRewardedAdLoadedEvent(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // Ad load success event  
    // Reset retry attempt
    retryAttempt = 0;
}

private void OnRewardedAdLoadFailedEvent(string adUnitId, McSdkBase.ErrorInfo errorInfo)
{
    // Ad load failure event  
    // 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++;
    double retryDelay = Math.Pow(2, Math.Min(3, retryAttempt));
    Invoke("LoadRewardedAd", (float) retryDelay);
}

private void OnRewardedAdDisplayFailedEvent(string adUnitId, McSdkBase.ErrorInfo errorInfo, McSdkBase.AdInfo adInfo)
{
    // Ad display failure event  
    // pre-load
    LoadRewardedAd();
}

private void OnRewardedAdDisplayedEvent(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // Ad display success event  
    // pre-load
    LoadRewardedAd();
}

private void OnRewardedAdClickedEvent(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // Ad click event  
}

private void OnRewardedAdHiddenEvent(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // Ad closed event  
    // pre-load
    LoadRewardedAd();
}

private void OnRewardedAdReceivedRewardEvent(string adUnitId, McSdk.Reward reward, McSdkBase.AdInfo adInfo)
{
    // Reward triggered event  
}

private void OnRewardedAdRevenuePaidEvent(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // Revenue tracking event  
}

csharp Copy
if (McSdk.IsRewardedAdReady("your mediation unit id")) {
    McSdk.ShowRewardedAd("your mediation unit id");
} else {
    LoadRewardedAd();
}

3. Customized Parameter Configuration

csharp Copy
McSdk.SetRewardedAdExtraParameter("your mediation unit id", "rv_test_extra_key", "rv_test_extra_value");
#if UNITY_ANDROID 
    McSdk.SetRewardedAdLocalExtraParameter("your mediation unit id", "rv_test_local_extra_key", new AndroidJavaObject("java.lang.String", "rv_test_local_extra_value"));
#elif UNITY_IOS
    McSdk.SetRewardedAdLocalExtraParameter("your mediation unit id", "rv_test_local_extra_key", "rv_test_local_extra_value");
#endif

McSdk.LoadRewardedAd("your mediation unit id");

Previous
AD Formats
Next
Interstitial Ads
Last modified: 2025-07-29Powered by