- Home /
iOS app rejected due to use of IDFA (ads identifier)
Hi,
Apple is rejecting our iOS app (app is in kids category). They say that the binary is using the IDFA or ads identifier, but we are not using ads nor analytics. We have disabled all Unity services (except Collab), we have deleted all packages related to analytics/ads. But still, Apple review team says that the binary is using ads identifier. We are using Unity 2019.2. Here is the message:
"Code of concern in your app binary has been confirmed around dynamic use of Ad Support code. Specifically, there is a portion of the binary code making use of the following elements:
Method calls +[NSBundle bundleWithPath:] and -[NSBundle classNamed:] Strings @"/System/Library/Frameworks/AdSupport.framework" and @"ASIdentifierManager" Selector reference sharedManager
If your app is not meant to use the advertising identifier, it would be appropriate to remove this section of code entirely from your app. This may be included as part of Unity or other third party integration; if you are unable to make the modifications to their imported code, it would be prudent to contact the relevant developers for support.
Guideline 1.3 - Safety - Kids Category
We noticed that your kids app includes third-party analytics, third-party advertising or collects, transmits, or has the ability to share personal information or device information.
Specifically, your app includes the following feature(s), contrary to guideline 1.3 of the App Store Review Guidelines:
Third-party analytics and Third-party advertising with the ability to collect, transmit or share identifiable information (such as name, address, date of birth, email, location, photos, videos, drawing or the ability to chat), device information, or the IDFA."
It's bug? It's Unity always using IDFA?
Thanks,
Albert
We are also facing a similar issue in our app, made with Unity 2018.4.2. We are using Unity IAP, so the situation is not exactly like yours, but we have disabled Analytics at runtime, as instructed on Unity's forums, so there should be no problem...
Not sure if this will be of help, but have you disabled HW statistics? ("Disable HW Statistics" value in PlayerSettings > Other Settings, located towards the end of the "Configuration" part)
Hi,
yes, HW statistics is disabled. Our app was finally approved, we had to modify one file directly with xCode. Follow the instructions here: https://forum.unity.com/threads/ios-advertising-identifier-rejection-faq.226187/
Hi,
good to hear that you got your problem solved. I though you didn't need to edit the DeviceSettings file these days, but it seems I'll have to try editing it, and seeing if that fixes the problem we are having here.
Answer by planetfactory · Jan 27, 2020 at 09:04 AM
Hi,
I'm attaching the first part of the file "DeviceSettings.mm" that was approved by Apple. Hope it helps! @AytoMaximo
//#include <AdSupport/ASIdentifierManager.h>
#include "DisplayManager.h"
// ad/vendor ids
extern "C" const char* UnityAdvertisingIdentifier()
{
return NULL;
}
extern "C" int UnityGetLowPowerModeEnabled()
{
return [[NSProcessInfo processInfo] isLowPowerModeEnabled] ? 1 : 0;
}
extern "C" int UnityGetWantsSoftwareDimming()
{
#if !PLATFORM_TVOS
UIScreen* mainScreen = [UIScreen mainScreen];
return mainScreen.wantsSoftwareDimming ? 1 : 0;
#else
return 0;
#endif
}
extern "C" void UnitySetWantsSoftwareDimming(int enabled)
{
#if !PLATFORM_TVOS
UIScreen* mainScreen = [UIScreen mainScreen];
mainScreen.wantsSoftwareDimming = enabled;
#endif
}
extern "C" int UnityAdvertisingTrackingEnabled()
{
return false;
}
extern "C" const char* UnityVendorIdentifier()
{
static const char* _VendorID = NULL;
if (_VendorID == NULL)
_VendorID = AllocCString([[UIDevice currentDevice].identifierForVendor UUIDString]);
return _VendorID;
}
Thank you very much! Really appreciate it :) However, a little happy, a little sad - my version is the same :( I've send Apple another build few days ago with some other fixes: 1) swtiched "disable HW Statistics" to true (never heard about this thing, thanks again!) 2) added some code to Unity project to disable Unity Analytics in runtime: code example from $$anonymous$$arvinE
It tooks Apple very long time to review builds, so I'm still waiting for result...
Yes, Apple is looking into this thing, and honestly, I think that they don't know exactly what to do... One week later I sent another app to review and I didn't change the DeviceSettings.mm and the app was approved in 3 hours... So yes, we all hate Apple ;)
Well, Apple is like a very strict parent - you hate it 'cas you're punished every time, but you also like it 'cas you're beco$$anonymous$$g better :)