improper advertising identifier [IDFA] usage

IosApp Store-Connect

Ios Problem Overview


I'm submitting ios game to app store.

xcode gives me error Improper advertising identifier [IDFA] usage. Your app contains the Advertising Identifier [IDFA] API but you have not indicated its usage on the Prepare for Upload page in iTunes Connect.

How to fix this? Any help appritiated.

Ios Solutions


Solution 1 - Ios

Everything has come to its usual state now. Simply upload your binary as you've been doing this while, and broadly classify IDFA in two categories:

  1. publisher: You use third-party ad-networks library to display ad. Choose the 1st option in IDFA -> "Serve advertisements within the app". You're a publisher since you show ads, but do not perform advertising for your own app.

  2. Advertiser: You use third-party libraries to track conversions for your app, as well as track 'goals' in your app. You directly do not show ads in your app. Choose the 2nd & 3rd option in IDFA -> "Attribute this app installation to a previously served ad". AND "Attribute an action taken within this app to a previously served advertisement".

  3. Mixed: You track conversions for your app, as well as display ads in your app. Choose all three options.

Solution 2 - Ios

You can upload any application with the same bundleID. When you've done uploading, you can reject binary and next time you change status to Ready to Upload, don't forget check [IDFA].

Solution 3 - Ios

You have to check "Yes" on the Prepare for Upload page: enter image description here But when you checked "No", you are stuck with this new version on iTunes Connect and cannot reenter the Prepare for Upload page or delete your new version.

At the moment it seems like your app is locked forever on the old version when this error occurs. Apple has to fix this!

Solution 4 - Ios

  1. Remove Google Analytics Library folder from your reference (google analytics uses [IDFA])
  2. Remove AdSupport Framework from your reference
  3. Remove iADSupport Framework from your reference
  4. try upload again

This worked for me right now.

by the way, enabling this option does not help us

Solution 5 - Ios

According to this article, which profiled a publisher who shared what Apple told them after receiving the same issue.

Apple advised the publisher to check code, including third-party libraries, to remove any incidences of the following:

> class: ASIdentifierManager > > selector: advertisingIdentifier > > framework: AdSupport.framework

I had the same problem, and searched for the above instances... i found a method with them in the Playhaven api, and after i commented that section out i didn't get the error again.

An update of the Playhaven api may have fixed this as well, but i'm not sure... i just opted for the 'quick fix.'.

Solution 6 - Ios

You just need to upload any app with the same bundle id and no ad support then reject the binary and check the new ad options yes. Then you can submit your app without a problem.

Solution 7 - Ios

I was also facing this warning while validating app with iTunes connectenter image description here and I was using FacebookSDK.framework which was downloaded from Ref Link. In FBUtility.m I have commented below code and removed Adsupport.Frmaework

+ (NSString *)advertiserID {
NSString *advertiserID = nil;
Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
if ([ASIdentifierManagerClass class]) {
    ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
    advertiserID = [[manager advertisingIdentifier] UUIDString];
}
return advertiserID;

} to

+ (NSString *)advertiserID {

return @"";

}

and changed another function in same class FBUtility.m

+ (FBAdvertisingTrackingStatus)advertisingTrackingStatus {

if ([FBSettings restrictedTreatment] == FBRestrictedTreatmentYES) {
    return AdvertisingTrackingDisallowed;
}
FBAdvertisingTrackingStatus status = AdvertisingTrackingUnspecified;
Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
if ([ASIdentifierManagerClass class]) {
    ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
    if (manager) {
        status = [manager isAdvertisingTrackingEnabled] ? AdvertisingTrackingAllowed : AdvertisingTrackingDisallowed;
    }
}
return status;

}

to

+ (FBAdvertisingTrackingStatus)advertisingTrackingStatus {

FBAdvertisingTrackingStatus status =AdvertisingTrackingUnspecified;
return status;

}

I have removed that FacebookSDK.framework and downloaded Facebook framework from Ref Link . I have resolve this warning by using this way and I have uploaded app successfully.

And also see this stack question Link to avoid rejection, find and remove unwanted framework.

Solution 8 - Ios

The iTunesConnect site changed the workflow for when you handle this warning. You will need to upload your app with this warning (at least with XCode 5.1.1).

In iTunesConnect, you now select your build after uploading from XCode. After selecting the build, then clicking "Submit for Review", you will get the prompts you previously set when preparing for upload (specifically - "Advertising Identifier").

Solution 9 - Ios

If you select "Yes" for the IDFA in the iTC upload page, be sure to have your AdBlocker switched off in Safari preferences, else you will get the error "You must select how your App uses the IDFA", when you click "Continue", but giving you no option to select that usage.

If your adblocker is switched off and everything works as it should, the HTML page rolls out to show options to select, at the bottom.

Solution 10 - Ios

i have the same problem.

Our app just use googleAnalytics/googleMaps libraries and TestFlight library. I'm stuck with a new version on itunes connect with NO flag on IDFA.

We cant remove this libraries because the app will not compile anymore right.

What's the solution? Just create an empty app with the same bundle id and version id, upload to itunes connect and then stop the publishing? Really?

Thanks :)

Solution 11 - Ios

If the issue is only related to google analytics SDK for iOS, you can upgrade it: the new version remove dependencies from AdSupport Framework, and hence from IDFA.

Solution 12 - Ios

As a complete detailed answer to what @iDurocher said:

  1. Make sure you have at least one active prerelease build after uploading your binary(choose prerelease then make sure that there is one clickable build, note that it takes time for processing maybe half an hour).
  2. Get back to the Versions screen and select Build to add the uploaded build.
  3. Press Submit for review now then you will be asked about the IDFA.

Solution 13 - Ios

Facebook iOS SDK also uses IDFA. As I understand, one should use IDFA only for advertising purposes, according to info in iTunes Connect. I removed it, and it's ok now.

Solution 14 - Ios

I had the same problem and I resolved uploading the app, despite the IDFA warning. Then, the IPA is rejected and you can start over, with "Prepare for Upload" page enabled. Make sure to check "Yes" in the section "Advertising Identifier" section of the page "Prepare for Upload".

Solution 15 - Ios

I had the same problem with Admob (GoogleMobileAds) SDK while validating the app with Xcode.

My solution was:

  1. Distribute the app with Xcode to iTunes Connect

  2. Turn off Adblock in Safari for the iTunes Connect page

  3. The App was declared as invalid because of improper IDFA usage in iTunes Connect

  4. I've got the "Prepare for Upload" Page again

  5. I enabled the Advertising Identifier Usage on this page, et voila

Solution 16 - Ios

-Reject the binary.

-Upload binary again.

-Check the option “Does this app uses the advertising identifier(IDFA)”

and you are done.

Solution 17 - Ios

You need to modify the code on MixPanel.m If you are using it.

 - (NSString *)defaultDistinctId
{
    NSString *distinctId = nil;
    if (NSClassFromString(@"ASIdentifierManager")) {
        distinctId = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
    }
    if (!distinctId) {
        NSLog(@"%@ error getting ifa: falling back to uuid", self);
        distinctId = [[NSUUID UUID] UUIDString];
    }
    if (!distinctId) {
        NSLog(@"%@ error getting uuid: no default distinct id could be generated", self);
    }
    return distinctId;

}

to

- (NSString *)defaultDistinctId
{
       return @"";

}

and Comment below lines on collectAutomaticProperties ,collectAutomaticProperties function

//    if (NSClassFromString(@"ASIdentifierManager")) {
//        [p setValue:[[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString] forKey:@"$ios_ifa"];
//    }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsssssView Question on Stackoverflow
Solution 1 - IosrishabhView Answer on Stackoverflow
Solution 2 - IosNhong SuaView Answer on Stackoverflow
Solution 3 - IosMarkoView Answer on Stackoverflow
Solution 4 - IosDeveloBärView Answer on Stackoverflow
Solution 5 - Iosuser3518300View Answer on Stackoverflow
Solution 6 - IosXIIIView Answer on Stackoverflow
Solution 7 - IosASHISHTView Answer on Stackoverflow
Solution 8 - IosiDurocherView Answer on Stackoverflow
Solution 9 - IosRickJansenView Answer on Stackoverflow
Solution 10 - IosMatteView Answer on Stackoverflow
Solution 11 - IosPiXyView Answer on Stackoverflow
Solution 12 - IosAlaa EldinView Answer on Stackoverflow
Solution 13 - IosDenis KutlubaevView Answer on Stackoverflow
Solution 14 - IosfferracioliView Answer on Stackoverflow
Solution 15 - IosseinfeldView Answer on Stackoverflow
Solution 16 - IosA_ThorneView Answer on Stackoverflow
Solution 17 - IosDhanas ManianView Answer on Stackoverflow