Appstore rejects kids app due ASIdentifierManager

Hi. Im using unity 2019.4.17LTS with uniyt IAP. No ads. I knew about this issue with apple and kids aps and I disabled Analytics via script before scene loads. I did not edit DeviceSettings.mm coz I thought that versions 2019.4+ have all fixes.
Got reject from apple today:

==============
Guideline 1.3 - Safety - Kids Category

We noticed that your Kids Category app includes analytics, advertising and collects, transmits, or has the ability to share personal information or device information with third parties.

Your app includes the following feature(s), contrary to guideline 1.3 of the App Store Review Guidelines:

Third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA. Specifically, we found that your app references the ASIdentifierManager API, which provides access to a user’s IDFA, in the following location(s) in your binary:

• Frameworks/UnityFramework.framework/UnityFramework

To resolve this issue, it would be appropriate to remove all instances of “ASIdentifierManager” from your app, even if they are not utilized in your app’s functionality.

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.

==============

Any suggestions?

our usage of this api is guarded with a define that is set depending on your usage of c# api
check if UNITY_USES_IAD is in xcode defines list
it is set if you use one of
UnityEngine.iOS.Device.advertisingIdentifier, UnityEngine.iOS.Device.advertisingTrackingEnabled, UnityEngine.Application.RequestAdvertisingIdentifierAsync

How can I remove it? I already edited DeviceSettings.mm and removed all UNITY_USES_IAD blokcs.
Got rejection again…

Hi Sparkline, might be worth to look at to get insight:
https://discussions.unity.com/t/807973

:hushed:

I read last post and checked if I have smth enabled in package manager. And I found that Advertisement and Analytics are both installed (was pre-installed). I’ve uninstalled advertisement and will try it now.

So does this mean basically once Advertisements are enabled the ASIdentifierManager will be present and no way to prevent ASIdentifierManager while using Unity Advertisements?

1 Like

To follow up on this… does this mean that you can’t have IAP enabled without having ASIdentifierManager?

I am running into the same rejection issue for a kid’s app. No ads, but there are in-app purchases.

Don’t you need analytics enabled for IAP? So, how do you disable ASIdentifierManager and keep IAP enabled?

I have the same problem. and nothing looks to work… :frowning:
ASIdentifierManager

FINALLY GOT APPROVED…!!!

Ok. I made a few changes… I dont know which one worked… but IT WORKED. I think that was the point 1 and 3

1 * I modified the ProjectSettings/UnityConnectSettings.asset . file in order to DISABLE Analytics with In-app Purchases enabled,
ProjectSettings/UnityConnectSettings.asset .
CrashReportingSettings:
m_Enabled: 0
UnityPurchasingSettings:
m_Enabled: 1
UnityAnalyticsSettings:
m_Enabled: 0
m_InitializeOnStartup: 0
UnityAdsSettings:
m_Enabled: 0
PerformanceReportingSettings:
m_Enabled: 0

2 * Removed from Library/PackageCache/com.unity.analytics

3 * Uninstall on Unity the Analytics Package. (WINDOW - > Package Manager)

4 * Create an object on my splash screen with a ScriptFile UnityAnalyticsDisabler.cs attached,

using UnityEngine;
using System.Collections;
using UnityEngine.Analytics;

public class UnityAnalyticsDisabler : MonoBehaviour
{

    // Disables analytics before any code runs that sends analytic events
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    public static void OnRuntimeMethodBeforeSceneLoad()
    {
        Analytics.enabled = false;
        Analytics.deviceStatsEnabled = false;
        Analytics.initializeOnStartup = false;
        Analytics.limitUserTracking = true;
        PerformanceReporting.enabled = false;
    }

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
}

5 * On Xcode I modified the DeviceSettings.mm
Removed the #include <Adsupport/AsIdentifierManager.h> line
QueryASIdentifierManager() : found and deleted
static NSString* _ADID = nil;
and all the #if UNITY_USES_IAD References.,
Follow this instructions
** AppStore keeps rejecting Kids App page-2**