Quick Links: Download Gideros Studio | Gideros Documentation | Gideros Development Center | Gideros community chat | DONATE
App Store Connect warns: "Missing Purpose String in Info.plist File" — Gideros Forum

App Store Connect warns: "Missing Purpose String in Info.plist File"

Hey, all. I'm getting a new warning from App Store Connect after uploading a new build. I've added the Ads plugin, and the app runs fine, but Apple sent me this warning:

Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

I'm assuming the Ads interface accesses some user data under the hood to target ads effectively. Does anyone know how best to address this?

Paul

Comments

  • hgy29hgy29 Maintainer
    This is about GPS, did you disable it (assuming you don’t use it) in require plugin ?

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • PaulHPaulH Member
    I have GPS disabled. In the Require plugin I have these checked:

    GPS is not used in this app
    Vibrator is not used in this app
    Support aspect ratios of 2.1 or higher
    This app conforms to US Export regulations relative to encryption
    Enable 64bits libs (android)

    All the rest are unchecked.

  • olegoleg Member
    Accepted Answer
    maybe it's about it?


    image.png
    753 x 492 - 36K
    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
  • PaulHPaulH Member
    I just saw that, and suspect it would prevent the warning I'm getting from Apple, since the text entered there would presumably be be added to the plist file, but I'm a bit concerned that it's some other "personal information" other than location that's at issue, since I have GPS disabled.

    Or could the Ads interface potentially override the not-using-gps flag, since some ad networks use location if they can?

    Paul
  • olegoleg Member
    edited May 2019
    the plugin has the following condition:
     
    property name="reqNoGps" type="boolean" title="Gps is not used in this app"
     property name="reqGpsReason" type="string" title="Explain why you need GPS (iOS)" 
     
    if (tonumber(Export.getProperty("plugin.reqNoGps") or 0))==0 then
    			iOSProject.InfoPlist.NSLocationUsageDescription=Export.getProperty("plugin.reqGpsReason")
    			iOSProject.InfoPlist.NSLocationWhenInUseUsageDescription=Export.getProperty("plugin.reqGpsReason")
    		else
    			iOSProject.InfoPlist.NSLocationUsageDescription=nil
    			iOSProject.InfoPlist.NSLocationWhenInUseUsageDescription=nil
    		end
    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
  • PaulHPaulH Member
    Thanks. I'm uploading a build with some text there. I put in a statement that the app uses advertising networks that may request information to choose relevant ads. I'm hoping that will prevent the warning.

    I'd still like to understand if the Ads interface that's causing the warning. I haven't seen this before.
  • olegoleg Member
    I am updating the previous post
    my games:
    https://play.google.com/store/apps/developer?id=razorback456
    мій блог по гідерос https://simartinfo.blogspot.com
    Слава Україні!
  • PaulHPaulH Member
    Hmmm... The new build, with an explanation for the usage of GPS, still got the warning from Apple.

    Based on that code, the text I entered won't be exported to the plist file unless I uncheck the "GPS not used" box. So it would seem I need to uncheck that and submit again.
  • SinisterSoftSinisterSoft Maintainer
    Off on a tangent, the 'missing purpose' thing reminded me of Nathan's 'special purpose' in The Jerk...

    Likes: oleg

    Coder, video game industry veteran (since the '80s, ❤'s assembler), arrested - never convicted hacker (in the '90s), dad of five, he/him (if that even matters!).
    https://deluxepixel.com
    +1 -1 (+1 / -0 )Share on Facebook
  • PaulHPaulH Member
    edited May 2019
    It's been way too long since I've seen that... I've got to watch it again.

    So my latest build uploaded without the warning. I think the lesson here is:

    If you use the Ads interface, don't check the "Gps not used" box in the Require plugin, and do include a reason for the use of GPS.

    I've also been getting the warning: Missing Push Notification Entitlement, but I understand if the app doesn't actually use push notifications, it's nothing to worry about. It'd still be nice to have the warning go away, though. It states "Your app appears to register with the Apple Push Notification service". I wonder if the Iab plugin does that, so users can be notified about issues with their purchase after the fact, or something like that. I won't lose sleep over that one, though.

    Thanks for the help, Oleg and hgy29! And for the movie memories, SinisterSoft!

    Paul
    +1 -1 (+3 / -0 )Share on Facebook
  • Hi guys,

    We are getting the message too. We aren't using ads in this version of the app. We have:
    Plugins:
    Bitop
    JSON
    Require
    TextToSpeech

    And in Require:
    GPS is not used in this app
    Vibrator is not used in this app
    Support aspect ratios of 2.1 or higher
    Support non - rectangular screen shapes
    App needs to write to external storage
    This app conforms to US Export regulations relative to encryption
    Disable x86 libs (android)
    Enable Metal Support (iOS)

    I deleted NSAllowsArbitraryLoads from the plist (automatically set by the export but not needed in this version because we have no ads etc) as I thought this might trigger the reason request.

    I also deleted iAds as that is still included in the export and is defunct.

    I think it must be the fact that the CoreLocation Framework is included. But if I delete it I get a load of build errors from requiring the lib: ... in libgideros.a(ggeolocation-ios.o)
    So I assume geolocation is the issue, but I can't work out how to disable it.

    I can't give a reason to Apple because we aren't using GPS in any way (no ads, analytics or anything).

    Any ideas?
  • hgy29hgy29 Maintainer
    I guess apple thinks we use geolocation because we do link with CoreLocation. The issue here is that geolocation is is Core gideros, and can’t be selectively removed from code. Should that be turned into a plugin somehow ?
  • hgy29hgy29 Maintainer
    Maybe we could just include a default message saying ‘this app doesn’t use GPS. If you read this, your app has been hacked and you should uninstall it’
  • @hgy29 I think GPS as a plugin would make sense, especially in the current privacy-focused climate. Last year we had GDPR, a new EU directive is supposed to be coming and Apple are always tightening things up in regards to privacy and security. I think anything related to permissions and privacy etc, should probably be outside the Core and be dealt with by the developer with full knowledge of what they are using.

    I uploaded a build of the ad-supported version yesterday and assumed the ads were triggering the message (and perhaps they would too), so I gave ads as the reason, but I notice that CoreLocation isn't required for Admob, anyway.

    Also, I have no idea how much this lib adds to the app size, which is also a consideration. App size is one of the new Google Play metrics you can use to compare yourself to your "peers"/competition (along with crashes etc), so I guess it might have an impact on ASO. It has an impact on a user's choice to download or uninstall an app, for sure. How difficult would be to make other features optional (even if the default is opted-in) in order to reduce the app-size? Or would it have a negligible impact? For example, we don't use stuff like accelerometer, gyroscope or ttf fonts.

    Likes: EricCarr

    +1 -1 (+1 / -0 )Share on Facebook
  • aydadaaydada Member
    @NatWobble Hi,
    Could you resolve it? I'm facing the same issue.
    It seems that we can not avoid it as geolocation is in Core gideros.
    Any workaround for this?
  • hgy29hgy29 Maintainer
    @aydada, use the require plugin and specify a message even if don’t use the gps
  • PaulHPaulH Member
    Yes, and uncheck "this app doesn't use GPS" from the require plugin when building for iOS. It seems the message doesn't get exported to the plist file if that box is checked.
  • aydadaaydada Member
    edited May 2020
    @hgy29 I don't use any plugin in my game, but NSLocationWhenInUseUsageDescription warning also appears. It seems that Gideros core module using this.
    In this case, what message should I provide?
  • hgy29hgy29 Maintainer
    Yes, GPS is still a core functionality of Gideros. For the message, it is up to you since it will never be displayed. Maybe something similar to what I suggested a few posts above ?
  • aydadaaydada Member
    @hgy29 Thank you, I will give it a try!
Sign In or Register to comment.