74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| //
 | |
| //  TDAnalytics+ThirdParty.m
 | |
| //  ThinkingSDK
 | |
| //
 | |
| //  Created by 杨雄 on 2023/8/17.
 | |
| //
 | |
| 
 | |
| #import "TDAnalytics+ThirdParty.h"
 | |
| #import "ThinkingAnalyticsSDKPrivate.h"
 | |
| 
 | |
| @implementation TDAnalytics (ThirdParty)
 | |
| 
 | |
| #if TARGET_OS_IOS
 | |
| 
 | |
| + (void)enableThirdPartySharing:(TDThirdPartyType)type {
 | |
|     [self enableThirdPartySharing:type properties:@{}];
 | |
| }
 | |
| 
 | |
| + (void)enableThirdPartySharing:(TDThirdPartyType)type properties:(NSDictionary<NSString *,NSObject *> *)properties {
 | |
|     NSString *appId = [ThinkingAnalyticsSDK defaultAppId];
 | |
|     [self enableThirdPartySharing:type properties:properties withAppId:appId];
 | |
| }
 | |
| 
 | |
| + (void)enableThirdPartySharing:(TDThirdPartyType)type withAppId:(NSString *)appId {
 | |
|     [self enableThirdPartySharing:type properties:@{} withAppId:appId];
 | |
| }
 | |
| 
 | |
| + (void)enableThirdPartySharing:(TDThirdPartyType)type properties:(NSDictionary<NSString *,NSObject *> *)properties withAppId:(NSString *)appId {
 | |
|     ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK instanceWithAppid:appId];
 | |
|     
 | |
|     if (instance != nil) {
 | |
|         Class TAThirdPartyManager = NSClassFromString(@"TAThirdPartyManager");
 | |
|         if (TAThirdPartyManager == nil) {
 | |
|             return;
 | |
|         }
 | |
|         NSObject *manager = [[TAThirdPartyManager alloc] init];
 | |
|         if (manager == nil) {
 | |
|             return;
 | |
|         }
 | |
|         
 | |
| #pragma clang diagnostic push
 | |
| #pragma clang diagnostic ignored "-Wundeclared-selector"
 | |
|         SEL action = @selector(enableThirdPartySharing:instance:property:);
 | |
| #pragma clang diagnostic pop
 | |
| 
 | |
|         NSMethodSignature *methodSig = [manager methodSignatureForSelector:action];
 | |
|         if (methodSig == nil) {
 | |
|             return;
 | |
|         }
 | |
|         
 | |
|         @try {
 | |
|             NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSig];
 | |
|             
 | |
|             NSNumber *thirdPartyTypeNumber = [NSNumber numberWithInteger:type];
 | |
|             [invocation setArgument:&thirdPartyTypeNumber atIndex:2];
 | |
|             
 | |
|             [invocation setArgument:&instance atIndex:3];
 | |
|             
 | |
|             NSDictionary *thirdPartyProperties = properties;
 | |
|             [invocation setArgument:&thirdPartyProperties atIndex:4];
 | |
| 
 | |
|             [invocation setSelector:action];
 | |
|             [invocation setTarget:manager];
 | |
|             [invocation invoke];
 | |
|         } @catch (NSException *exception) {
 | |
|             TDLogError(@"ThirdParty invocate failed!")
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| @end
 |