sk-client/Assets/Plugins/iOS/TAThirdParty/TAThirdPartyManager.m

169 lines
5.7 KiB
Objective-C

//
// TAThirdPartyManager.m
// ThinkingSDK
//
// Created by wwango on 2022/2/11.
//
#import "TAThirdPartyManager.h"
#import "TAAppsFlyerSyncData.h"
#import "TAIronSourceSyncData.h"
#import "TAAdjustSyncData.h"
#import "TABranchSyncData.h"
#import "TATopOnSyncData.h"
#import "TAReYunSyncData.h"
#import "TATradPlusSyncData.h"
#import "TAKochavaSyncData.h"
typedef NS_OPTIONS(NSInteger, TAInnerThirdPartyShareType) {
TAInnerThirdPartyShareTypeNONE = 0,
TAInnerThirdPartyShareTypeAPPSFLYER = 1 << 0,
TAInnerThirdPartyShareTypeIRONSOURCE = 1 << 1,
TAInnerThirdPartyShareTypeADJUST = 1 << 2,
TAInnerThirdPartyShareTypeBRANCH = 1 << 3,
TAInnerThirdPartyShareTypeTOPON = 1 << 4,
TAInnerThirdPartyShareTypeTRACKING = 1 << 5,
TAInnerThirdPartyShareTypeTRADPLUS = 1 << 6,
TAInnerThirdPartyShareTypeAPPLOVIN = 1 << 7,
TAInnerThirdPartyShareTypeKOCHAVA = 1 << 8,
TAInnerThirdPartyShareTypeTALKINGDATA = 1 << 9,
TAInnerThirdPartyShareTypeFIREBASE = 1 << 10,
};
static NSMutableDictionary *_thirdPartyManagerMap;
// Register a third-party data collection service, and when the APP starts, it will start from the data area
char * kThinkingServices_service __attribute((used, section("__DATA, ThinkingServices"))) = "{ \"TAThirdPartyProtocol\" : \"TAThirdPartyManager\"}";
@interface TAThirdPartyManager()<TAThirdPartyProtocol>
@end
@implementation TAThirdPartyManager
- (instancetype)init
{
self = [super init];
if (self) {
_thirdPartyManagerMap = [NSMutableDictionary dictionary];
}
return self;
}
- (void)enableThirdPartySharing:(NSNumber *)type instance:(id<TAThinkingTrackProtocol>)instance
{
[self enableThirdPartySharing:type instance:instance property:@{}];
}
- (void)enableThirdPartySharing:(NSNumber *)typee instance:(id<TAThinkingTrackProtocol>)instance property:(NSDictionary *)property
{
NSDictionary *info = [self _getThridInfoWithType:typee];
NSString *libClass = info[@"libClass"];
NSString *taThirdClass = info[@"taThirdClass"];
NSString *errorMes = info[@"errorMes"];
if (!NSClassFromString(libClass)) {
NSLog(@"[THINKING] %@", errorMes);
}else {
id<TAThirdPartySyncProtocol> syncData = [_thirdPartyManagerMap objectForKey:taThirdClass];
if (!syncData) {
syncData = [NSClassFromString(taThirdClass) new];
[_thirdPartyManagerMap setObject:syncData forKey:taThirdClass];
}
[syncData syncThirdData:instance property:[property copy]];
NSLog(@"[THINKING] %@ , SyncThirdData Success", NSClassFromString(libClass));
}
}
- (NSDictionary *)_getThridInfoWithType:(NSNumber *)typee {
static NSDictionary *_ta_ThridInfo;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_ta_ThridInfo = @{
@(TAInnerThirdPartyShareTypeAPPSFLYER):@{
@"libClass": @"AppsFlyerLib",
@"taThirdClass":@"TAAppsFlyerSyncData",
@"errorMes":@"AppsFlyer Data synchronization exception: not installed AppsFlyer SDK"
},
@(TAInnerThirdPartyShareTypeIRONSOURCE):@{
@"libClass": @"IronSource",
@"taThirdClass":@"TAIronSourceSyncData",
@"errorMes": @"IronSource Data synchronization exception: not installed IronSource SDK"
},
@(TAInnerThirdPartyShareTypeADJUST):@{
@"libClass": @"Adjust",
@"taThirdClass":@"TAAdjustSyncData",
@"errorMes": @"Adjust Data synchronization exception: not installed Adjust SDK"
},
@(TAInnerThirdPartyShareTypeBRANCH):@{
@"libClass": @"Branch",
@"taThirdClass":@"TABranchSyncData",
@"errorMes": @"Branch Data synchronization exception: not installed Branch SDK"
},
@(TAInnerThirdPartyShareTypeTOPON):@{
@"libClass": @"ATAPI",
@"taThirdClass":@"TATopOnSyncData",
@"errorMes": @"TopOn Data synchronization exception: not installed TopOn SDK"
},
@(TAInnerThirdPartyShareTypeTRACKING):@{
@"libClass": @"Tracking",
@"taThirdClass":@"TAReYunSyncData",
@"errorMes": @"ReYun Data synchronization exception: Data synchronization exception: not installed SDK"
},
@(TAInnerThirdPartyShareTypeTRADPLUS):@{
@"libClass": @"TradPlus",
@"taThirdClass":@"TATradPlusSyncData",
@"errorMes": @"TradPlus Data synchronization exception: not installed TradPlus SDK"
},
@(TAInnerThirdPartyShareTypeAPPLOVIN):@{
@"libClass": @"ALSdk",
@"taThirdClass":@"TAAppLovinSyncData",
@"errorMes": @"AppLovin Data synchronization exception: not installed AppLovin SDK"
},
@(TAInnerThirdPartyShareTypeKOCHAVA):@{
@"libClass": @"KVATracker",
@"taThirdClass":@"TAKochavaSyncData",
@"errorMes": @"Kochava Data synchronization exception: not installed Kochava SDK"
},
@(TAInnerThirdPartyShareTypeFIREBASE):@{
@"libClass": @"FIRAnalytics",
@"taThirdClass":@"TAFirebaseSyncData",
@"errorMes": @"FIREBASE Data synchronization exception: not installed FIRAnalytics SDK"
},
};
});
return _ta_ThridInfo[typee];
}
@end