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

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