Improper advertising identifier [IDFA] usage (Limi

2019-03-30 06:12发布

问题:

I'm submitting an ios game update to the app store.

xcode shows the following error: "Improper advertising identifier [IDFA] usage. Your app contains the Advertising Identifier [IDFA] API but your app is not respecting the Limit Ad Tracking setting in iOS."

I haven't changed anything regearding my ad settings and there were no problems with the last version of my app.

I have been trying to find a workaround for the last 20 hours and I am starting to become insane. What do I have to change and how? Please help me!

回答1:

I had the same problem and was able to solve it by removing AdMob ads and leaving only iAds. I know that this isn't a perfect solution but afterwards you should at least be able to upload your app.



回答2:

I had a similar error in an update to an app. I wasn't using any ads but do have Facebook integration (which needs the AdSupport framework). I believe, after searching the net, that Facebook uses the advertising ID for its own analysis purposes so, even though I'm not including ads in my app, the validation and upload processes through xCode were failing with the error "Your app contains the Advertising Identifier [IDFA] API..."

I searched and found that I needed to download the Facebook SDK source code, update the FBUtility.m to remove the references to the advertisingID but, in fact, I simply needed to:

1) download the source code for the latest SDK, which I did from here: https://github.com/facebook/facebook-ios-sdk (I downloaded the zip file from github to my documents folder)

2) build the framework - open the terminal. Use cd documents at the command prompt, then use this command: sudo scripts/build_framework.sh, which will run the build_framework.sh script that is in the scripts subfolder within the downloaded Facebook SDK folder

3) Remove the old FacebookSDK.framework from your Xcode project and add the new one (in my case, I navigated to documents/facebook-ios-sdk/build & choose the FacebookSDK.framework folder

4) Archive the project and it should (it was in my case) be good to upload

Hope that helps someone along the way - I've been at this for days!!



回答3:

You can try update newest version of Admob, or check [ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled before call Admob because Apple now require apps need check this settings in user devices.



回答4:

I ran into the same problem. TapJoy was the culprit for me. I removed their SDK and the app submitted without an issue.



回答5:

Apple changed their IDFA scanning procedures recently. Not only do you have to check the appropriate checkboxes after you click on the "prepare for upload", but your code (or any other third party library that you have must use IDFA by using the class directly.

Someone suggested to do this:

"you can do that by replacing direct refs to ASIdentifierManager with NSClassFromString(@"ASIdentifierManager")"

DO NOT load this class using this approach! New scanning procedure will look specifically for this and if it is found instead of direct references - Apple seems to assume that there is some strange usage of the tracking identifier. I can't say I disagree with that decision.

It may not be easy to find exactly which library is at fault. Latest AdMob SDK for example is using the class directly and is NOT the source of a problem.

One way you can find out which library is the source of the problem is to remove AdSupport.Framework from your project and see which libraries fail to link. Those libraries are NOT the problem. See if you have other advertising libraries that do not require you to include AdSupport.Framework - those are most likely the culprit.

It sounds a bit counter intuitive, but the direct referencing is not the problem, dynamic (weak) loading of that class is.

Hope this helps someone - we were pulling our hair out until we found what was the source of the issue.



回答6:

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:

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.

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".

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