@@ -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