iosidfa

A dynamic way of checking if IDFA is available


I'm working on a iOS SDK that other apps will integrate. If the application where my code is running is linked against the AdSupport.framework I would like to use the IDFA for install attribution. Otherwise not.

When I use the following code ,will Apple reject the application?

+ (NSString *)appleIDFA {  
    NSString *idfa = nil;  
    Class ASIdentifierManagerClass = NSClassFromString(@"ASIdentifierManager");  

    if (ASIdentifierManagerClass) { 
        SEL sharedManagerSelector = NSSelectorFromString(@"sharedManager");  
        id sharedManager = ((id (*)(id, SEL))[ASIdentifierManagerClass methodForSelector:sharedManagerSelector])(ASIdentifierManagerClass, sharedManagerSelector);  
        SEL advertisingIdentifierSelector = NSSelectorFromString(@"advertisingIdentifier");  
        NSUUID *advertisingIdentifier = ((NSUUID* (*)(id, SEL))[sharedManager methodForSelector:advertisingIdentifierSelector])(sharedManager, advertisingIdentifierSelector);  
        idfa = [advertisingIdentifier UUIDString];  
    }  
    return idfa;  
}

Solution

  • I ended up using those solution and did not have problems with it.