by Justin in SD
Alright, so we here at Pixtant have been rejected twice for this now, and I think I have it all figured out, so hopefully this will shed some light on the subject for you. This is obviously a big problem for a bunch of developers–even TechCrunch has written an article about it. Unfortunately, they don’t really tell you what you need to do to get around the rejection.
Anyway, here’s what the rejection looks like, which we are all too familiar with:
“We found your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines. Please check your code – including any third-party libraries – to remove any instances of:
And here’s Apple’s clause (why you got rejected):
“You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier.”
So here’s what’s going on, without the technical mumbo jumbo:
Ad networks and Analytic Services tend to use the Advertising Identifier (aka IDFA). By the way, IDFA stands for Identifier For Advertisers.
If your app displays ads, you’re good to go! Note that our apps tend to display ads and we still got rejected. So what happened? Well, the reviewer didn’t see an ad and thus assumed we didn’t have any and were using the IDFA without just cause.
So the fix: Make a note in iTunes Connect when submitting your app, telling the reviewer that you do indeed have ads and where they are located. To do this, go into your current version/View Details, go to the Contact Information section, and type it in the Review Notes section. Then your app won’t be rejected for this reason.
In a previous post, I recommended turning off ads before submitting to Apple, because sometimes you’ll get rejected for having too many ads. Oh, Apple, how I have a love/hate relationship with you. So this is all about the “Goldilocks Zone.” If you’re using the IDFA, make sure you show at least one ad, but not too many!
If you DO NOT display ads, and you got rejected (or want to avoid being rejected)…
Chances are you’re using an SDK that uses the IDFA when it’s not supposed to, or you’re using a Framework that you’re not supposed to… or your code has ad networks (Chartboost, Revmob, AppLovin, etc.) set up in the code, but you’re choosing not to show any ads. The IDFA is only supposed to be used for ads, remember?
Flurry is an example of an SDK that used the IDFA when it wasn’t supposed to. But the good news is that as of today, they’ve fixed the problem. You just need to update your SDK. Also, here’s a list of SDKs that are affected (and working to fix the issue).
If you’re in this boat, you have a couple of options:
- Take out the SDK and/or Framework that is causing the issue, or remove the actual Advertising Identifier (might need an experienced developer)
- Wait for the SDK to fix it so they don’t use the IDFA and then update your SDK (if you don’t know how, look up some videos on YouTube. It’s pretty easy)
- Put in Ads!!
#3 is hilarious and a great solution for inexperienced developers and reskinners, especially if you fall into the group of people who bought a source code that has ad networks tied in, but you choose not to use ads. Here’s why:
You might be thinking, but I want my app to be ad free! That’s fine! Just show 1 ad at the launch of your app so the reviewer sees it and allows you to use the IDFA… then, once your app is approved, turn off the ads through the ad network’s website! Then the end user won’t see the ads and you just got away with murder. Muhahahaha.
A little sneaky, but who cares. Again, this just proves that the Apple Review process is ridiculous and doesn’t make sense.