176 lines
6.2 KiB
Mathematica
176 lines
6.2 KiB
Mathematica
|
|
//
|
||
|
|
// 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
|