62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| //
 | |
| //  TAIronSourceSyncData.m
 | |
| //  ThinkingSDK
 | |
| //
 | |
| //  Created by wwango on 2022/2/16.
 | |
| //
 | |
| 
 | |
| #import "TAIronSourceSyncData.h"
 | |
| 
 | |
| @implementation TAIronSourceSyncData
 | |
| 
 | |
| #pragma clang diagnostic push
 | |
| #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
 | |
| 
 | |
| static id _td_last_IronSource_delegate;
 | |
| 
 | |
| - (void)syncThirdData:(id<TAThinkingTrackProtocol>)taInstance {
 | |
|     
 | |
|     [super syncThirdData:taInstance];
 | |
|     
 | |
|     if (self.isSwizzleMethod) return;
 | |
|     
 | |
|     Class class = NSClassFromString(@"IronSource");
 | |
|     NSString *oriSELString = @"addImpressionDataDelegate:";
 | |
|     SEL newSel = NSSelectorFromString([NSString stringWithFormat:@"td_%@", oriSELString]);
 | |
|     IMP newIMP = imp_implementationWithBlock(^(id _self, id delegate) {
 | |
|         if ([_self respondsToSelector:newSel]) {
 | |
|             [_self performSelector:newSel withObject:delegate];
 | |
|             _td_last_IronSource_delegate = delegate;
 | |
|         }
 | |
|         
 | |
|         id class1 = delegate;
 | |
|         NSString *oriSELString1 = @"impressionDataDidSucceed:";
 | |
|         SEL newSel1 = NSSelectorFromString([NSString stringWithFormat:@"td_%@", oriSELString1]);
 | |
|         IMP newIMP1 = imp_implementationWithBlock(^(id _self1, id impressionData) {
 | |
|             if ([_self1 respondsToSelector:newSel1]) {
 | |
|                 [_self1 performSelector:newSel1 withObject:impressionData];
 | |
|             }
 | |
| 
 | |
|             NSDictionary *all_data;
 | |
|             SEL sel = NSSelectorFromString(@"all_data");
 | |
|             if ([impressionData respondsToSelector:sel]) {
 | |
|                 all_data = [impressionData performSelector:sel];
 | |
|             }
 | |
|             
 | |
|             if (_td_last_IronSource_delegate == _self1) {
 | |
|                 [self.taInstance track:@"ta_ironSource_callback" properties:all_data];
 | |
|             }
 | |
|         });
 | |
|         __td_td_swizzleWithOriSELStr(class1, oriSELString1, newSel1, newIMP1);
 | |
|     });
 | |
|     
 | |
|     __td_td__swizzleWithClassMethod(class, oriSELString, newSel, newIMP);
 | |
|     
 | |
|     self.isSwizzleMethod = YES;
 | |
| }
 | |
| 
 | |
| #pragma clang diagnostic pop
 | |
| 
 | |
| @end
 | |
| 
 |