App Store Connect: app has one or more issues

Hello!

Just got this email after trying to upload an app update for iOS.

 

“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 NSLocationAlwaysUsageDescription 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)).”

“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)).”

 

Xcode: 10.1

Corona: 2019.3468

build.settings:

settings = { plugins = { -- Base ['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.AmazonAds'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.TwitterMoPub'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.StartApp'] = { publisherId = 'com.coronalabs' }, -- Banner --['plugin.appodeal.beta.AppLovin'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.FacebookAudience'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Flurry'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.InMobi'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.MyTarget'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Yandex'] = { publisherId = 'com.coronalabs' }, -- Interstitial --['plugin.appodeal.beta.AdColony'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Chartboost'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.FacebookAudience'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Flurry'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.InMobi'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.IronSource'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Mobvista'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.MyTarget'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.StartApp'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Ogury'] = { publisherId = 'com.coronalabs' }, -- Rewarded Video ['plugin.appodeal.beta.AdColony'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Chartboost'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.FacebookAudience'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Flurry'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.InMobi'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.IronSource'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.Mobvista'] = { publisherId = 'com.coronalabs' }, --['plugin.appodeal.beta.MyTarget'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.StartApp'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Unity'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Vungle'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Tapjoy'] = { publisherId = 'com.coronalabs' }, ["plugin.pollfish"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true } }, }, orientation = { default = "portrait", supported = { "portraitUpsideDown", }, }, iphone = { xcassets = "Images.xcassets", plist = { UILaunchStoryboardName = "LaunchScreen", NSAppTransportSecurity = { NSAllowsArbitraryLoads = true }, NSLocationAlwaysUsageDescription = { "This app would like to use location services." }, NSLocationWhenInUseUsageDescription = { "This app would like to use location services." }, UIApplicationExitsOnSuspend = false, UIPrerenderedIcon = true, UIStatusBarHidden = true, MinimumOSVersion = "8.3", }, }, }

Same problem with latest Corona version (2019.3473).

My mistake in build.settings

Apple didn’t care before and I ignored the console warning :slight_smile:

Hi Aarbron !

I will receive the same alert.

How did you change build.settings?

Is this fine?

NSLocationAlwaysUsageDescription = false,

OK, I understand.
https://docs.coronalabs.com/api/library/native/newMapView.html

        plist =         {             NSLocationAlwaysUsageDescription = "This app would like to use location services.",             NSLocationWhenInUseUsageDescription = "This app would like to use location services.",         },

Sorry for the delay.

Copy paste my code and you will be fine :slight_smile:

Same problem with latest Corona version (2019.3473).

My mistake in build.settings

Apple didn’t care before and I ignored the console warning :slight_smile:

Hi Aarbron !

I will receive the same alert.

How did you change build.settings?

Is this fine?

NSLocationAlwaysUsageDescription = false,

OK, I understand.
https://docs.coronalabs.com/api/library/native/newMapView.html

        plist =         {             NSLocationAlwaysUsageDescription = "This app would like to use location services.",             NSLocationWhenInUseUsageDescription = "This app would like to use location services.",         },

Sorry for the delay.

Copy paste my code and you will be fine :slight_smile: