UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StudioTelemetry.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "Containers/Array.h"
9#include "CoreMinimal.h"
12
25{
26public:
27
29
32
35
38
41
44
47
50
53
55 STUDIOTELEMETRY_API void RecordEvent(const FString& EventName, const TArray<FAnalyticsEventAttribute>& Attributes = {});
56
58 STUDIOTELEMETRY_API void RecordEvent(const FName CategoryName, const FString& EventName, const TArray<FAnalyticsEventAttribute>& Attributes = {});
59
61 STUDIOTELEMETRY_API void RecordEventToProvider(const FString& ProviderName, const FString& EventName, const TArray<FAnalyticsEventAttribute>& Attributes = {});
62
65
68
71
74
77
80
83
86
89 FOnStartSession& GetOnStartSession() { return OnStartSession; }
90
92 FOnEndSession& GetOnEndSession() { return OnEndSession; }
93
95 FOnRecordEvent& GetOnRecordEvent() { return OnRecordEvent; }
96
99 {
100 public:
105
110 };
111
114 {
115 public:
123
125 {
127 {
129 }
130 }
131 private:
132
134 };
135
136private:
137
139 void LoadConfiguration();
140
141 struct FConfig
142 {
143 bool bSendTelemetry = true; // Only send telemetry data if we have been requested to
144 bool bSendUserData = false; // Never send user data unless specifically asked to
145 bool bSendHardwareData = false; // Never send hardware data unless specifically asked to4
146 bool bSendOSData = false; // Never send operating system data unless specifically asked to
147 };
148
149 FCriticalSection CriticalSection;
151 TSharedPtr<IAnalyticsTracer> AnalyticsTracer;
152 OnRecordEventCallback RecordEventCallback;
153 FGuid SessionGUID;
154 FConfig Config;
155 FOnStartSession OnStartSession;
156 FOnEndSession OnEndSession;
157 FOnRecordEvent OnRecordEvent;
158};
159
160// Useful macros for scoped sessions and spans
161#define STUDIO_TELEMETRY_SESSION_SCOPE FStudioTelemetry::FSessionScope PREPROCESSOR_JOIN(FSessionScope, __LINE__);
162#define STUDIO_TELEMETRY_SPAN_SCOPE(Name) FStudioTelemetry::FSpanScope PREPROCESSOR_JOIN(FSpanScope, __LINE__)(TEXT(#Name));
163#define STUDIO_TELEMETRY_START_SPAN(Name) if (FStudioTelemetry::Get().IsAvailable()) { FStudioTelemetry::Get().StartSpan(TEXT(#Name));}
164#define STUDIO_TELEMETRY_END_SPAN(Name) if (FStudioTelemetry::Get().IsAvailable()) { FStudioTelemetry::Get().EndSpan(TEXT(#Name));}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
Definition AnalyticsProviderBroadcast.h:25
Definition NameTypes.h:617
Definition StudioTelemetry.h:99
~FSessionScope()
Definition StudioTelemetry.h:106
FSessionScope()
Definition StudioTelemetry.h:101
Definition StudioTelemetry.h:114
FSpanScope(const FName Name, const TArray< FAnalyticsEventAttribute > &AdditionalAttributes={})
Definition StudioTelemetry.h:116
~FSpanScope()
Definition StudioTelemetry.h:124
Definition StudioTelemetry.h:25
STUDIOTELEMETRY_API bool EndSpan(TSharedPtr< IAnalyticsSpan > Span, const TArray< FAnalyticsEventAttribute > &AdditionalAttributes={})
Definition StudioTelemetry.cpp:329
STUDIOTELEMETRY_API void EndSession()
Definition StudioTelemetry.cpp:201
FOnEndSession & GetOnEndSession()
Definition StudioTelemetry.h:92
DECLARE_MULTICAST_DELEGATE(FOnEndSession)
STUDIOTELEMETRY_API void SetRecordEventCallback(OnRecordEventCallback)
Definition StudioTelemetry.cpp:42
STUDIOTELEMETRY_API void RecordEvent(const FString &EventName, const TArray< FAnalyticsEventAttribute > &Attributes={})
Definition StudioTelemetry.cpp:264
STUDIOTELEMETRY_API bool StartSession()
Definition StudioTelemetry.cpp:54
static bool IsAvailable()
Definition StudioTelemetry.h:31
STUDIOTELEMETRY_API TSharedPtr< IAnalyticsSpan > StartSpan(const FName Name, const TArray< FAnalyticsEventAttribute > &AdditionalAttributes={})
Definition StudioTelemetry.cpp:319
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnRecordEvent, const FString &, const TArray< FAnalyticsEventAttribute > &)
STUDIOTELEMETRY_API void RecordEventToProvider(const FString &ProviderName, const FString &EventName, const TArray< FAnalyticsEventAttribute > &Attributes={})
Definition StudioTelemetry.cpp:293
FOnRecordEvent & GetOnRecordEvent()
Definition StudioTelemetry.h:95
STUDIOTELEMETRY_API TWeakPtr< IAnalyticsTracer > GetTracer()
Definition StudioTelemetry.cpp:314
STUDIOTELEMETRY_API void FlushEvents()
Definition StudioTelemetry.cpp:284
DECLARE_MULTICAST_DELEGATE(FOnStartSession)
STUDIOTELEMETRY_API TWeakPtr< IAnalyticsProvider > GetProvider()
Definition StudioTelemetry.cpp:304
STUDIOTELEMETRY_API TSharedPtr< IAnalyticsSpan > GetSessionSpan() const
Definition StudioTelemetry.cpp:344
STUDIOTELEMETRY_API TSharedPtr< IAnalyticsSpan > GetSpan(const FName Name)
Definition StudioTelemetry.cpp:339
FOnStartSession & GetOnStartSession()
Definition StudioTelemetry.h:89
STUDIOTELEMETRY_API bool IsSessionRunning() const
Definition StudioTelemetry.cpp:231
static STUDIOTELEMETRY_API FStudioTelemetry & Get()
Definition StudioTelemetry.cpp:36
TFunction< void(const FString &EventName, const TArray< FAnalyticsEventAttribute > &Attrs)> OnRecordEventCallback
Definition StudioTelemetry.h:28
Definition ModuleInterface.h:14
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition SharedPointer.h:1295
Definition Guid.h:109