257 lines
10 KiB
Objective-C
257 lines
10 KiB
Objective-C
//
|
|
// TDAnalytics+Multiple.m
|
|
// ThinkingSDK
|
|
//
|
|
// Created by 杨雄 on 2023/8/17.
|
|
//
|
|
|
|
#import "TDAnalytics+Multiple.h"
|
|
#import "ThinkingAnalyticsSDKPrivate.h"
|
|
#import "TDConfigPrivate.h"
|
|
#if TARGET_OS_IOS
|
|
#import "TDAutoTrackManager.h"
|
|
#endif
|
|
|
|
@implementation TDAnalytics (Multiple)
|
|
|
|
+ (void)flushWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerFlush];
|
|
}
|
|
|
|
+ (void)setTrackStatus:(TDTrackStatus)status withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerSetTrackStatus:status];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerTrack:eventName];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerTrack:eventName properties:properties];
|
|
}
|
|
|
|
+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties time:(NSDate *)time timeZone:(NSTimeZone *)timeZone withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerTrack:eventName properties:properties time:time timeZone:timeZone];
|
|
}
|
|
|
|
+ (void)trackWithEventModel:(TDEventModel *)eventModel withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerTrackWithEventModel:eventModel];
|
|
}
|
|
|
|
+ (void)timeEvent:(NSString *)eventName withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerTimeEvent:eventName];
|
|
}
|
|
|
|
//MARK: user property
|
|
|
|
+ (void)userSet:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserSet:properties];
|
|
}
|
|
|
|
+ (void)userSetOnce:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserSetOnce:properties];
|
|
}
|
|
|
|
+ (void)userUnset:(NSString *)propertyName withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserUnset:propertyName];
|
|
}
|
|
|
|
+ (void)userUnsets:(NSArray<NSString *> *)propertyNames withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserUnsets:propertyNames];
|
|
}
|
|
|
|
+ (void)userAdd:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserAdd:properties];
|
|
}
|
|
|
|
+ (void)userAddWithName:(NSString *)propertyName andValue:(NSNumber *)propertyValue withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserAdd:propertyName andPropertyValue:propertyValue];
|
|
}
|
|
|
|
+ (void)userAppend:(NSDictionary<NSString *, NSArray *> *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserAppend:properties];
|
|
}
|
|
|
|
+ (void)userUniqAppend:(NSDictionary<NSString *, NSArray *> *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserUniqAppend:properties];
|
|
}
|
|
|
|
+ (void)userDeleteWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUserDelete];
|
|
}
|
|
|
|
//MARK: super property & preset property
|
|
|
|
+ (void)setSuperProperties:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerSetSuperProperties:properties];
|
|
}
|
|
|
|
+ (void)unsetSuperProperty:(NSString *)property withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerUnsetSuperProperty:property];
|
|
}
|
|
|
|
+ (void)clearSuperPropertiesWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerClearSuperProperties];
|
|
}
|
|
|
|
+ (NSDictionary *)getSuperPropertiesWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
return [teSDK innerCurrentSuperProperties];
|
|
}
|
|
|
|
+ (void)setDynamicSuperProperties:(NSDictionary<NSString *, id> *(^)(void))propertiesHandler withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerRegisterDynamicSuperProperties:propertiesHandler];
|
|
}
|
|
|
|
+ (TDPresetProperties *)getPresetPropertiesWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
return [teSDK innerGetPresetProperties];
|
|
}
|
|
|
|
//MARK: error callback
|
|
|
|
+ (void)registerErrorCallback:(void(^)(NSInteger code, NSString * _Nullable errorMsg, NSString * _Nullable ext))errorCallback withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerRegisterErrorCallback:errorCallback];
|
|
}
|
|
|
|
//MARK: custom property
|
|
|
|
+ (void)setDistinctId:(NSString *)distinctId withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerSetIdentify:distinctId];
|
|
}
|
|
|
|
+ (NSString *)getDistinctIdWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
return [teSDK innerDistinctId];
|
|
}
|
|
|
|
+ (void)login:(NSString *)accountId withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerLogin:accountId];
|
|
}
|
|
|
|
+ (void)logoutWithAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerLogout];
|
|
}
|
|
|
|
+ (NSString *)getAccountIdWithAppId:(NSString *)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
return [teSDK innerAccountId];
|
|
}
|
|
|
|
+ (void)setUploadingNetworkType:(TDReportingNetworkType)type withAppId:(NSString * _Nullable)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
[teSDK innerSetNetworkType:type];
|
|
}
|
|
|
|
+ (NSString *)timeStringWithDate:(NSDate *)date withAppId:(NSString *)appId {
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
return [teSDK innetGetTimeString:date];
|
|
}
|
|
|
|
//MARK: - auto track
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType callback:(NSDictionary *(^ _Nullable)(TDAutoTrackEventType, NSDictionary *))callback withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
[self innerEnableAutoTrack:eventType properties:nil callback:callback withAppId:appId];
|
|
}
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
[self innerEnableAutoTrack:eventType properties:properties callback:nil withAppId:appId];
|
|
}
|
|
|
|
+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
[self innerEnableAutoTrack:eventType properties:nil callback:nil withAppId:appId];
|
|
}
|
|
|
|
+ (void)ignoreAutoTrackViewControllers:(nonnull NSArray<NSString *> *)controllers withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
if ([teSDK hasDisabled]) {
|
|
return;
|
|
}
|
|
if (controllers == nil || controllers.count == 0) {
|
|
return;
|
|
}
|
|
@synchronized (teSDK.ignoredViewControllers) {
|
|
[teSDK.ignoredViewControllers addObjectsFromArray:controllers];
|
|
}
|
|
}
|
|
|
|
+ (void)ignoreViewType:(nonnull Class)aClass withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
if ([teSDK hasDisabled]) {
|
|
return;
|
|
}
|
|
@synchronized (teSDK.ignoredViewTypeList) {
|
|
[teSDK.ignoredViewTypeList addObject:aClass];
|
|
}
|
|
}
|
|
|
|
+ (void)setAutoTrackProperties:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
#if TARGET_OS_IOS
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
if ([teSDK hasDisabled]) {
|
|
return;
|
|
}
|
|
if (properties == nil) {
|
|
return;
|
|
}
|
|
@synchronized (teSDK.autoTrackSuperProperty) {
|
|
[teSDK.autoTrackSuperProperty registerSuperProperties:[properties copy] withType:eventType];
|
|
}
|
|
#endif
|
|
}
|
|
|
|
+ (void)innerEnableAutoTrack:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties callback:(NSDictionary *(^ _Nullable)(TDAutoTrackEventType eventType, NSDictionary *properties))callback withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos){
|
|
#if TARGET_OS_IOS
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
|
|
if (teSDK.autoTrackSuperProperty == nil) {
|
|
teSDK.autoTrackSuperProperty = [[TDAutoTrackSuperProperty alloc] init];
|
|
}
|
|
[teSDK.autoTrackSuperProperty registerSuperProperties:properties withType:eventType];
|
|
[teSDK.autoTrackSuperProperty registerDynamicSuperProperties:callback];
|
|
|
|
NSString *instanceToken = [teSDK.config innerGetMapInstanceToken];
|
|
[[TDAutoTrackManager sharedManager] trackWithAppid:instanceToken withOption:eventType];
|
|
#endif
|
|
}
|
|
|
|
+ (void)setAutoTrackDynamicProperties:(NSDictionary<NSString *,id> * _Nonnull (^)(void))dynamicSuperProperties withAppId:(NSString *)appId {
|
|
#if TARGET_OS_IOS
|
|
ThinkingAnalyticsSDK *teSDK = [ThinkingAnalyticsSDK instanceWithAppid:appId];
|
|
if ([teSDK hasDisabled]) {
|
|
return;
|
|
}
|
|
@synchronized (teSDK.autoTrackSuperProperty) {
|
|
[teSDK.autoTrackSuperProperty registerAutoTrackDynamicProperties:dynamicSuperProperties];
|
|
}
|
|
#endif
|
|
}
|
|
|
|
//MARK: -
|
|
|
|
@end
|