Unreal In-App

Learn how to handle In-App notifications in Unreal SDK.

Overview

In-App notifications are contextual messages that are shown while users are actively using your app. They are perfect for:

  • Promoting offers
  • Nudging user actions
  • Delivering real-time updates without disrupting the experience

CleverTap Unreal SDK fully supports In-App notifications, with In-App Notification Control and In-App Notification Callbacks for display, interaction, and dismissal.

In-App Notification Setup

In-App notifications are suspended by default when the app starts. To start displaying them, first register your In-App callbacks (for display, clicks, and dismiss events). Then explicitly resume In-App delivery by calling:

ICleverTapInstance::ResumeInAppNotifications();

This ensures your app is ready to handle user interactions and avoids showing notifications before the handlers are set.

Payload Structure

All In-App notification callbacks return a flattened key-value map, where nested JSON objects are represented using dot-separated keys. For example:

{
  "a": {
    "b": 3.14
  }
}

Is flattened into:

Payload[FString{TEXT("a.b")}] == FCleverTapPropertyValue{3.14};
📘

Note

This structure simplifies accessing deeply nested parameters within your notification payload.

In-App Notification Callback

Use the following callbacks to track user interaction and dismissal behavior for In-App messages.

OnInAppNotificationShown

Triggered when an In-App notification is shown.

CleverTapSys = GEngine->GetEngineSubsystem<UCleverTapSubsystem>();
ICleverTapInstance& CleverTap = CleverTapSys->SharedInstance();

CleverTap.OnInAppNotificationShown.AddLambda([](const FCleverTapProperties& Payload)
{
    UE_LOG(LogTemp, Log, TEXT("An In-App notification was shown: %s"), *ToDebugString(Payload));
});

OnInAppNotificationButtonClicked

Triggered when the user taps a button within the in-app message.

CleverTapSys = GEngine->GetEngineSubsystem<UCleverTapSubsystem>();
ICleverTapInstance& CleverTap = CleverTapSys->SharedInstance();

CleverTap.OnInAppNotificationButtonClicked.AddLambda([](const FCleverTapProperties& Payload)
{
    UE_LOG(LogTemp, Log, TEXT("In-app notification button clicked: %s"), *ToDebugString(Payload));
});

OnInAppNotificationDismissed

Triggered when an In-App message is dismissed. Includes both extra and action-specific key-value pairs.

CleverTapSys = GEngine->GetEngineSubsystem<UCleverTapSubsystem>();
ICleverTapInstance& CleverTap = CleverTapSys->SharedInstance();

CleverTap.OnInAppNotificationDismissed.AddLambda([](const FCleverTapProperties& Extras, const FCleverTapProperties& ActionExtras)
{
    UE_LOG(LogTemp, Log, TEXT("In-app notification dismissed. Extras: %s, ActionExtras: %s"),
        *ToDebugString(Extras), *ToDebugString(ActionExtras));
});

In-App Notification Controls

In-app notifications are suspended by default when the app is initialized. You can control their behavior using the following methods:

Discard Queued Notifications

To discard notifications queued during the suspended state, call:

ICleverTapInstance::DiscardInAppNotifications();

Resume Notifications

To resume displaying In-App notifications, use:

ICleverTapInstance::ResumeInAppNotifications();

Notifications queued while suspended (and not explicitly discarded) will be shown to the user.

Suspend Notifications Again

To suspend In-App notifications at any point, call:

ICleverTapInstance::SuspendInAppNotifications();
📘

Minimize User Disruption

Suspending notifications is useful in scenarios such as onboarding flows or payment screens, where interruptions should be minimized.


Did this page help you?
CleverTap Ask AI Widget (CSP-Safe)