Search Unity

Important Changes for iOS ‘Kids’ Apps - Action Needed By Developers

Discussion in 'iOS and tvOS' started by ScottF, Mar 2, 2020.

  1. Alexander21

    Alexander21

    Joined:
    Dec 14, 2015
    Posts:
    302
    Hi All

    We are facing same rejection.........Twice we have uploaded the build to ios.They Said the above reason. We are using Unity 2018.4.27

    1) In Package manager we dont have any ads package manager.
    2) We have followed the post mentioned . ( changed the class DeviceSettings.mm ) mentioned by unity technologies.

    When i have tried to add Systemconfiguration.framework and click embed & sign. It shows the error

    before that we have uploaded the build Successfully in 2018.3.14. and ios10. . But now only our app rejected for 3 times for the same reason.

    How can i solve this problem. Any Idea.
     
    Last edited: Oct 10, 2020
  2. PavelLU

    PavelLU

    Unity Technologies

    Joined:
    Feb 23, 2017
    Posts:
    107
  3. Alexander21

    Alexander21

    Joined:
    Dec 14, 2015
    Posts:
    302
    @PaveLu thanks for you reply. I have enabled write Link Map File =yes. The path to link map file is

    1) build/Unity-iphone.build/Debug-iphoneos/Unity-iPhone.build/OURPROJECTNAME-LinkMap--.txt

    but i did not find the path OURPROJECTNAME-LinkMap.txt file in this path. Even the path is not available.

    build (1) path is not available.How can find the LinkMap.txt file. I am new to this.

    Kindly give me the correct path...

    Thanks in advance..

    EDIT:
    to get the LinkMap.txt file .. you have to change in xcode preferences...
    The above answer i have copied from one of the forum. Credit goes to that authour.
     
    Last edited: Oct 14, 2020
    ArderkuDrPanda likes this.
  4. Alexander21

    Alexander21

    Joined:
    Dec 14, 2015
    Posts:
    302
    @Pavelu I have check with the Link Map file. In that file both UnityAdvertisingIdentifer and UnityAdvertrisingTrackingEnabled are present.

    [QUOTE
    0x0002A3C0 0x00000004 [ 39] _UnityAdvertisingIdentifier
    0x0002A3C4 0x00000004 [ 39] _UnityAdvertisingTrackingEnabled
    0x0002A3C8 0x000001CC [ 39] _UnityVendorIdentifier
    0x0002A594 0x000001A8 [ 39] _UnityDeviceName
    0x0002A73C 0x000001A8 [ 39] _UnitySystemName
    0x0002A8E4 0x000001A8 [ 39] _UnitySystemVersion
    0x0002AA8C 0x0000018C [ 39] _UnityDeviceModel
    0x0002AC18 0x00000064 [ 39] _UnityDeviceCPUCount
    [/QUOTE]


    1) In Package manager we dont have any ads package manager.
    2) We have followed the post mentioned . ( changed the class DeviceSettings.mm ) mentioned by unity technologies.
    3) I have tick the Disable HW Statititics in Project Settings.
    both UnityAdvertisingIdentifer and UnityAdvertisingTrackingEnabled are present. Thats the reason for our app rejection.
    4)Actually I have doubt in the framework Adsupport.framework - DoNotEmbed option defaultly present in the xcode file. I have removed the framework . But it shows the error.

    I have a doubt.Did it creates problem in publishing the build in os. Even i saw many Ad files in the xcode files.

    Only Unity Peoples can answer the above questions. Kindly help me to publish my build.

    What i have to do Further ...

    Thanks in Advance
     
    Last edited: Oct 14, 2020
    ArderkuDrPanda likes this.
  5. christyoreilly

    christyoreilly

    Joined:
    Oct 23, 2020
    Posts:
    2
    We're currently blocked from releasing our Kids app due to this issue.

    We have an educational mini-games app that heavily depends on Unity to operate. We use IDFA to provide a better experience to parents, however we do not allow any third party to access the data, including Unity.

    We've removed all unnecessary analytics SDKs, but the Unity engine is being flagged since it is associated with IDFA access. We have removed the parts of the unity core that can access the user’s IDFA but Apple is still rejecting us.

    Specifically, as suggested above, we have
    - manually patched DeviceSettings.mm
    - disabled and removed Unity Analytics SDK
    - disabled and removed Unity Ads SDK

    It’s hugely important for us to get a solution to this problem urgently, it has blocked our release for months now and the children who rely on our app for learning need new content.
     
  6. PavelLU

    PavelLU

    Unity Technologies

    Joined:
    Feb 23, 2017
    Posts:
    107
  7. christyoreilly

    christyoreilly

    Joined:
    Oct 23, 2020
    Posts:
    2
    Hi Pavel,

    We've checked the Link Map file, advertisingIdentifier and isAdvertisingTrackingEnabled are each referenced once from React Native, not from Unity, i.e. first party only access from our app.

    Christy
     
  8. idzdigital1

    idzdigital1

    Joined:
    Aug 24, 2018
    Posts:
    2
    Hello,
    Our app word Search Game for kids got rejected 3rd time for the same reason on App Store saying...(Guideline 1.3 - Safety - Kids Category).
    Third-party analytics or third-party advertising with the ability to collect, transmit, or share identifiable information, including, for example, IDFA.
    • Our app does not include any third party analytics. (except Unity Analytics which is mandatory for Unity IAP)
    • Our app does not include any third party Advertising.
    • We are not collecting any user data.
    We are using Unity 2019.4.5 and Easy Mobile Pro package for In-App-Purchasing.
     
  9. PavelLU

    PavelLU

    Unity Technologies

    Joined:
    Feb 23, 2017
    Posts:
    107
  10. idzdigital1

    idzdigital1

    Joined:
    Aug 24, 2018
    Posts:
    2
    Hello,
    Our app word Search Game for kids got rejected 3rd time for same reason on App Store saying...(Guideline 1.3 - Safety - Kids Category).
    Third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA.
    • Our app does not include any third party analytics. (except Unity Analytics which is mandatory for Unity IAP)
    • Our app does not include any third party Advertising.
    • We are not collecting any user data.
    We are using Unity 2019.4.5 and Easy Mobile Pro package for In-App-Purchasing.
     
  11. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    We've received your support ticket also. I trust that you've attempted to disable Analytics at runtime with the following code. As mentioned in the support ticket, apply the code mentioned to disable Analytics at runtime and obtain a Charles Proxy capture to demonstrate to Apple that you are not collecting any information. We plan to decouple Analytics and IAP in a release planned for early next year.

    Code (CSharp):
    1. Analytics.initializeOnStartup = false;
    2. Analytics.enabled = false;
    3. PerformanceReporting.enabled = false;
    4. Analytics.limitUserTracking = true;
    5. Analytics.deviceStatsEnabled = false;
    6.  
     
    Last edited: Nov 6, 2020
  12. synarionit

    synarionit

    Joined:
    Nov 23, 2020
    Posts:
    1
    Hi @ScottF Thanks very informative article. Yes you are saying right, I am also facing the same update problem from my fantasy sports ios app.
     
  13. korimako

    korimako

    Joined:
    Aug 10, 2013
    Posts:
    40
    Is this release out, or in beta yet? What is the timeframe? I was about to implement IAP in a kid's app but I will wait until this is available. Thanks for any head's up!
     
  14. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    It may be a few more months
     
  15. Casio

    Casio

    Joined:
    Jul 16, 2012
    Posts:
    29
    I understand that Unity did not create this issue but the lengths the community has had to go to get Unity to make the necessary changes are crippling to many kid friendly developers. We need an option in the EDITOR on the PLAYER section of the BUILD SETTINGS to prevent ASIdentifierManager and Analytics from being included in apps unless specifically used. They should not be referenced in the LinkMap and we should not have to perform extra charles dumps as another part of each app submission when we know how to stop this issue at the source. The burden is too much to jump through hoops on this and that we have been trying to do so for over a year now is kinda embarassing. Again I get this is not an issue caused by Unity, but being agile is part of remaining relevant in a dynamic world and responding to the changing landscape of privacy is part of that. Please stop ignoring this issue.
     
    unser and planetfactory like this.
  16. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Not ignoring at all, we have a timeframe that I've mentioned.
     
  17. xLeo

    xLeo

    Joined:
    Sep 21, 2010
    Posts:
    194
    @JeffDUnity3D Our new app version has just been rejected due to the fact that: "Your app implements the App Tracking Transparency framework, which is used when apps collect data about users and share it with third-parties for tracking purposes. Since Kids Category apps are not allowed to collect, transmit or share identifiable information with third-parties, you should not implement App Tracking Transparency in your app".

    I would like to double-check: does Unity implements App Tracking Transparency or is this caused by a plugin?
    If Unity implements ATT, is there an easy (or not so easy) way to disable it? Any pointers on that?
     
    Last edited: Mar 30, 2021
  18. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Were you submitting as a Kids app? We are checking on your questions
     
    xLeo likes this.
  19. xLeo

    xLeo

    Joined:
    Sep 21, 2010
    Posts:
    194
    Yes.
     
  20. xLeo

    xLeo

    Joined:
    Sep 21, 2010
    Posts:
    194
    So, any pointers on that issue?
     
  21. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    No specific recommendations at this time, we are still investigating.
     
    xLeo likes this.
  22. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Upon further discussion, any ATT references would not be coming from Unity specific code, but likely from one of your plugins or assets.
     
    xLeo likes this.
  23. xLeo

    xLeo

    Joined:
    Sep 21, 2010
    Posts:
    194
    Thanks @JeffDUnity3D!

    As a suggestion, it would be nice to have a specific section for kids developers on the Manual and/or Unity Analytics package description. Something like this link, but oriented to Google Play / App Store approval processes.
     
  24. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
  25. JauntyBearGames

    JauntyBearGames

    Joined:
    Mar 26, 2018
    Posts:
    57

    my submission was initially rejected due to privacy policy violations. It's been eventually approved after implementing these changes
     
  26. coshea

    coshea

    Joined:
    Dec 20, 2012
    Posts:
    319
    I forgot I had to do this (edit DeviceSettings) and updated 3 apps in the kids category, 2 got through ok and 1 got rejected. All had analytics turned off, packages removed, all had exactly the same DeviceSettings file contents when I compare them.

    "Your app includes third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA. 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"

    I'll edit DeviceSettings.mm and submit again.

    However according to the quote from the start of this thread, this should be solved already. I'm using Unity 2019.4.12f1 and do a fresh replace xcode build from Unity. Have you verified your fix works, because devicesettings from 2019.4.12 are definitely including the contents that are getting rejected.

    Thanks

     
  27. akeplinger

    akeplinger

    Joined:
    Oct 26, 2008
    Posts:
    57
    Apple flagged several resubmissions of existing apps rebuilt using Unity 2020.2.1f1. In the code there is a
    #define UNITY_USES_IAD 0
    All fo the references to ASIdentifierManager are wrapped so they should not be present.
    Searching the code base I see no other references to ASIdentifierManager.

    But Apple rejected the app with this note:
    - Your app includes third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA. 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

    So, it's saying that the framework contains the reference, and that's closed to me.
    Is there any additional guidance for this specific situation?

    In the UnityFramework Target I see AdSupport.framework and StoreKit.framework. My Unity project has all services turned off. Is the build process supposed to exclude these? Possibly I need to do a clean Unity build for Xcode. Maybe these are included because the app used to have analytics.
    It's not clear, but in situations like this you try everything and google allot.
     
    Last edited: May 3, 2021
  28. coshea

    coshea

    Joined:
    Dec 20, 2012
    Posts:
    319
    I have just done a clean build from Unity 2019.4.13 and looking at DeviceSettings.mm this issue has not been fixed. Please see attached screenshot.

    This issue has been over a year now, is it still being looked at?

    Thanks
     

    Attached Files:

  29. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    I have asked engineering to look into this further.
     
  30. Swah

    Swah

    Joined:
    May 13, 2015
    Posts:
    80
    Thanks for looking into this Jeff. I can confirm that we are seeing references to black listed APIs in Unity 2019.4.26f. I did the modifications to DeviceSettings.mm, which removed several references. You can see the before and after from this egrep search in the LinkMap file: https://docs.google.com/document/d/13cnjfKZdZPian5DynaIfbrRLyLWjCBDxtpfzQqBAJ8g/edit?usp=sharing

    After modifications, I'm still seeing references to UnityEngine.Application::RequestAdvertisingIdentifierAsync(UnityEngine.Application/AdvertisingIdentifierCallback) from UnityEngine.CoreModule.o and CoreBindings.gen.o.

    We're gearing up to ship early next month, and are very much trying to avoid getting rejected and pushing back the date we committed to with Apple. @JeffDUnity3D do you know if the remaining references are ok to keep?
     
  31. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Unsure. Are you able to compare to a more recent version of Unity?
     
  32. Swah

    Swah

    Joined:
    May 13, 2015
    Posts:
    80
    @JeffDUnity3D I can certainly try - it will take me a few hours to do the test with 2020.3.12f1, I'll get back to you with the results.
     
  33. Swah

    Swah

    Joined:
    May 13, 2015
    Posts:
    80
    @JeffDUnity3D you can see in the same document (last few pages) that I'm getting similar results with 2020.3.12f1, both before and after the modifications to DeviceSettings.mm. Is that a good sign you think? If you know of anything else we can do to make it safer for Apple review we're all ears. Thanks!
     
  34. coshea

    coshea

    Joined:
    Dec 20, 2012
    Posts:
    319
    Hi Jeff

    Did engineering have a look at this? It is a problem for any companies using 2019 (can't go past 2019 due to minimum iOS version) and making games for kids.

    Thanks
    Chris
     
  35. Casio

    Casio

    Joined:
    Jul 16, 2012
    Posts:
    29
    This is still a problem. All steps to mitigate still result in the blacklisted API calls referenced when built in the following three areas:
    ASIdentifierManager.h (by reference in DeviceSettings.mm)
    /Frameworks/com.unity.ads/Plugins/iOS/UnityAds.framework/UnityAds
    Library/PackageCache/com.unity.ads@3.7.5/Plugins/iOS/UnityAds.framework/UnityAds

    @JeffDUnity3D
     
  36. coshea

    coshea

    Joined:
    Dec 20, 2012
    Posts:
    319
    Can Unity explain what is going on? This is taking too long to resolve (over a year).

    I have just done a clean build from Unity 2019.4.30 and the reference calls are still in DeviceSettings. I have no analytics, no IAP, no packages that use anything, no cloud services turned on.
     
  37. Alexey

    Alexey

    Unity Technologies

    Joined:
    May 10, 2010
    Posts:
    1,624
    >> and looking at DeviceSettings.mm this issue has not been fixed.
    well if you check your screenshot carefully, you would see that this is inside
    #if UNITY_USES_IAD
    this define is set ONLY if you use ads api in c#, namely we check for
    UnityEngine.iOS.Device.advertisingIdentifier
    UnityEngine.iOS.Device.advertisingTrackingEnabled
    UnityEngine.Application.RequestAdvertisingIdentifierAsync()
     
  38. unser

    unser

    Joined:
    Nov 28, 2012
    Posts:
    6
    Well, years pass and still, unity keeps adding these lines of code that apple doesn't like. Is there a way to prevent this from happening? Is really annoying this issue doesn't solve once and for all.
    I guess this is still under investigation
     
    Alima-Studios likes this.
  39. Swah

    Swah

    Joined:
    May 13, 2015
    Posts:
    80
    Just wanted to mention that we found a SDK that was adding the references to the forbidden API code. So in our case, the issue wasn't directly caused by Unity but rather by a SDK.

    The problem with the general approach though is that it is really easy to miss references to the API by some SDKs, and debugging this isn't trivial at all. I don't know how feasible it would be, but having the option to outright prevent anything from calling these APIs would be really useful. Ideally the code would not even compile.
     
    Alima-Studios likes this.
  40. giuoliv

    giuoliv

    Joined:
    Jan 19, 2017
    Posts:
    3
    Google Play has implemented similar requirements in its Families Policy. Please, @ScottF can you provide us with equivalent steps to remove any Unity analitics, data collection and data sharing on Android?
    Our app for kids was made in Unity 2017.4.40f1 and it can not be ported to a newer version of Unity unless it broke. We need to keep Analytics enabled in the editor, because the app uses in-App Purchasing, so we tried to remove any data collection/data sharing manually but the game was refused because "SPLIT_BUNDLE 15: Policy Declaration - Data Safety Section: Device Or Other IDs Data Type - Device Or Other IDs (some common examples may include Advertising ID, Android ID, IMEI, BSSID, MAC address)””
    Keeping analytics and just modifying the Policy declaration - Data Safety Section is not a option for us because our game targets kids and Google Play Families Policy Requirements says "Apps that solely target children must not transmit Android advertising identifier (AAID), SIM Serial, Build Serial, BSSID, MAC, SSID, IMEI, and/or IMSI".
    Please feel free to move this question to a new topic, but please help us to fix the issue and to keep kids data safe on Android.