Skip to content

Rewarded Interstitial

Rewarded Interstitial Ads combine the benefits of interstitial and rewarded ads — they appear at natural breaks in gameplay (like level completion or menu transitions) while still granting rewards to the user for viewing them to completion.

Unlike standard rewarded ads, rewarded interstitials do not require explicit user opt-in (e.g. pressing a “Watch Ad” button) and can be triggered automatically at suitable points in your game flow.

These ads are ideal for use cases such as:

  • Bonus rewards after level completion
  • Daily login incentives
  • Post-game multipliers or boosters

Before showing a rewarded interstitial, you must first load it using its Ad Unit ID.
Once loaded, it can be displayed at any time without additional preparation.


Load Rewarded Interstitial

This function loads a rewarded interstitial ad using the provided Ad Unit ID.
It must always be called before attempting to show the ad — if no rewarded ad is loaded, calling Show Rewarded Interstitial will fail immediately.

Parameters

1. Ad Unit ID

Your Rewarded Interstitial Ad Unit ID from the AdMob console.


2. On Loaded

Called when the rewarded interstitial ad has been successfully loaded and is ready to show.


3. On Load Failed

Called if the ad fails to load due to network issues, invalid configuration, or SDK errors.
This callback returns an EAdErrorCode value and an error message for debugging.


Show Rewarded Interstitial

Displays a previously loaded rewarded interstitial ad and grants the user a reward after it finishes successfully.
Before calling this function, make sure that a rewarded interstitial ad has already been loaded using Load Rewarded Interstitial.

Parameters

1. Auto Reload

If enabled, the system will automatically load a new rewarded interstitial ad immediately after the current one is shown and completed.


2. Is Immersive

Enables immersive mode during the ad display — hiding system UI elements (navigation bar, status bar) for a more seamless user experience.


3. On Started

Called when the rewarded interstitial ad starts displaying.


4. On Completed

Called after the ad is fully closed by the user or finishes naturally.


5. On Reward Earned

Triggered when the player successfully earns a reward by watching the ad to completion.
Use this callback to grant in-game currency, bonuses, or other benefits.


6. On Failure

Called if the ad fails to show (for example, if it wasn’t properly loaded or was invalidated).
This callback returns an EAdErrorCode value and an error message for debugging.


7. On Event

Triggered on intermediate ad lifecycle updates — such as when is clicked.
Returns an EFullScreenAdEventType describing the event.


Is Rewarded Interstitial Ready

Checks whether a rewarded interstitial ad has been successfully loaded and is ready to be shown.
Use this before calling Show Rewarded Interstitial to avoid triggering a failed display event.

Return Value

Returns true if a rewarded interstitial ad is successfully loaded and ready to display.
Returns false if no ad is currently loaded.


C++ Usage

All rewarded interstitial Blueprint functions are fully available in C++.
You can load, show, and manage rewarded interstitials directly through static methods of UAdMobCPPLibrary.

LoadRewardedInterstitial

#include "AdMobCPPLibrary.h"

void UMyClass::LoadRewardedInterstitial()
{
    FOnRewardedInterstitialLoadedNative OnLoaded;
    OnLoaded.BindLambda([]()
    {
        UE_LOG(LogTemp, Log, TEXT("Rewarded interstitial loaded successfully."));
    });

    FOnRewardedInterstitialLoadFailedNative OnLoadFailed;
    OnLoadFailed.BindLambda([](EAdErrorCode Error, const FString& Message)
    {
        UE_LOG(LogTemp, Error, TEXT("Failed to load rewarded interstitial: %s (Code: %d)"), *Message, static_cast<int32>(Error));
    });

    UAdMobCPPLibrary::LoadRewardedInterstitial(TEXT("ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx"), OnLoaded, OnLoadFailed);
}

ShowRewardedInterstitial

#include "AdMobCPPLibrary.h"

void UMyClass::ShowRewardedInterstitial()
{
    FOnRewardedInterstitialStartedNative OnStarted;
    OnStarted.BindLambda([]()
    {
        UE_LOG(LogTemp, Log, TEXT("Rewarded interstitial started."));
    });

    FOnRewardedInterstitialCompletedNative OnCompleted;
    OnCompleted.BindLambda([]()
    {
        UE_LOG(LogTemp, Log, TEXT("Rewarded interstitial completed."));
    });

    FOnInterstitialRewardEarnedNative OnRewardEarned;
    OnRewardEarned.BindLambda([](int32 Amount, const FString& Type)
    {
        UE_LOG(LogTemp, Log, TEXT("Reward earned: %d %s"), Amount, *Type);
    });

    FOnRewardedInterstitialShowFailedNative OnFailure;
    OnFailure.BindLambda([](EAdErrorCode Error, const FString& Message)
    {
        UE_LOG(LogTemp, Error, TEXT("Failed to show rewarded interstitial: %s (Code: %d)"), *Message, static_cast<int32>(Error));
    });

    FOnRewardedInterstitialEventNative OnEvent;
    OnEvent.BindLambda([](EFullScreenAdEventType Event)
    {
        UE_LOG(LogTemp, Log, TEXT("Rewarded interstitial event: %d"), static_cast<int32>(Event));
    });

    UAdMobCPPLibrary::ShowRewardedInterstitial(true, false, OnStarted, OnCompleted, OnRewardEarned, OnFailure, OnEvent);
}

IsRewardedInterstitialReady

#include "AdMobCPPLibrary.h"

void UMyClass::CheckRewardedInterstitialStatus()
{
    bool bIsReady = UAdMobCPPLibrary::IsRewardedInterstitialReady();

    UE_LOG(LogTemp, Log, TEXT("Is rewarded interstitial ready? %s"), bIsReady ? TEXT("Yes") : TEXT("No"));
}