App rejected because Unity Ad's own data collection permission request violates ATT guidelines.

How can I disable the permission request by Unity Ads to collect data?
It’s violating Apple’s new App Tracking Transparency guidelines by repeating the same question that was already asked in the ATT prompt. And if I remove Unity’s own permission request, will Unity Ads detect whether or not the user’s accepted or denied the ATT request (IDFA zeros or not)?

More details:

Our game has just been rejected on the ground of violating ATT guidelines because “A message asks users to reconsider their decision after they deny permission.” And the screenshot attached by Apple to highlight the problematic part is a screenshot showing the permission request by Unity’s Advertisement package to collect user data.

Here is the full Apple feedback below and I’ve attached the screenshot by the Apple Reviewer showing the problematic permission request by Unity Ads.


Unity Ads (or any other network) doesn’t show ATT popup. What you see there is the GDPR popup, that is mandatory to show for EU users.

But I understand that it should not be shown if you have previously shown the ATT popup and the user has denied it.

Take a look at this:
https://unityads.unity3d.com/help/resources/ios14-publisher-guide

Make sure you’re using Unity Ads 3.5.1 or higher.

What you could do is don’t initialize unity ads until you have shown the ATT popup, and wait until the user clicks on it.

After that you initialize Unity Ads, and unity ads should take into account the user choice. If they don’t have access to the IDFA they probably won’t show the GDPR popup.

But if they do (I’m not sure because I use admob mediation), what you have to do is pass the GDPR consent to Unity Ads before initializing, so they don’t show that popup ever. I do that in my games and mediation. I show my custom dialog and pass the consent to them.

You can see here how to do it (first bit of code)
https://unityads.unity3d.com/help/legal/data-privacy-and-consent

So if the user has denied the tracking, you just set the consent to false before initializing unity ads and that popup will not be shown.

3 Likes

@IvyKun Thank you for the reply, that’s very helpful. I’m going to try and see if I can pass the ATT response to the Unity GDPR request to avoid it showing. I’ll report my findings back here.

And yes I’m already initializing Unity Ads AFTER the ATT pop-up. It doesn’t take ATT response into account. Even if user denies ATT, Unity will show their dialogue again which comes off as urging / pressuring the user to reconsider their decision - the way Apple phrased it.

Unity should hopefully realize that the GDPR pop-up is now redundant and since Apple started to reject apps they should add an easy to check / uncheck option in the Player / Other settings or just build some solution that automatically catches the ATT responses.

Anyway, I’ll keep you posted with the consent flag solution you suggested, it sounds very simple too.

Yeah it’s just 3 lines of code before initializing unity ads, that should be enough :wink:

1 Like

@IvyKun I can confirm that after adding this code, Unity stopped showing the redundant GDPR consent window and our game’s got accepted by Apple. Thank you again!

3 Likes

Niiiice!

Do you show your ATT pop up immediately on first run of the game?

I was wondering if it’s acceptable to wait until player finishes a game or something to increase the consent rate.
Probably add a custom dialog too explain the tracking uses before prompting the user with the native ATT popup.

You could do that but I would not worry too much (unless you are doing UA and every percent matters to you). I was also very skeptical about upcoming ATT and zeroed IDFA, but from my stats (2K installs per day, 5K DAU):
40% of DAU have zeroed IDFA (denied tracking)
zeroed IDFA has around 10-15% lower ARPU than non-zeroed IDFA
Overall that is around a 7% drop due to the new ATT, I was expecting more like a 25% drop. As more people migrate to iOS14 this 7% will increase to 10-15% but I’m sure that till that time ad networks will figure out some way to “fix” zeroed IDFA issue.

2 Likes

No this wouldn’t be allowed. First, Apple rejects apps that show any dialogue before or after the ATT that would try to convince people to opt in. They call it 'urging or manipulating user. Second, Apple also makes it clear that the ATT has to appear before any attribution tracking starts. At the moment as I know most SDKs (GameAnalytics, Facebook SDK, Unity Analytics) would immediately send the attribution data back to attribute the install as soon as you initialize them (or maybe even before, Im not sure). So I think right now you have to show the ATT window on your app launch screen before anything else. I couldn’t find that info now so I may be wrong about this one. But you’re definitely not allowed to collect data before the ATT is shown. The recommended approach is to show the ATT on a screen with a nice image showing some of your game in the background rather than just a solid color, they say those prompts got better consent rates. Also, prompts with max 12-14 words in the customizable message got better results than very long texts.

It’s better to show it at the beginning so when you load your first ads, they will use IDFA if the user has opted in. Also is what everyone it’s doing.

About adding a custom dialog it could improve opt-in rates, you can do that and apple allows it.
I have it and had no problem, look at what instagram, facebook, tiktok have written on their custom dialogs.

Apple allows it as long as it’s explanatory and not trying to force the user to give consent. So you could write something like hey, give us consent so we can show personalized ads to you, or you will help maintaining this app free, etc. But you cannot say something like give us consent and you will get some extra coins or you will see less ads etc, then is when apple could reject it.

I’ve found a couple of articles and forum discussions arguing that the ATT consent cannot be accepted as a consent for the GDPR so it would be illegal to hide the GDPR window and only show ATT. This article suggests one should do the other way around, hide the ATT prompt and show the GDPR prompt only.
“Apple have started rejecting apps from being submitted to the AppStore that contain both the ATT dialog and a GDPR dialog. As we cannot convince Apple that GDPR is legally required, we need to stop the ATT dialog from being shown.”

I find this very confusing because I didn’t think Apple would accept the GDPR pop up as a replacement but I may be wrong. But if this is correct, everyone already using GDPR dialogues should somehow detect if the user is in the EU and remove ATT dialogues for those users. Any thoughts?

1 Like

@IvyKun Good point, upon further reading ( https://github.com/Gimu/admob_consent/issues/6 ) I see that people who reported rejection due to "your app displays its own permission request prompt to the user before presenting the iOS permission request." managed to get their apps accepted eventually by re-phrasing their custom dialogue not to sound like a consent window but more like an explanation (eg. changing ‘Allow’ button to ‘Ok’ etc).

It seems you are allowed to show custom dialog before. I found documentation (scroll to bottom section) from apple that even suggests you to do it for a better user experience.

Facebook example:

I did some digging and it seems the opt-in basically allows you to access a non-zeroed IDFA for the user.

The new prompt is just to get permission to access the users IDFA - even if they opt out, you can still send analytics and tracking, just wouldn’t be able to use IDFA so your tracking most likely won’t work cross-app / cross-network (at least with IDFA method)

So it seems if your flow was the following:

  • initialize game (analytics, ads, etc)

  • player plays game (finishes 1 or 2 rounds)

  • show ad (will use zeroed out IDFA)

  • player plays game

  • show ATT prompt

  • next time you show ad/analytics, will be able to use IDFA

So you may have initial data un-attributed, but after they accept, future runs of the game should be OK. The trade off being that you most likely will have higher consent rates if the player has played a few rounds (they like your game) and then you can explain the ATT to them.

2 Likes

I choose not to show the prompt on my apps with ads. It may result in lower revenue, but I doubt many users will consent to tracking anyways.

I believe if you don’t implement it they will flag you on the review process unless you remove the 3rd party ad libraries?

This is cause if you don’t show the prompt, the user does not see the setting to toggle ATT in their iOS settinsg

@xjjon Interesting stuff, thanks for the info! I’ll probably try that too.

You might be right. I’m honestly not sure how it works now since iOS 14.5 dropped. In my updates prior to its release, I was able to include the skadnetwork details without including the ATT framework. I believe having the ATT framework included or the ATT explainer text in the info.plist is how they know to check for the prompt in review. My assumption is that all apps will return a device ID of 0’s until the user accepts tracking. So not showing the prompt should have the same effect as a user selecting “don’t track.” I first got the idea of not showing the prompt when I read in another ad provider’s docs “If you decide to include App Tracking Transparency (ATT) in your app…” I think I’ll try submitting my updates without ATT, and if it is rejected, I’ll adjust and go from there.

Just an update regarding what Apple will approve.

1 - Submitted without ATT prompt integration - rejected. They allowed us to push update since it was a bug fix, but required us to add ATT or remove tracking by next version.

2 - Integrated ATT prompt with custom dialog. The custom dialog explains to users what the tracking is used for, how it personalizes the ads, and how it helps the game earn more from ads (and therefore support the devs).

This dialog shows up after the player plays 3 rounds of the game.

Apple rejected on first review. In follow up message (resolution center) explained to the review how to see the prompt (enter and exit the game 3 times (3 rounds)). APPROVED.

So it seems they are checking info.plist but also manually seeing if the prompt shows up.

3 Likes

Also dealing with this problem, thanks for the advice @IvyKun .
Just curious though @krisventure , how did u get those stats (2K installs per day, 5K DAU), that’s a lot, do u use any app store optimisation?

I think you’re referring to @studentvz 's comment. I didn’t mention my installs / DAU anywhere. Btw whether 2K installs per day is a lot or not that depends on a lot of things. For example it’s easy to get 2K installs a day if you run worldwide campaign on a daily budget of $20-$40, There’ll be thousands of users in downloading it from the cheapest countries like Iraq, India etc. You can easily achieve a cost per install of 3c-10c in those countries. Then again, advertisers will pay very little for an ad impression coming from those users and they’ll also not spend on IAPs. On the other hand 2K installs in the US is much harder to get and the return value of in-app ads and IAPs is much higher there. So it really depends.