I am trying to implement Apple’s mandatory AppTrackingTransparency but I have gotten stuck without a successfully prompt.
Using Unity Ads’ IOS configuration guide, I have added NSUserTrackingDescription to my app’s plist file with a reasonable string. However, I cannot figure the how and where to ask Unity to call Apple’s requestTrackingAuthorization. The Unity documentation simply “recommends implementing a custom permission flow.”
Can anyone provide an example of a custom permission flow for tracking transparency? I would rather not go with the Balaso’s unity store plugin because I’d like to be able to do this important step myself. The app will require localized permission requests.
(Wouldn’t it be fab if Unity Analytics and Ads automatically made the prompt if the NSUserTrackingDescription key was found in the plist file?)
I completely removed Unity Analytics from my paid app making it “non-tracking”. Temporary solution until I start selling in-app products.
My monitoized-by-ads app using Unity Ads is dead in the water after being rejected by Apple for not implementing transparency.
I have considered the 3rd party ATT solutions on the Asset store, but it is not clear to me how they impact Unity Ads or if Unity Ads will respect the user’s choices where it has control of such data.
com.unity.ads.ios-support is still “preview only” though I am testing it now. The “feels” here are not good due to stability and maintainability concerns.
As the ATT process will likely change with IOS versions, I’d really like a Unity approved and maintained solution. (Hoping it exists and I have just missed it!)
I would love to know how other developers are handling this! (Thanks in advance!)
Sorry to hear that you had all this trouble.
I’m in the same boat, can’t get Unity Ads to send the prompt.
And the documentation stinks, there’s a lot of old and worthless information.
I’ll try a little more, otherwise will look for an alternative route.
Update: I have a version working with com.unity.ads.ios-support version 0.2.0-preview.3 (Released April 24, 2021) . Now the terrible choice… Go prod with preview code or continue delaying release?
Update: There is an update today for com.unityads.ios-support / iOS 14 Advertising Support (May 5, 2021) to version 1.0.0 not preview. I am giving this a test now. At first glance it does not look like any changes are needed from 0.2.0-preview.3
com.unityads.ios-support / iOS 14 Advertising Support 1.0.0 seems to be working fine except a build problem where UnityMonetization.h could not be found by xcode. Cleaning the xcode project fixed it so I’ll put a coincidence label on it.
It seems to work fine. Waiting for the result of Apple’s review with fingers crossed.
Good to hear. Did you decide to just show the prompt on Awake() of your game?
Or do you wait until the user played it, and then show them some custom information first? I feel that may improve the consent % rate. See this post here for some examples I posted.
My game has a loading screen that prepares game assets on game start. The prompt is presented there before Advertisements.Initialize() is called. The built in explanation prompt using NSUserTrackingUsageDescription works well in my case and the user experience familiar.
I will review the order of the call when I put Analytics/IAP in the paid version as Analytics doesn’t have a user callable init (that I know of!) I may add an appeal screen prior to showing the prompt at that time.
Unless there is some in game consequence, I suspect that users will follow their own natural privacy defaults regardless of my appeal. Thanks for your help!
Yeah that makes sense, it seems to be the easiest approach to this.
I think the consent % ratio may be better if the user already played 1 or 2 round of your game though, that’s why I was thinking to move it further back. I did not test the difference yet in consent %.
That’s a good idea to give the user a few rounds before starting Advertisement. Now if I can find a way to hold back Analytics from starting data collection too… a note for the kanban board.
Do you know if Apple cares about that? I thought this ATT change was to prevent apps from accessing the IDFA identifier?
If the user does not consent then when you try to Get() that ID it will return 0000-0000-0000-0000 etc
So it seems sending analytics is fine, as you are unable to get the IDFA anyway until they consent.
I think you are right that Analytics will function with a zero code, however my paid app (no Ads but Unity Analytics) was initially rejected by Apple for not using ATT. I had used the information published for Analytics in the privacy survey. Unity does mark analytics data as linked to user.
Yeah I think you are correct. I believe the way the reviewer checks is from your privacy survey (see if tracking is used). If so, he will check if you have the dialog configured in InfoPlist and also do a quick test in your game to see if the prompt is working.
Can’t really think of any other way they can enforce it other than some static analysis on your code, but it would be too easy to get around that.
So the only way is for them to lockdown the “GetIDFA()” method and then just ask you to implement the ATT prompt.