6

My app has just been rejected with the following message:

PLA 3.3.12

We found that 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 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."

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support.

If your app is serving ads, please:

  • Ensure that you have tested your app on a device, not just the simulator, and that you have removed all previous versions of your app prior to testing

  • Provide us the steps to locate ads in your app

If your app does not serve ads, please check your code - including any third-party libraries - to remove any instances of:

class: ASIdentifierManager selector: advertisingIdentifier framework: AdSupport.framework

If you are planning to incorporate ads in a future version, please remove the Advertising Identifier from your app until you have included ad functionality.

To help locate the Advertising Identifier, use the “nm” tool. For information on the “nm” tool, please see the nm man page.

If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool lists the methods that the library calls, and "otool -ov" will list the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides.

My app uses only iAd, no other frameworks for advertising. I tried to locate the problem, and here is what I found:

  1. In the build setting, I saw the AdSupport framework: enter image description here I might have included it due to following some tutorial somewhere. Is this the problem? Will my iAd still work correctly if I remove the AdSupport.framework?

  2. Using command line, I cd to the root folder of my project and

grep -r advertisingIdentifier .

I got the following result:

./Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m: result = [[manager advertisingIdentifier] UUIDString];

Here is the detailed code in FBSDKAppEventUtility.m (FacebookSDK 4.1.0 - I read some post about problem with FacebookSDK regarding advertising Identifier in FBSDK 3.1. I cannot believe that the problem still exist in FBSDK 4.1.0!):

+ (NSString *)advertiserID
{
  NSString *result = nil;

  Class ASIdentifierManagerClass = fbsdkdfl_ASIdentifierManagerClass();
  if ([ASIdentifierManagerClass class]) {
    ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
    result = [[manager advertisingIdentifier] UUIDString];
  }

  return result;
}

I used pod to install the Facebook SDK in my app, and as you can see, the code include something related to advertisingIdentifier.

I also see in FBSDKAppEventUtility.m:

#import <AdSupport/AdSupport.h>

and several existences of ASIdentifierManagerClass in other functions in FBSDKAppEventUtility.m

Will it also cause my to be rejected? Has anyone been rejected due to using advertising Identifier by using FBSDKCoreKit?

thomasdao
  • 972
  • 12
  • 26
  • 1
    You could resubmit your application and add that the `FB SDK` needs the `AdSupport.framework` to function. I'm not sure if this will successfully make your application pass the review process but it may help. – Daniel Storm Jun 01 '15 at 13:11
  • Any update on that? Was the App approved after mentioning that the Facebook framework needs AdSupport? – cLar Nov 03 '15 at 16:13
  • @thomasdao was the app approved after mentioning this to Apple? My app is using FBSDK for past 2.5yrs and suddenly today Apple rejected it, which is crazy, so wanted to know how to go forward with it – anoop4real Dec 16 '15 at 08:19
  • @anoop4real yes it was approved. My app is free and only use iAd to display ad. I answered "No" for questions as to whether I use IDFA which were asked before submitting app. In the comment sent to Apple review team, I explain which framework I use, then they approved my app. – thomasdao Dec 16 '15 at 08:24
  • @thomasdao My app uses ASIdentifierManager via FBSDK only to track FBSDKAppEvents and conversion and my app is not showing any Ads. it was approved by Apple for the past 2.5yrs and today morning they rejected it Ah!!!...so I kind of wondering what to do here. I was thinking of what to write back to Apple – anoop4real Dec 16 '15 at 08:47

1 Answers1

3

As Daniel said you will need to resubmit to Apple for review and mention that the Facebook SDK requires AdSupport.framework when using App Events or when serving ads using the Facebook Audience Network SDK. This does not automatically guarantee approval.

The Facebook iOS SDK documentation has a Troubleshooting Guide which covers which parts of the SDK require AdSupport.framework.

I also believe that there is a section in the review submission process which asks you if you use IDFA, if you are using App Events (this include [FBSDKAppEvents activateApp]) then I believe you should highlight this in your submission.

The1Fitz
  • 662
  • 4
  • 8