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. This callback also returns two values:

  • Amount (int32) — the numeric reward value defined in your AdMob console.
  • RewardType (string) — the name or category of the reward.

Use these values to grant in-game currency, bonuses, power-ups, or any other rewards to the player.

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.


Example

In this example, the Load Rewarded Interstitial function requests a rewarded interstitial ad using the official Google test ad unit ca-app-pub-3940256099942544/5354046379.

When the ad finishes loading, the On Loaded event fires. The graph then checks whether the rewarded interstitial is ready using Is Rewarded Interstitial Ready. If the ad is ready, the Show Rewarded Interstitial node is executed.

Two optional settings are enabled in this example:

  • Auto Reload automatically loads the next rewarded interstitial after completion.
  • Is Immersive hides system UI while the ad is shown.

The key event here is On Reward Earned, which passes two values:

  • Amount
  • Reward Type

These values are then forwarded to a custom event that applies the reward to the player using a function such as Give Reward to the Player.

This setup ensures that the player receives the reward only after fully watching the rewarded interstitial ad, following Google’s guidelines.


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"));
}