Skip to content

Launch In-App Review

This is an asynchronous function that triggers the native Google Play in-app review flow.
The review dialog is displayed and controlled entirely by the Play Store β€” your game cannot force or customize its appearance.

You must wait until the user finishes interacting with the dialog before continuing your app logic.
Once the operation completes, one of two delegates will be called β€” On Success or On Failure.

πŸ’‘ According to Google Play policy, regardless of the outcome β€” success or failure β€”
your app must always continue its normal flow after calling this function.
Do not block gameplay or force the player to submit a review.


Parameters

1. On Success

This delegate is triggered once the user has completed the in-app review flow.
The Google Play API does not reveal whether the user actually submitted a review or whether the dialog was displayed β€” the call only indicates that the process has finished successfully.

You can simply drag this pin in Blueprint to create a custom event and execute any follow-up logic (e.g., show a thank-you message or resume gameplay).


2. On Failure

A delegate that is triggered if the initialization fails.
It provides two parameters:

  • Response Code β€” EInAppReviewResponseCode indicating the type of error.
  • Message β€” FString with additional debug information describing the failure reason.

Use this delegate to handle initialization errors and show appropriate messages to the player.


Example

In this example, the Launch In-App Review node is used to display the native Google Play review dialog.
Two execution pins handle the possible outcomes β€” On Success and On Failure.

In both cases, the app must continue its regular logic flow without interruption,
as required by Google Play’s policy.


C++ Usage

You can also launch in-app review flow directly from C++ using delegates for success and failure callbacks.

#include "InAppReviewCPPLibrary.h"

void UMyGameInstance::LaunchInAppReview()
{
    FOnInAppReviewSuccessfulNative OnSuccess;
    OnSuccess.BindLambda([]()
    {
        UE_LOG(LogTemp, Log, TEXT("In-App Review call successfull."));
    });

    FOnInAppReviewFailedNative OnFailure;
    OnFailure.BindLambda([](EInAppReviewResponseCode Code, const FString& Message)
    {
        UE_LOG(LogTemp, Error, TEXT("In-App Review call failed: %s (Code: %d)"), *Message, static_cast<int32>(Code));
    });

    UInAppReviewCPPLibrary::LaunchInAppReview(OnSuccess, OnFailure);
}