namespace AnalyticsConversion { template<typename T> decltype(auto) AnalyticsConversion::ToString ( T && Value ) }


Method that can be bound to an FAnalyticsProviderConfigurationDelegate.

FString GetValue &40; const FString & KeyName, bool bIsRequired &41; const


Reads the ProviderModuleName key from the Analytics section of GEngineIni, which is the default, preferred location to look for the analytics provider name. This is purely optional, and you can store that information anywhere you want or merely hardcode the provider module.


Allows setting the INI section name based on the build type passed in. Allows access to the default section values when the application chooses the build type itself.

void SetSectionNameByBuildType &40; EAnalyticsBuildType InBuildType &41;


Create a config using the default values: IniName - GEngineIni SectionName (Development) = AnalyticsDevelopment SectionName (Debug) = AnalyticsDebug SectionName (Test) = AnalyticsTest SectionName (Release) = Analytics


Create a config AS IF the BuildType matches the one passed in.

ConfigFromIni &40; EAnalyticsBuildType InBuildType &41;


Create a config, specifying the Ini name and a single section name for all build types.

ConfigFromIni &40; const FString & InIniName, const FString & InSectionName &41;


Create a config, specifying the Ini name and the section name for each build type.

ConfigFromIni &40; const FString & InIniName, const FString & SectionNameDevelopment, const FString & SectionNameDebug, const FString & SectionNameTest, const FString & SectionNameRelease &41;


A common way of configuring is from Inis, so this class supports that notion directly by providing a configuration class with a method suitable to be used as an FAnalyticsProviderConfigurationDelegate that reads values from the specified ini and section (based on the BuildType). Also provides a default location to store a provider name, accessed viaGetDefaultProviderModuleName().

IniName

Ini file name to find the config values.

SectionName

Section name in the Ini file in which to find the keys.


Factory function to create a specific analytics provider by providing the string name of the provider module, which will be dynamically loaded.
the analytics provider instance that was created. Could be NULL if initialization failed.

virtual [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IAnalyticsProvider](API\Runtime\Analytics\Interfaces\IAnalyticsProvider) > CreateAnalyticsProvider ( const [FName](API\Runtime\Core\UObject\FName) & ProviderModuleName, const FAnalyticsProviderConfigurationDelegate & GetConfigValue )


Singleton-like access to this module's interface. This is just for convenience! Beware of calling this during the shutdown phase, though. Your module might have been unloaded already.
Returns singleton instance, loading the module on demand if needed

static [FAnalytics](API\Runtime\Analytics\FAnalytics) & Get()


Helper for reading configuration values from an INI file (which will be a common scenario). This is exposed here so we're not exporting more classes from the module. It's merely a helper forConfigFromInistruct above.

virtual [FString](API\Runtime\Core\Containers\FString) GetConfigValueFromIni ( const [FString](API\Runtime\Core\Containers\FString) & IniName, const [FString](API\Runtime\Core\Containers\FString) & SectionName, const [FString](API\Runtime\Core\Containers\FString) & KeyName, bool bIsRequired )


This implementation is kept in the header file to illustrate how providers are created using configuration delegates.


Checks to see if this module is loaded and ready. It is only valid to callGet()ifIsAvailable()returns true.
True if the module is loaded and ready to use


Helper for writing configuration values from to an INI file (which will be a common scenario).

virtual void WriteConfigValueToIni ( const [FString](API\Runtime\Core\Containers\FString) & IniName, const [FString](API\Runtime\Core\Containers\FString) & SectionName, const [FString](API\Runtime\Core\Containers\FString) & KeyName, const [FString](API\Runtime\Core\Containers\FString) & Value )


Module functionality.


To create an analytics provider using all the system defaults, simply call the staticGetDefaultConfiguredProvider().

class FAnalytics : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


enum AttrTypeEnum { String, Number, Boolean, Null, JsonFragment, }


const [FString](API\Runtime\Core\Containers\FString) & GetName() const


const [FString](API\Runtime\Core\Containers\FString) & GetValue() const


ALlow aggregation of attributes

[FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & operator+ ( const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & RHS )


static bool IsValidAttributeName ( const [FString](API\Runtime\Core\Containers\FString) & InName )


ALlow aggregation of attributes

[FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & operator+= ( const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & RHS )


Hack to allow assignment. This class only "sort of" acts like an immutable class because the const members prevents assignment, which was not intended when this code was changed.

[FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & operator= ( const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & RHS )


[FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & operator= ( [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) && RHS )


Allow setting value for any type that supports LexToString

template<typename ValueType> void SetValue ( ValueType && InValue )


Legacy support for old RecordEventJson API. Don't call this directly.


If you need the old AttrValue behavior (i.e. stringify everything), call this function instead.


The implementation of this class references deprecated members. Don't fire warnings for these. For this reason we actually implement the entire class out-of-line, but still in the header files, so we can wrap all the implementations in DISABLE macro easily.


Reinstate the default copy ctor because that one still works fine.

FAnalyticsEventAttribute ( const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & RHS )


Hack to allow copy ctor using an rvalue-ref. This class only "sort of" acts like an immutable class because the const members prevents assignment, which was not intended when this code was changed.

FAnalyticsEventAttribute ( [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) && RHS )


template<typename ValueType> FAnalyticsEventAttribute ( [FString](API\Runtime\Core\Containers\FString) InName, ValueType && InValue )


Struct to hold key/value pairs that will be sent as attributes along with analytics events. All values are actually strings, but we provide a convenient constructor that relies on ToStringForAnalytics() to convert common types.


Returns true if the store contains the specified key.

virtual bool Contains ( const [FString](API\Runtime\Core\Containers\FString) & Key ) const


Create a new store, creating the file of the specified capacity and resetting the current state.

bool Create ( const [FString](API\Runtime\Core\Containers\FString) & Pathname, uint32 CapacityHint )


Flushes cached values to disk. Only one thread can flush at a time, causing possible latency if a flush is alreary happenning. Store.Flush();//Flushinthecallingthread,blockuntilallthreadshasfinishedflushing.Store.Flush(false,FTimespan::Zero());//Flushinthecallingthreadifpossible,returnimmediatedlyifanotherthreadisalreadyflushing.Store.Flush(true,FTimespan::Zero());//Flushinabackgroudthreadifnootherthreadisflushing,returnimmediatedlyifanotherflushingtaskisrunning.Store.Flush(true);//Flushinabackgroundthread,mightblockifathreadisalreadyflushing.(Itdoesn'tqueueseveraltasks).
True if the flush was executed (synchronous) or scheduled (asynchronous), false if the operation timed out.

virtual bool Flush ( bool bAsync, const [FTimespan](API\Runtime\Core\Misc\FTimespan) & Timeout )


Reads the specified key value from the store.
One of the following code

virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, int64 & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, float & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, double & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, [FString](API\Runtime\Core\Containers\FString) & OutValue ) const


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, [FDateTime](API\Runtime\Core\Misc\FDateTime) & OutValue ) const


Returns true is the store was successfully created or loaded.


Load the specified file in memory, resetting the current state.
true if the file was loaded successuflly, false if the file doesn't exist, the file format/version is invalid or if the file is corrupted (failed checksum).

bool Load ( const [FString](API\Runtime\Core\Containers\FString) & Pathname )


Returns the number of elements in the store.


[FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) & operator= ( const [FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) & )


[FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) & operator= ( [FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) && )


Removes the specified key from the store.
true if the key was removed.

virtual bool Remove ( const [FString](API\Runtime\Core\Containers\FString) & Key )


Removes all existing keys from the store.


Adds or updates the specified key/value pair. If the key doesn't exist, the key/value pair is added. If the key already exists, the value is updated if the stored value and the specified value types match.EStatusCode::Successif the key was added or updated,EStatusCode::BadTypeif the value type did not match the current value type.

virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 Value )


Conditionnnaly adds or updates the specified key/value pair. The operation is atomic from the caller perspective. The function reads the actual value (if it exists), invoke the ConditionFn callback and write the value back if the condition function returns true. If the key doesn't exist, the actual value passed back to the condition function is null. If the condition function returns true, the proposed value is set, otherwise, the operation is declined and the store remains unchanged.
One of the following code

virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const int32 *, const int32 &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const uint32 *, const uint32 &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int64 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const int64 *, const int64 &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const uint64 *, const uint64 &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, float Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const float *, const float &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, double Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const double *, const double &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const bool *, const bool &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FString](API\Runtime\Core\Containers\FString) & Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const [FString](API\Runtime\Core\Containers\FString) *, const [FString](API\Runtime\Core\Containers\FString) &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FDateTime](API\Runtime\Core\Misc\FDateTime) & Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const [FDateTime](API\Runtime\Core\Misc\FDateTime) *, const [FDateTime](API\Runtime\Core\Misc\FDateTime) &)> & ConditionFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int64 Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, float Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, double Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool Value )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FString](API\Runtime\Core\Containers\FString) & Value, uint32 CharCountCapacityHint )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FDateTime](API\Runtime\Core\Misc\FDateTime) & Value )


Updates an exiting value. The operation is atomic from the caller perspective. The function reads the actual value and invoke UpdateFn callback with the actual value. The callback can update the actual value or decline the operation. If the key is not found, the callback is not invoked.
One of the following code

virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(int32 &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(uint32 &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(uint64 &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(int64 &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(float &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool([FString](API\Runtime\Core\Containers\FString) &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(bool &)> & UpdateFn )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool([FDateTime](API\Runtime\Core\Misc\FDateTime) &)> & UpdateFn )


Iterates the keys currently stored and invokes the visitor function for each key, converting the value to its string representation.

virtual void VisitAll ( const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< void([FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) &&)> & VisitFn ) const


FAnalyticsPropertyStore ( const [FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) & )


Create an empty store.


FAnalyticsPropertyStore ( [FAnalyticsPropertyStore](API\Runtime\Analytics\FAnalyticsPropertyStore) && )


virtual [EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(double &)> & UpdateFn )


FJsonFragment ( [FString](API\Runtime\Core\Containers\FString) && StringRef )


Implements a fast key/value database to store the metrics gathered to create the session summary event. The store is buffered in memory until it is flushed to disk by callingFlush(). It is not designed to handle millions of key/value pairs, but rather a small subset that fits in memory. The implementation reserve disk space ahead of time and can usually perform in-place update. Setting or getting intrinsic types (int32, uint32, int64, uint64, float, double, bool as well asFDateTime) doesn't allocate memory. The string time is often updated in place if enough capacity was reserved. All store operations are thread safe and atomic from the caller perspective.

class FAnalyticsPropertyStore : public [IAnalyticsPropertyStore](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore)


Recursion terminator. Empty list.

namespace ImplMakeAnalyticsEventAttributeArray { template<typename Allocator> void ImplMakeAnalyticsEventAttributeArray::MakeArray ( [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute), Allocator > & Attrs ) }


Recursion terminator. Convert the key/value pair to analytics strings.

namespace ImplMakeAnalyticsEventAttributeArray { template<typename Allocator, typename KeyType, typename ValueType> void ImplMakeAnalyticsEventAttributeArray::MakeArray ( [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute), Allocator > & Attrs, KeyType && Key, ValueType && Value ) }


bool Contains ( const [FString](API\Runtime\Core\Containers\FString) & Key ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 & OutValue ) const


Flushes cached values to persistent storage.
True if the flush was executed (synchronous) or scheduled (asynchronous), false if the operation timed out.

bool Flush ( bool bAsync, const [FTimespan](API\Runtime\Core\Misc\FTimespan) & Timeout )


The list of store operation outcome.

enum EStatusCode { Success, NotFound, BadType, Declined, }


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, int64 & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, float & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, double & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, [FString](API\Runtime\Core\Containers\FString) & OutValue ) const


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( const [FString](API\Runtime\Core\Containers\FString) & Key, [FDateTime](API\Runtime\Core\Misc\FDateTime) & OutValue ) const


bool Remove ( const [FString](API\Runtime\Core\Containers\FString) & Key )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const uint32 *, const uint32 &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int32 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const int32 *, const int32 &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, int64 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const int64 *, const int64 &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const uint64 *, const uint64 &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, double Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const double *, const double &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, float Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const float *, const float &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const bool *, const bool &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FString](API\Runtime\Core\Containers\FString) & Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const [FString](API\Runtime\Core\Containers\FString) *, const [FString](API\Runtime\Core\Containers\FString) &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FDateTime](API\Runtime\Core\Misc\FDateTime) & Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const [FDateTime](API\Runtime\Core\Misc\FDateTime) *, const [FDateTime](API\Runtime\Core\Misc\FDateTime) &)> & ConditionFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint32 Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, uint64 Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, float Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, double Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, bool Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FDateTime](API\Runtime\Core\Misc\FDateTime) & Value )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [FString](API\Runtime\Core\Containers\FString) & Value, uint32 CharCountCapacityHint )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(int32 &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(uint32 &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(uint64 &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(int64 &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(float &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(double &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool([FString](API\Runtime\Core\Containers\FString) &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(bool &)> & UpdateFn )


[EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( const [FString](API\Runtime\Core\Containers\FString) & Key, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool([FDateTime](API\Runtime\Core\Misc\FDateTime) &)> & UpdateFn )


void VisitAll ( const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< void([FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) &&)> & VisitFn ) const


Implements a fast type safe key/value database to store analytics properties collected during a session.


Ends the session. Usually no need to call explicitly, as the provider should do this for you when the instance is destroyed.


Note that not all providers support explicitly sending any cached events. In which case this method does nothing.


Gets the opaque session identifier string for the provider.


Gset the current UserID. Use -ANALYTICSUSERID=command line to force the provider to use a specific UserID for this run.


Note that not all providers support currency events. In this case this method is equivalent to sending a regular event with name "Currency Given".

virtual void RecordCurrencyGiven ( const [FString](API\Runtime\Core\Containers\FString) & GameCurrencyType, int GameCurrencyAmount )


virtual void RecordCurrencyGiven ( const [FString](API\Runtime\Core\Containers\FString) & GameCurrencyType, int GameCurrencyAmount, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


Note that not all providers support item purchase events. In this case this method is equivalent to sending a regular event with name "Item Purchase".

virtual void RecordCurrencyPurchase ( const [FString](API\Runtime\Core\Containers\FString) & GameCurrencyType, int GameCurrencyAmount )


Note that not all providers support currency events. In this case this method is equivalent to sending a regular event with name "Currency Purchase".

virtual void RecordCurrencyPurchase ( const [FString](API\Runtime\Core\Containers\FString) & GameCurrencyType, int GameCurrencyAmount, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


virtual void RecordCurrencyPurchase ( const [FString](API\Runtime\Core\Containers\FString) & GameCurrencyType, int GameCurrencyAmount, const [FString](API\Runtime\Core\Containers\FString) & RealCurrencyType, float RealMoneyCost, const [FString](API\Runtime\Core\Containers\FString) & PaymentProvider )


Note that not all providers support all events. In this case this method is equivalent to sending a regular event with name "Game Error".

virtual void RecordError ( const [FString](API\Runtime\Core\Containers\FString) & Error )


virtual void RecordError ( const [FString](API\Runtime\Core\Containers\FString) & Error, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


Overload for RecordEvent that takes no parameters

void RecordEvent ( const [FString](API\Runtime\Core\Containers\FString) & EventName )


Records a named event with an array of attributes

void RecordEvent ( const [FString](API\Runtime\Core\Containers\FString) & EventName, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & Attributes )


Overload for RecordEvent that takes a single attribute

void RecordEvent ( const [FString](API\Runtime\Core\Containers\FString) & EventName, const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & Attribute )


Overload for RecordEvent that takes a single name/value pair

void RecordEvent ( const [FString](API\Runtime\Core\Containers\FString) & EventName, const [FString](API\Runtime\Core\Containers\FString) & ParamName, const [FString](API\Runtime\Core\Containers\FString) & ParamValue )


void RecordItemPurchase ( const [FString](API\Runtime\Core\Containers\FString) & ItemId, int ItemQuantity )


virtual void RecordItemPurchase ( const [FString](API\Runtime\Core\Containers\FString) & ItemId, int ItemQuantity, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


virtual void RecordItemPurchase ( const [FString](API\Runtime\Core\Containers\FString) & ItemId, const [FString](API\Runtime\Core\Containers\FString) & Currency, int PerItemCost, int ItemQuantity )


Note that not all providers support all events. In this case this method is equivalent to sending a regular event with name "Progression".

virtual void RecordProgress ( const [FString](API\Runtime\Core\Containers\FString) & ProgressType, const [FString](API\Runtime\Core\Containers\FString) & ProgressHierarchy )


virtual void RecordProgress ( const [FString](API\Runtime\Core\Containers\FString) & ProgressType, const [TArray](API\Runtime\Core\Containers\TArray)< [FString](API\Runtime\Core\Containers\FString) > & ProgressHierarchy, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


virtual void RecordProgress ( const [FString](API\Runtime\Core\Containers\FString) & ProgressType, const [FString](API\Runtime\Core\Containers\FString) & ProgressHierarchy, const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & EventAttrs )


Sets the location the game believes the user is playing in as part of the session

virtual void SetAge ( const int32 InAge )


Sets a user defined string as the build information/version for the session

virtual void SetBuildInfo ( const [FString](API\Runtime\Core\Containers\FString) & InBuildInfo )


Sets the gender the game believes the user is as part of the session

virtual void SetGender ( const [FString](API\Runtime\Core\Containers\FString) & InGender )


virtual void SetLocation ( const [FString](API\Runtime\Core\Containers\FString) & InLocation )


Sets the session ID of the analytics session. This is not something you normally have to do, except for circumstances where you need to send events on behalf of another user (like a dedicated server sending events for the connected clients).

bool SetSessionID ( const [FString](API\Runtime\Core\Containers\FString) & InSessionID )


Set the UserID for use with analytics. Some providers require a unique ID to be provided when supplying events, and some providers create their own. If you are using a provider that requires you to supply the ID, use this method to set it.

void SetUserID ( const [FString](API\Runtime\Core\Containers\FString) & InUserID )


Starts a session. It's technically legal to send events without starting a session. The use case is for backends and dedicated servers to send events on behalf of a user without technically affecting the session length of the local player. Local players log in and start/end the session, but remote players simply call SetUserID and start sending events, which is legal and analytics providers should gracefully handle this. Repeated calls to this method will be ignored.
true if the session started successfully.


Starts a session. See parameterless-version for contract details.

bool StartSession ( const [TArray](API\Runtime\Core\Containers\TArray)< [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) > & Attributes )


Overload for StartSession that takes a single name/value pair

bool StartSession ( const [FString](API\Runtime\Core\Containers\FString) & ParamName, const [FString](API\Runtime\Core\Containers\FString) & ParamValue )


Overload for StartSession that takes a single attribute

bool StartSession ( const [FAnalyticsEventAttribute](API\Runtime\Analytics\FAnalyticsEventAttribute) & Attribute )


There are several other methods to record specific types of events. They were added for legacy reasons to support specific third party implementations. Derived classes generally do not have to worry about them.


[TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IAnalyticsProvider](API\Runtime\Analytics\Interfaces\IAnalyticsProvider) > CreateAnalyticsProvider ( const FAnalyticsProviderConfigurationDelegate & GetConfigValue ) const


Generic interface for an analytics provider. Other modules can define more and register them with this module.

class IAnalyticsProviderModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


[IAnalyticsPropertyStore::EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Get ( [IAnalyticsPropertyStore](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore) * Store, T & OutValue ) const


[IAnalyticsPropertyStore::EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( [IAnalyticsPropertyStore](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore) * Store, const T & Value ) const


[IAnalyticsPropertyStore::EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Set ( [IAnalyticsPropertyStore](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore) * Store, const T & Value, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(const T *, const T &)> & ConditionFn ) const


[IAnalyticsPropertyStore::EStatusCode](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore\EStatusCode) Update ( [IAnalyticsPropertyStore](API\Runtime\Analytics\Interfaces\IAnalyticsPropertyStore) * Store, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< bool(T &InOutValue)> & UpdateFn ) const


TAnalyticsProperty ( const TCHAR * InKey )


TAnalyticsProperty< FString >

template<typename T> class TAnalyticsProperty


IAnalyticsPropertyStore::EStatusCode Get &40; IAnalyticsPropertyStore &42; Store, FString & OutValue &41; const


IAnalyticsPropertyStore::EStatusCode Set &40; IAnalyticsPropertyStore &42; Store, const FString & Value, uint32 CharCountCapacityHint &41; const


IAnalyticsPropertyStore::EStatusCode Set &40; IAnalyticsPropertyStore &42; Store, const FString & Value, const TFunction< bool(const FString &42;, const FString &)> & ConditionFn &41; const


TAnalyticsProperty &40; const TCHAR &42; InKey &41;


IAnalyticsPropertyStore::EStatusCode Update &40; IAnalyticsPropertyStore &42; Store, const TFunction< bool(FString &InOutValue)> & UpdateFn &41; const


Specialization forFStringbecause the caller can specifies a capacity when adding a string.

template<> class TAnalyticsProperty< FString >