Kids' app is rejected by Apple because of Analytics

I’m struggling with this case for a month already.

Message from resolution center

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 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.

Next Steps

To resolve this issue, please remove this functionality or revise your app so that no personally identifiable information or device information is sent to third parties.

I even had a call from Apple and they told me about new kids safety rules that become more strict. That’s why they are not OK with the Unity Analytics library which has access to device name information and etc. However I can’t remove it, because I need IAP feature.

Here is my status and what I’ve already tried to do with all these:

  1. I’m using Unity 2019.2.12f1. Analytics Libarary 3.3.2. Ads package is removed
  2. I’ve disabled HW statistics in player settings
  3. I’ve added some runtime code to disable Unity Analytics
  1. I’ve deleted UnityAds folder from XCode project (why it’s here, btw?)
  2. I’ve changed the contents of DeviceSettings.mm file

Please, I would be very grateful for any tips how to resolve this issue. It all looks like a huge bug.

Here is a screenshot from Charles. I ran my app from TestFlight and make a subscription purchase. I don’t see anything about Analytics or I just don’t know what I’m looking for.

I’m seeing the following Unity endpoints hit:

ecommerce.iap.unity3d.com
perf-events.cloud.unity3d.com
events.iap.unity3d.com

It looks like Performance Reporting may still be enabled? Also, IAP looks to be sending events even with Analytics disabled, I’ll check with the team here on the status.

Thank you for the answer!

I’ve never used Analytics stuff in my projects, so can you please tell me where I can find this Performance Reporting feature and disable it?
IAP events are OK, I guess, because user must buy a subscription on the start.

Also, this Charles log was made with 3.3.5 version of Analytics library, I’ve decided to check the latest one. You should know that after package update Analytics feature turned off by itself. I don’t know if it’s just a UI bug or something deeper.

5420826--551160--Снимок экрана 2020-01-29 в 17.59.21.png

I will check on the perf reporting, this may help in the meantime https://discussions.unity.com/t/689705/3 We are looking into the ecommerce request from IAP which is my suspicion. This would take a new IAP version if so

1 Like

Thank you, seems like perf-events are gone for now.

Can you try to submit to Apple again?

In progress :slight_smile: Long-time binary processing this time

hi @JeffDUnity3D and @AytoMaximo , still rejected and still same problem after disable crashreporting, disable hwstats, set to under 13, any idea?

Hello! My app is in review now and we will know the result in 2-3 days. The Apple manager told me the technical team (commission) is gathering every time to check my app, that’s why every review takes so long.

Omg, from my point of view it’s better to restrict kids apps ablities with the security features of iOS itself and don’t blow developer’s mind. Also, I’m appealing for dialogue between Apple and Unity.

1 Like

+1

as a developer of unity I think we have only to check a checkbox called kidds app for IOS on analythics service

1 Like

We are in discussions, and hoping to get clarity soon.

I had phone call with Apple few minutes ago. They rejected my app again. They told me that Unity Analytics code must be fully deleted from the app. sad trombone sound

2 Likes

Got it, thank you for the report. We are continuing to check into it also.

1 Like

Hi, I am trying to publish kids app too. I have no ads in my app, had only unity iap. After getting my first rejection, I removed all iap, turned off unity analytics, removed all analytics libraries from plugin folder and sent new build to itunes. Yesterday my app got rejected again. The answer from appstore is :

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 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.

If you are using third-party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries’ source, you may be able to search the compiled binary using the “strings” or “otool” command line tools. The “strings” tool can output a list of the methods that the library calls and “otool -ov” will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the “nm” tool to verify if any third-party libraries are calling these advertising APIs.

So i opened up terminal typed nm myBinaryName and got lots and lots of text. where i found these lines
000000010001e24c t _UnityAdvertisingIdentifier
000000010001e44c t _UnityAdvertisingTrackingEnabled
0000000100bb9c70 b __ZZ26UnityAdvertisingIdentifierE13_ADIDNSString
0000000100bb9c68 b __ZZ26UnityAdvertisingIdentifierE5_ADID

  • So i assume this is causing me trouble?

Out of curiosity i’ve created new empty project and made a build, checked this new build with nm command and it had these 4 lines too about advertising. Does it mean that even if i submit an empty project as a kids app it will get rejected too???

000000010001e44c t _UnityAdvertisingTrackingEnabled - I think i need to change this line, how can i DISABLE unity advertising tracking? in services tab ads is turned off, analytics is off, iap is off. What else can i do?

I’m not the winner here, but you can check my own steps from the first post: have you cleaned the packages? As I remember, Ads is included by default. Disable HW statistics (2 step) or look at the example of DeviceSettings.mm (5 step).

thanks for your reply. I’ve missed the step 2 and step 5.
can you upload the image in step 5 again, it’s not showing up.

Oh, it’s really gone… Let me share some code - it’s the first part of DeviceSettings.mm file that you need to change.

DeviceSettings.mm example

#include "DisplayManager.h"

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;
}

[The original idea from this old post]( https://discussions.unity.com/t/527690 ?_ga=2.187845032.1285217545.1580405427-1215992595.1580405427) (link)

Pay attention to UnityAdvertisingIdentifier() method and UnityAdvertisingTrackingEnabled(). All default contents are removed and replaced with hardcoded “return NULL/false”

UPD: I’ve re-uploaded the screenshots

2 Likes

¿ There is not enough having parental gate before showing an ad ? ¿ do I have to remove unity ads completly ?

I think is too hard those steps to stop unity sending data , … please add a check box on services that do all those things for us

lot of thanks