Appstore error: "your app is using the advertising identifier (IDFA)"

Hello everyone!

I’m having a big problem, and I appreciate if anyone can send me in the right direction.

I’m trying to upload a blueprint VR video player experiencie I made for a client to the Appstore, but I’m getting this message when trying to submit the app for approval:

“Your app is using the Advertising Identifiar (IDFA). You must either provide details about the IDFA usage or remove it from the app and submit your binary again.”

Thing is, I’m not using the IDFA, or any other mobile plugin like analytics, or googlevr / gearvr. I’ve tried changing several packaging options but still getting the same message

Any ideas on how I may proceed?

Thanks!

Was there ever any resolution found for this?

Hey Ryan! No resolution, I’m guessing it’s some new feature that been included in 4.17 (or 4.16), because I tried uploading a clean project from 4.17, and got the same message. But with a 4.15 clean project, it was uploaded successfuly.

I had to migrate the whole thing back to 4.15 and redo the blueprints, etc.

I tried disabling all of the online subsytem plugins and a whole bunch of other stuff, but nothing worked.

Hey Ryan! No resolution, I’m guessing it’s some new feature that been included in 4.17 (or 4.16), because I tried uploading a clean project from 4.17, and got the same message. But with a 4.15 clean project, it was uploaded successfuly.

I had to migrate the whole thing back to 4.15 and redo the blueprints, etc.

I tried disabling all of the online subsytem plugins and a whole bunch of other stuff, but nothing worked.

Did you find a way, to remove the IDFA. I also don’t use advertising identifier, but it still shows in iTunes connect.

Hey folks! If you’re using source distribution of the engine from github, here’s a quick fix that worked for me (on UE4.17):

  1. Locate the file Engine/Source/Runtime/Core/Private/IOS/IOSPlatformMisc.cpp
  2. In this file comment out (or #if#endif, or delete) the following code:

(lines 39-41)

#if !PLATFORM_TVOS
#include <AdSupport/ASIdentifierManager.h> 
#endif

and

(lines 791-799)

#if !PLATFORM_TVOS
	// Check to see if this OS has this function
	if ([[ASIdentifierManager sharedManager] respondsToSelector:@selector(advertisingIdentifier)])
	{
		NSString* IdfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
		FString IDFA(IdfaString);
		return IDFA;
	}
#endif

3 . Rebuild the engine, repackage your project, reupload. For me iTunes Connect stopped complaining about IDFA after these steps.

The code above references the ASIdentifierManager API and it looks like iTunes Connect somehow detects the API reference in the binary even if you are not using any related functionality in your project.

Hi!

I had tried the above procedure several times but got no luck. After removing the codes from Engine/Source/Runtime/Core/Private/IOS/IOSPlatformMisc.cpp . I tried verifying the version but got no luck after uploading. I also tried to just relaunch the project and package, also got no luck.

Will appreciate your advise.

Thanks!

Apple’s API check just looks for the API in the executable and assumes it is in use. We utilize that API for unique identifiers, but you may never make the call to get the value and so aren’t using it directly

To get around this issue, in iTunes Connect when you submit, there will be a question of whether you use the advertising identifier. Mark it as Yes. You should then be able to pick a reason. I believe you can choose to pick none of the reasons if you are not actively getting that id. You will still need to select the last box which certifies you aren’t doing anything beyond the limited use (which will be the case).

Unfortunately, we can’t just provide you a build without that code as you may want to use it in a blueprint and then it won’t be there. If you have source, you can remove the code inside of the call (will need to keep the function itself, but just return 0).

-Pete

Is an example. You only need to select the very last check box (the one on the bottom).

-Pete

Choosing only the bottom option does not work, at least as of today and 4.18.3. Choosing only the bottom option (“I,[name], confirm that this app…”) leaves the “Submit” button disabled.

I am also facing the same problem and I am not displaying any ads or hsing any plugins
Can someone from Unreal update us with required steps resolve this.

Same problem (v 4.19 - only blueprints)

This method worked for me, but I also removed one additional bit of code not mentioned in the post:

in Engine/Source/Runtime/Core/Core.Build.cs

In the below block I removed the reference to “AdSupport”:

if (Target.Platform == UnrealTargetPlatform.IOS)
			{
				PublicFrameworks.AddRange(new string[] { "CoreMotion", "AdSupport" });
                AddEngineThirdPartyPrivateStaticDependencies(Target,
                    "PLCrashReporter"
                    );
			}

Had the same problem in 4.20, Luckily you can always press “no” when App Store Connect asks the question. But if you still get the red warning with the text:

“Your app is using the Advertising Identifiar (IDFA). You must either provide details about the IDFA usage or remove it from the app and submit your binary again.”

You can press “yes”, Check the first option. Then press “no” again and then submit.

That made it send it away to the review for me. Still dont know if they’ll approve it. I’ll be back when I know.
(This seems like a obvious bug tho)

It worked! (Apple pls wtf)

Did not work for me as of 4.21 I had to click yes and check a random box to submit it to the reivew process. It would be nice if there was an option to turn off IDFA in the project settings @unreal.

Yes. It worked. I found this bug accidentally. After then (in July), i made 10 updates in this way. :smiley:

4.22.3 here, launcher build
Same problem as it is not possible to select only the last option.
That is the last roadblock to submit my app for review.
Is there no other solution than compiling from source just for that?

Thanks

We were able to submit something today with the same issue by just selecting “No” again after it warned us.

As of 4.24 this is still a problem, despite a feature being added in 4.22 to allow you to manually not include IDFA. It still seems to do so in the launcher version on mac.

Are the two options still only to either build from source or the workaround in the app store submission process? Seems bizarre.