due to a recent iOS app rejection, I’m thinking that we (developers) don’t have any control or information about what kind of data is Unity collecting about our users. Projects made with Unity are OUR projects, and therefore, players are OUR users.
It should be a way to decide what kind of data we want to share with Unity, and of course, a way to stop Unity collect any kind of data.
I think it’s not only an ethical issue, but also a legal one.
For example, Apple is asking us what kind of information are we collecting from our users. It’s shocking that we don’t have and honest answer about that, because we don’t really know. How it’s that even possible?
If you don’t want ANY data to be collected, enable “Disable HW Statistics” in the Player settings. In case you use other Unity Developer Services, such as Analytics, IAP, Multiplayer, or Performance Reporting, you should implement the Unity Data Privacy Plug-in asset, so that your players can manage their privacy settings.
We disabled analytics, ads and all services. We also enabled “Disable HW Statistics”. But the app still access the IDFA (ads identifier) and Apple keeps rejecting it. So, we are wondering… is really data not being collected? How can we be sure?
Also, our users are children and they cannot manage and understand privacy settings.
Thanks for your answers, Mauri. No, I don’t have other third-party assets that may use the IDFA.
It seems (I don’t know for sure, the app hasn’t been approved yet) that the problem is in the file “DeviceSettings.mm” (xCode, Under Unity->Classes). Even for a new an empty project, with nothing in it and not linked to services, this file contains this code:
// ad id can be reset during app lifetime id manager = QueryASIdentifierManager(); if (manager)
{
NSString* adid = [[manager performSelector: ** @ *(advertisingIdentifier)] UUIDString];
// Do stuff to avoid UTF8String leaks. We still leak if ADID changes, but that shouldn’t happen too often. if (![_ADIDNSString isEqualToString: adid])
{
_ADIDNSString = adid;
free((void)_ADID);
_ADID = AllocCString(adid);
}
Yes, I have upload a new binary following this thread, and I’m waiting Apple response. But the question is: why is this happening?
Why Unity collects this information? It doesn’t seem right to me. In fact, it seem ilegal to me. Unity can’t collect information from our users if we are telling Unity to not collect it.
What happened is that this code bit, which is required for Ads, is in that DeviceSettings.mm file by default. However, it won’t do anything if you don’t use Ads. It is simply an API meant for Unity Ads and other plugins that serve advertisements.
Since you don’t use Ads, Apple - as strict as they are with so many things - told you “it would be appropriate to remove this section of code entirely from your app” in case “your app is not meant to use the advertising identifier”.
You should be fine if you remove said code and re-submit your app again.