Skip to content

Commit 17f83de

Browse files
committed
Make UIDevice additions more dynamic
1 parent 0a61308 commit 17f83de

File tree

1 file changed

+43
-4
lines changed

1 file changed

+43
-4
lines changed

AdjustIo/AIAdditions/UIDevice+AIAdditions.m

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,26 @@ @implementation UIDevice(AIAdditions)
2222

2323
- (BOOL)aiTrackingEnabled {
2424
#if !ADJUST_NO_IDFA
25-
if (NSClassFromString(@"ASIdentifierManager")) {
26-
return ASIdentifierManager.sharedManager.advertisingTrackingEnabled;
25+
NSString *className = [NSString aiJoin:@"A", @"S", @"identifier", @"manager", nil];
26+
NSString *keyManager = [NSString aiJoin:@"shared", @"manager", nil];
27+
NSString *keyEnabled = [NSString aiJoin:@"is", @"advertising", @"tracking", @"enabled", nil];
28+
29+
Class class = NSClassFromString(className);
30+
if (class) {
31+
@try {
32+
SEL selManager = NSSelectorFromString(keyManager);
33+
SEL selEnabled = NSSelectorFromString(keyEnabled);
34+
35+
#pragma clang diagnostic push
36+
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
37+
id manager = [class performSelector:selManager];
38+
BOOL enabled = (BOOL)[manager performSelector:selEnabled];
39+
#pragma clang diagnostic pop
40+
41+
return enabled;
42+
} @catch (NSException *e) {
43+
return NO;
44+
}
2745
} else
2846
#endif
2947
{
@@ -33,8 +51,29 @@ - (BOOL)aiTrackingEnabled {
3351

3452
- (NSString *)aiIdForAdvertisers {
3553
#if !ADJUST_NO_IDFA
36-
if (NSClassFromString(@"ASIdentifierManager")) {
37-
return ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString;
54+
NSString *className = [NSString aiJoin:@"A", @"S", @"identifier", @"manager", nil];
55+
NSString *keyManager = [NSString aiJoin:@"shared", @"manager", nil];
56+
NSString *keyIdentifier = [NSString aiJoin:@"advertising", @"identifier", nil];
57+
NSString *keyString = [NSString aiJoin:@"UUID", @"string", nil];
58+
59+
Class class = NSClassFromString(className);
60+
if (class) {
61+
@try {
62+
SEL selManager = NSSelectorFromString(keyManager);
63+
SEL selIdentifier = NSSelectorFromString(keyIdentifier);
64+
SEL selString = NSSelectorFromString(keyString);
65+
66+
#pragma clang diagnostic push
67+
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
68+
id manager = [class performSelector:selManager];
69+
id identifier = [manager performSelector:selIdentifier];
70+
NSString *string = [identifier performSelector:selString];
71+
#pragma clang diagnostic pop
72+
73+
return string;
74+
} @catch (NSException *e) {
75+
return @"";
76+
}
3877
} else
3978
#endif
4079
{

0 commit comments

Comments
 (0)