14

My app got rejected for the following reason but I'm not using the advertising identifier. Used the following command

find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep advertisingIdentifier

and got "Binary file ./libGoogleAnalyticsServices.a matches" as a result.

More details on the rejection

PLA 3.3.12

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.

Specifically, section 3.3.12 of the iOS Developer Program License Agreement states:

"You and Your Applications (and any third party with whom you have contracted to serve advertising) may us 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."

Please remove the iOS Advertising Identifier from your app or add ad functionality to your app.

Jani
  • 1,400
  • 17
  • 36
  • I've just got my app approved using google analytics and I was getting the "Binary file ./libGoogleAnalyticsServices.a matches" as a result when I executed your command – jcesarmobile Jan 24 '14 at 08:29
  • Strange I have uploaded a binary without analytics and it is still pending for review. I will let you know if it gets approved without analytics. Is this an iOS 7 only app? – Jani Jan 24 '14 at 10:13
  • @jcesar our app got approved without analytics – Jani Jan 28 '14 at 09:25
  • Mine was iOS 7 only and was approved with analytics – jcesarmobile Jan 28 '14 at 09:51
  • @jcesar maybe your application already make use of the advertising identifier for other purposes other than analytics ? – Jani Jan 29 '14 at 04:43
  • No, just for analytics – jcesarmobile Jan 29 '14 at 07:24
  • 4
    I got this rejection as well, but it appears to be Flurry Binary file ./Splickit/Pods/FlurrySDK/Flurry/libFlurry_4.3.0.a matches – digidigo Jan 29 '14 at 16:58
  • @digidigo i got the same thing. I really need to fix this. is there anything i can do besides removing the flurry sdk? – horsejockey Feb 01 '14 at 06:41
  • @horsejockey make sure to file a bug report with Flurry (I already did this for GA) and try to see if you can find a later version that does not use the advertising identifier and also the unique identifier – Jani Feb 01 '14 at 10:45
  • I have upgraded to the latest Flurry (4.3.1) and removed the AdSupport.framework. Hopefully this will work. – neoneye Feb 01 '14 at 14:11
  • 2
    I tried using the latest Flurry from cocoa pods and got rejected again. I down revved flurry to the version we were using in September. This version has no mention of the ad identifier. The guys at Flurry are trying to look into it, but we are the first to hit it. – digidigo Feb 01 '14 at 19:49
  • I run that command and couldn't find anything. Neither in the source dir or the build one. Do you know how to try with `nm`, `strings` or `otool` commands? – Rivera Feb 03 '14 at 02:05
  • hey @digidigo, what version did you downgrade to? I'm gonna have folks breathing down my neck tomorrow cos mine got rejected for this reason too. – fatuous.logic Feb 03 '14 at 09:05
  • Started a separate question http://stackoverflow.com/questions/21545207/use-nm-strings-and-or-otool-to-find-which-library-is-wrongly-using-frameworks-o – Rivera Feb 04 '14 at 06:13
  • NB: the OP's search string seems to NOT work for most projects (it assumes there are no spaces in folder names and file names). I found "grep -r advertisingIdentifier" worked fine on git projects – Adam Feb 04 '14 at 11:26
  • @Neuronical Not sure of the version number. FlurryAgent.version reports 72. – digidigo Feb 04 '14 at 17:36
  • @neoneye I tried the latest Flurry and got rejected. Now that Techcrunch is reporting the issue , hopefully flurry will fix it. – digidigo Feb 04 '14 at 17:38
  • I just go this from Flurry Support: Apparently, over the weekend, Apple instituted this new policy. We're reaching out to Apple for clarification before we patch precipitously, but once we get clarification, we'll move quickly. I'll let you know when I hear something. – digidigo Feb 04 '14 at 18:13
  • 1
    @digidigo yeah I got the similar email: "Thank you for reaching out to Flurry. We have recently learned that Apple has rejected some apps it believes are using the Identifier for Advertising (IDFA) without including ad functionality. Please note that Flurry does not collect the IDFA unless an app includes the AdSupport.framework for ad functionality. We are seeking clarification with Apple and we will update our affected customers as we learn more over the next several days." – fatuous.logic Feb 05 '14 at 03:52
  • @digidigo My app has just been rejected for the 2nd time. Now I will try submitting entirely without Flurry. I have run `otool -v -s __TEXT __objc_methname NameOfYourAppBinaryHere | grep advertisingIdentifier` and I no longer have any matches. I hope Flurry will fix the issue. Likes Flurry a lot. – neoneye Feb 07 '14 at 23:23
  • @neoneye I got mine through after rolling back Flurry to version back in September. I just got an email from them saying that they have fixed the issue. Maybe you should try that? – digidigo Feb 09 '14 at 00:46
  • I don't find anything with the command. But I still get the error message "Your app is using the Advertising Identifier (IDFA)" when I was trying to submit. – Bagusflyer Nov 13 '14 at 05:37

4 Answers4

6

It rejection reason makes sense. Some libraries using advertisingIdentifier inappropriately instead of recommended ways of device identification like identifierForVendor. Not sure that newest google analytics use recommended way of identification. Try to update to latest version. In other case you will need to select some other analytics solution for tracking, for example Mixpanel had this issue resolved and works well.

Nikita Leonov
  • 5,684
  • 31
  • 37
  • AdvertisingIdentifier is one of the new recommended ways of device identification – jcesarmobile Jan 17 '14 at 19:19
  • It is recommended for advertising purposes, not for generic goals. Note: When implementing a system for serving advertisements, use the value in the advertisingIdentifier property of the ASIdentifierManager class instead of this property. Use of that property requires you to follow the guidelines set forth in the class discussion for the proper use of that identifier. For more information, see ASIdentifierManager Class Reference. – Nikita Leonov Jan 17 '14 at 21:56
  • Yeah, but it's not because it's old, identifier for vendor and advertising identifier where both included on iOS 6 to replace the UDID, so your answer is wrong – jcesarmobile Jan 17 '14 at 22:13
  • Agree. I will rephrase it into "inappropriate" This rules was not initially in place when this way to track were advertised, so some of developers started to use it not for it initial purpose. – Nikita Leonov Jan 17 '14 at 22:19
  • The application got approved without Google Analytics – Jani Jan 28 '14 at 09:25
2

Google AdMob library also uses the advertisingIdentifier and its weird that Apple rejected my app for same reason, though my app is showing advertise.

Mahmud Ahsan
  • 1,755
  • 19
  • 18
  • you found any workaround for this..? my new app got rejected too but the weird thing is that I provided update to existing game with adding ads with same admob lib but it got Approved..it's not making any sense to me.. – Saurabh Passolia Mar 06 '14 at 05:51
1

The latest Google Analytics version 3.03c addresses this issue by removing the need to link to the AdSupport.framework

Jani
  • 1,400
  • 17
  • 36
0

I have the same rejection and found out that my case GoogleConversionTrackingSDK is the library that uses the advertisingIdentifier inappropriately.

Emiel
  • 144
  • 4