329 lines
10 KiB
Objective-C
329 lines
10 KiB
Objective-C
//
|
|
// TDAnalytics+Public.m
|
|
// ThinkingSDK
|
|
//
|
|
// Created by 杨雄 on 2023/8/17.
|
|
//
|
|
|
|
#import "TDAnalytics+Public.h"
|
|
#import "TDAnalytics+Multiple.h"
|
|
#import "ThinkingAnalyticsSDKPrivate.h"
|
|
#import "TDLogging.h"
|
|
#import "TDPublicConfig.h"
|
|
#import "TDConfigPrivate.h"
|
|
|
|
#if __has_include(<ThinkingDataCore/TDCalibratedTime.h>)
|
|
#import <ThinkingDataCore/TDCalibratedTime.h>
|
|
#else
|
|
#import "TDCalibratedTime.h"
|
|
#endif
|
|
|
|
#if __has_include(<ThinkingDataCore/TDCoreDeviceInfo.h>)
|
|
#import <ThinkingDataCore/TDCoreDeviceInfo.h>
|
|
#else
|
|
#import "TDCoreDeviceInfo.h"
|
|
#endif
|
|
|
|
#if __has_include(<ThinkingDataCore/NSString+TDCore.h>)
|
|
#import <ThinkingDataCore/NSString+TDCore.h>
|
|
#else
|
|
#import "NSString+TDCore.h"
|
|
#endif
|
|
|
|
#if __has_include(<ThinkingDataCore/NSURL+TDCore.h>)
|
|
#import <ThinkingDataCore/NSURL+TDCore.h>
|
|
#else
|
|
#import "NSURL+TDCore.h"
|
|
#endif
|
|
|
|
@implementation TDAnalytics (Public)
|
|
|
|
#pragma mark - Logging
|
|
|
|
+ (void)enableLog:(BOOL)enable {
|
|
[TDLogging sharedInstance].loggingLevel = enable ? TDLoggingLevelDebug : TDLoggingLevelNone;
|
|
}
|
|
|
|
#pragma mark - Calibrate time
|
|
|
|
+ (void)calibrateTime:(NSTimeInterval)timestamp {
|
|
[[TDCalibratedTime sharedInstance] recalibrationWithTimeInterval:timestamp/1000.0];
|
|
}
|
|
|
|
+ (void)calibrateTimeWithNtp:(NSString *)ntpServer {
|
|
if ([ntpServer isKindOfClass:[NSString class]] && ntpServer.length > 0) {
|
|
[[TDCalibratedTime sharedInstance] recalibrationWithNtps:@[ntpServer]];
|
|
}
|
|
}
|
|
|
|
// MARK: info
|
|
|
|
+ (nullable NSString *)getLocalRegion {
|
|
NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
|
|
return countryCode;
|
|
}
|
|
|
|
+ (void)setCustomerLibInfoWithLibName:(NSString *)libName libVersion:(NSString *)libVersion {
|
|
if (libName.length > 0) {
|
|
[TDDeviceInfo sharedManager].libName = libName;
|
|
}
|
|
if (libVersion.length > 0) {
|
|
[TDDeviceInfo sharedManager].libVersion = libVersion;
|
|
}
|
|
}
|
|
|
|
+ (NSString *)getSDKVersion {
|
|
return TDPublicConfig.version;
|
|
}
|
|
|
|
+ (NSString *)getDeviceId {
|
|
return [TDCoreDeviceInfo deviceId];
|
|
}
|
|
|
|
+ (NSString *)timeStringWithDate:(NSDate *)date {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
return [TDAnalytics timeStringWithDate:date withAppId:appId];
|
|
}
|
|
|
|
//MARK: - init
|
|
|
|
+ (void)startAnalyticsWithAppId:(NSString *)appId serverUrl:(NSString *)url {
|
|
TDConfig *config = [[TDConfig alloc] init];
|
|
config.appid = appId;
|
|
config.serverUrl = url;
|
|
[self startAnalyticsWithConfig:config];
|
|
}
|
|
|
|
+ (void)startAnalyticsWithConfig:(TDConfig *)config {
|
|
if (!config) {
|
|
return;
|
|
}
|
|
config.appid = [config.appid td_trim];
|
|
|
|
NSString *appId = config.appid;
|
|
if (appId.length == 0) {
|
|
return;
|
|
}
|
|
|
|
NSMutableDictionary *instances = [ThinkingAnalyticsSDK _getAllInstances];
|
|
if ([instances objectForKey:[config innerGetMapInstanceToken]]) {
|
|
return;
|
|
}
|
|
|
|
config.serverUrl = [NSURL td_baseUrlStringWithString:config.serverUrl];
|
|
NSString *url = config.serverUrl;
|
|
if (url.length == 0) {
|
|
return;
|
|
}
|
|
|
|
ThinkingAnalyticsSDK *sdk = [[ThinkingAnalyticsSDK alloc] initWithConfig:config];
|
|
TDLogInfo(@"instance token: %@", [sdk.config innerGetMapInstanceToken]);
|
|
}
|
|
|
|
+ (NSString *)lightInstanceIdWithAppId:(NSString *)appId {
|
|
ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
if (instance) {
|
|
ThinkingAnalyticsSDK *lightInstance = [instance innerCreateLightInstance];
|
|
return [lightInstance.config innerGetMapInstanceToken];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
//MARK: track
|
|
|
|
+ (void)flush {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics flushWithAppId:appId];
|
|
}
|
|
|
|
+ (void)setTrackStatus:(TDTrackStatus)status {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setTrackStatus:status withAppId:appId];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics track:eventName withAppId:appId];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics track:eventName properties:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties time:(NSDate *)time timeZone:(NSTimeZone *)timeZone {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics track:eventName properties:properties time:time timeZone:timeZone withAppId:appId];
|
|
}
|
|
|
|
+ (void)trackWithEventModel:(TDEventModel *)eventModel {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics trackWithEventModel:eventModel withAppId:appId];
|
|
}
|
|
|
|
+ (void)timeEvent:(NSString *)eventName {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics timeEvent:eventName withAppId:appId];
|
|
}
|
|
|
|
//MARK: user property
|
|
|
|
+ (void)userSet:(NSDictionary<NSString *, id> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userSet:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)userSetOnce:(NSDictionary<NSString *, id> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userSetOnce:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)userUnset:(NSString *)propertyName {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userUnset:propertyName withAppId:appId];
|
|
}
|
|
|
|
+ (void)userUnsets:(NSArray<NSString *> *)propertyNames {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userUnsets:propertyNames withAppId:appId];
|
|
}
|
|
|
|
+ (void)userAdd:(NSDictionary<NSString *, id> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userAdd:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)userAddWithName:(NSString *)propertyName andValue:(NSNumber *)propertyValue {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userAddWithName:propertyName andValue:propertyValue withAppId:appId];
|
|
}
|
|
|
|
+ (void)userAppend:(NSDictionary<NSString *, NSArray *> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userAppend:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)userUniqAppend:(NSDictionary<NSString *, NSArray *> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userUniqAppend:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)userDelete {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics userDeleteWithAppId:appId];
|
|
}
|
|
|
|
//MARK: super property & preset property
|
|
|
|
+ (void)setSuperProperties:(NSDictionary<NSString *, id> *)properties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setSuperProperties:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)unsetSuperProperty:(NSString *)property {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics unsetSuperProperty:property withAppId:appId];
|
|
}
|
|
|
|
+ (void)clearSuperProperties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics clearSuperPropertiesWithAppId:appId];
|
|
}
|
|
|
|
+ (NSDictionary *)getSuperProperties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
return [TDAnalytics getSuperPropertiesWithAppId:appId];
|
|
}
|
|
|
|
+ (void)setDynamicSuperProperties:(NSDictionary<NSString *, id> *(^)(void))propertiesHandler {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setDynamicSuperProperties:propertiesHandler withAppId:appId];
|
|
}
|
|
|
|
+ (TDPresetProperties *)getPresetProperties {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
return [TDAnalytics getPresetPropertiesWithAppId:appId];
|
|
}
|
|
|
|
//MARK: error callback
|
|
|
|
+ (void)registerErrorCallback:(void(^)(NSInteger code, NSString * _Nullable errorMsg, NSString * _Nullable ext))errorCallback {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics registerErrorCallback:errorCallback withAppId:appId];
|
|
}
|
|
|
|
//MARK: custom property
|
|
|
|
+ (void)setDistinctId:(NSString *)distinctId {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setDistinctId:distinctId withAppId:appId];
|
|
}
|
|
|
|
+ (NSString *)getDistinctId {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
return [TDAnalytics getDistinctIdWithAppId:appId];
|
|
}
|
|
|
|
+ (void)login:(NSString *)accountId {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics login:accountId withAppId:appId];
|
|
}
|
|
|
|
+ (NSString *)getAccountId {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
return [TDAnalytics getAccountIdWithAppId:appId];
|
|
}
|
|
|
|
+ (void)logout {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics logoutWithAppId:appId];
|
|
}
|
|
|
|
+ (void)setUploadingNetworkType:(TDReportingNetworkType)type {
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setUploadingNetworkType:type withAppId:appId];
|
|
}
|
|
|
|
// MARK: auto track
|
|
|
|
#if TARGET_OS_IOS
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics enableAutoTrack:eventType withAppId:appId];
|
|
}
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics enableAutoTrack:eventType properties:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType callback:(NSDictionary *(^ _Nullable)(TDAutoTrackEventType, NSDictionary *))callback API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics enableAutoTrack:eventType callback:callback withAppId:appId];
|
|
}
|
|
|
|
+ (void)ignoreAutoTrackViewControllers:(nonnull NSArray<NSString *> *)controllers API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics ignoreAutoTrackViewControllers:controllers withAppId:appId];
|
|
}
|
|
|
|
+ (void)ignoreViewType:(nonnull Class)aClass API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics ignoreViewType:aClass withAppId:appId];
|
|
}
|
|
|
|
+ (void)setAutoTrackProperties:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setAutoTrackProperties:eventType properties:properties withAppId:appId];
|
|
}
|
|
|
|
+ (void)setAutoTrackDynamicProperties:(NSDictionary<NSString *,id> * _Nonnull (^)(void))dynamicSuperProperties API_UNAVAILABLE(macos){
|
|
NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
|
|
[TDAnalytics setAutoTrackDynamicProperties:dynamicSuperProperties withAppId:appId];
|
|
}
|
|
|
|
#endif
|
|
|
|
@end
|