176 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			6.2 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, TDThirdPartyType) {
 | |
|     TDThirdPartyTypeNone               = 0,
 | |
|     TDThirdPartyTypeAppsFlyer          = 1 << 0,
 | |
|     TDThirdPartyTypeIronSource         = 1 << 1,
 | |
|     TDThirdPartyTypeAdjust             = 1 << 2,
 | |
|     TDThirdPartyTypeBranch             = 1 << 3,
 | |
|     TDThirdPartyTypeTopOn              = 1 << 4,
 | |
|     TDThirdPartyTypeTracking           = 1 << 5,
 | |
|     TDThirdPartyTypeTradPlus           = 1 << 6,
 | |
|     TDThirdPartyTypeAppLovin           = 1 << 7,
 | |
|     TDThirdPartyTypeKochava            = 1 << 8,
 | |
|     TDThirdPartyTypeTalkingData        = 1 << 9,
 | |
|     TDThirdPartyTypeFirebase           = 1 << 10,
 | |
| };
 | |
| 
 | |
| static NSMutableDictionary *_thirdPartyManagerMap;
 | |
| 
 | |
| static NSString * const KEY_THIRD_PARTY_CLASS_NAME = @"libClass";
 | |
| static NSString * const KEY_TA_PLUGIN_CLASS_NAME = @"taThirdClass";
 | |
| static NSString * const KEY_ERROR_MESSAGE = @"errorMes";
 | |
| 
 | |
| 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 *)type instance:(id<TAThinkingTrackProtocol>)instance property:(NSDictionary *)property
 | |
| {
 | |
|     NSArray<NSDictionary *> *thirdPartyList = [self _getThridInfoWithType:type];
 | |
|     
 | |
|     for (NSInteger i = 0; i < thirdPartyList.count; i++) {
 | |
|         NSDictionary *info = thirdPartyList[i];
 | |
|         
 | |
|         NSString *libClass = info[KEY_THIRD_PARTY_CLASS_NAME];
 | |
|         NSString *taThirdClass = info[KEY_TA_PLUGIN_CLASS_NAME];
 | |
|         NSString *errorMes = info[KEY_ERROR_MESSAGE];
 | |
|         
 | |
|         if (!NSClassFromString(libClass)) {
 | |
|             NSLog(@"[ThinkingData][Error] %@", 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(@"[ThinkingData][Info] %@ , SyncThirdData Success", NSClassFromString(libClass));
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (NSArray<NSDictionary *> *)_getThridInfoWithType:(NSNumber *)type {
 | |
|     NSInteger typeNum = type.integerValue;
 | |
|     
 | |
|     NSMutableArray<NSDictionary *> *mutableArray = [NSMutableArray array];
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeAppsFlyer) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"AppsFlyerLib",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME: @"TAAppsFlyerSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"AppsFlyer Data synchronization exception: not installed AppsFlyer SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeIronSource) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"IronSource",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAIronSourceSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"IronSource Data synchronization exception: not installed IronSource SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeAdjust) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"Adjust",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAAdjustSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"Adjust Data synchronization exception: not installed Adjust SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeBranch) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"Branch",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TABranchSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"Branch Data synchronization exception: not installed Branch SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeTopOn) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"ATAPI",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TATopOnSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"TopOn Data synchronization exception: not installed TopOn SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeTracking) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"Tracking",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAReYunSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"ReYun Data synchronization exception:  Data synchronization exception: not installed SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeTradPlus) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"TradPlus",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TATradPlusSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"TradPlus Data synchronization exception: not installed TradPlus SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeAppLovin) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"ALSdk",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAAppLovinSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"AppLovin Data synchronization exception: not installed AppLovin SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeKochava) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"KVATracker",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAKochavaSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"Kochava Data synchronization exception: not installed Kochava SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     if (typeNum & TDThirdPartyTypeFirebase) {
 | |
|         [mutableArray addObject:@{
 | |
|             KEY_THIRD_PARTY_CLASS_NAME: @"FIRAnalytics",
 | |
|             KEY_TA_PLUGIN_CLASS_NAME:@"TAFirebaseSyncData",
 | |
|             KEY_ERROR_MESSAGE: @"FIREBASE Data synchronization exception: not installed FIRAnalytics SDK"
 | |
|         }];
 | |
|     }
 | |
|     
 | |
|     return [mutableArray copy];
 | |
| }
 | |
| 
 | |
| @end
 |