64 lines
2.6 KiB
Objective-C
64 lines
2.6 KiB
Objective-C
//
|
|
// TDAutoTrackEvent.m
|
|
// ThinkingSDK
|
|
//
|
|
// Created by Yangxiongon 2022/6/15.
|
|
//
|
|
|
|
#import "TDAutoTrackEvent.h"
|
|
#import "ThinkingAnalyticsSDKPrivate.h"
|
|
|
|
#if __has_include(<ThinkingDataCore/TDCorePresetDisableConfig.h>)
|
|
#import <ThinkingDataCore/TDCorePresetDisableConfig.h>
|
|
#else
|
|
#import "TDCorePresetDisableConfig.h"
|
|
#endif
|
|
|
|
@implementation TDAutoTrackEvent
|
|
|
|
- (NSMutableDictionary *)jsonObject {
|
|
NSMutableDictionary *dict = [super jsonObject];
|
|
// Reprocess the duration of automatic collection events, mainly app_start, app_end
|
|
// app_start app_end events are collected by the automatic collection management class. There are the following problems: the automatic collection management class and the timeTracker event duration management class are processed by listening to appLifeCycle notifications, so they are not at a precise and unified time point. There will be small errors that need to be eliminated.
|
|
// After testing, the error is less than 0.01s.
|
|
CGFloat minDuration = 0.01;
|
|
if (![TDCorePresetDisableConfig disableDuration]) {
|
|
if (self.foregroundDuration > minDuration) {
|
|
self.properties[@"#duration"] = @([NSString stringWithFormat:@"%.3f", self.foregroundDuration].floatValue);
|
|
}
|
|
}
|
|
if (![TDCorePresetDisableConfig disableBackgroundDuration]) {
|
|
if (self.backgroundDuration > minDuration) {
|
|
self.properties[TD_BACKGROUND_DURATION] = @([NSString stringWithFormat:@"%.3f", self.backgroundDuration].floatValue);
|
|
}
|
|
}
|
|
|
|
return dict;
|
|
}
|
|
|
|
- (TDAutoTrackEventType)autoTrackEventType {
|
|
if ([self.eventName isEqualToString:TD_APP_START_EVENT]) {
|
|
return TDAutoTrackEventTypeAppStart;
|
|
} else if ([self.eventName isEqualToString:TD_APP_START_BACKGROUND_EVENT]) {
|
|
return TDAutoTrackEventTypeAppStart;
|
|
} else if ([self.eventName isEqualToString:TD_APP_END_EVENT]) {
|
|
return TDAutoTrackEventTypeAppEnd;
|
|
} else if ([self.eventName isEqualToString:TD_APP_VIEW_EVENT]) {
|
|
return TDAutoTrackEventTypeAppViewScreen;
|
|
} else if ([self.eventName isEqualToString:TD_APP_CLICK_EVENT]) {
|
|
return TDAutoTrackEventTypeAppClick;
|
|
} else if ([self.eventName isEqualToString:TD_APP_CRASH_EVENT]) {
|
|
return TDAutoTrackEventTypeAppViewCrash;
|
|
} else if ([self.eventName isEqualToString:TD_APP_INSTALL_EVENT]) {
|
|
return TDAutoTrackEventTypeAppInstall;
|
|
} else {
|
|
return TDAutoTrackEventTypeNone;
|
|
}
|
|
}
|
|
|
|
- (void)ta_validateKey:(NSString *)key value:(id)value error:(NSError *__autoreleasing _Nullable *)error {
|
|
[TDPropertyValidator validateAutoTrackEventPropertyKey:key value:value error:error];
|
|
}
|
|
|
|
@end
|