NSLocationAlways

I submitted an app and I’ve had an advisory note back:

[quote]
"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.[/quote]

Im not using and do not need location services.
Anyone know what kind of declares might exist in Lib code that I should look for and comment out?

The only place ‘Location’ appears in the entire project is in UIKit :

Dim cgp as CoreGraphics.CGPoint64 Declare Function getLocationInView lib UIKitFramework selector "locationInView:" (objRef As Ptr, viewPtr as Ptr) As CoreGraphics.CGPoint64

Dim cgp as CoreGraphics.CGPoint64 Declare Function getLocationOfTouchInView lib UIKitFramework selector "locationOfTouch:inView:" (objRef As Ptr, nIndex as integer, viewPtr as Ptr) As CoreGraphics.CGPoint64

and

cgp = getLocationOfTouchInView(objPtr, nTouchIndex, referenceViewPtr)

But these are pointer positions…
They wouldnt be just searching for ‘location’ in the code?

No, both declares are connected to UIViews and do not affect LocationServices.
A request of Apple’s kind is about the latter. Are you not using iOSLocation somewhere in your project, or the equivalent in UIKit?

Definitely not. A project wide search for Location turns up pointer stuff, and iOSLocation doesnt appear anywhere, even in the couple of Libs I included.

I wonder if my use of the HTMLViewer to display a PDF file might be the cause… if the HTMLViewer is trying to work out where in the world it is being used for some reason?

Sounds weird. HTMLViewer is not connected to locationServices, and I checked iOSKit and could find nothing about them too. I guess it wouldn’t help to provide a value for the key like “requesting location data because Apple says I do so which I don’t” wouldn’t help.
They did not give you more details what API was touched or what selector was used, did they?

Nope.
Just basically 'your app is using this feature so you will need to give a description about why’, from Spring 2019

The app:
Copies files to documents
Opens files found in documents
Requests file sharing so people can see documents
Launches Safari
Has an inbuilt iOSHTMLViewer to display a PDF files
Uses Tables, buttons, canvases
Handles gestures on the canvases
Although its not localised, I ended up with English UK and English US somehow… (maybe its trying to work out whether the user spells ‘colour’ as ‘color’)

Thats it.

This has to do with something that Xojo refers to in its framework. We’ve been gradually adding generic messages that users can override with their own plist entries and this appears to be the latest one. Basically what you are providing is an explanation to the user of your app as to why you need their location which would only appear the first time that you request it, which is never in your case. Since you are not using location data, you can probably get away with a generic message like “change this message in plist” so if you ever do use it, you’ll get a reminder. In my experience, the message doesn’t get reviewed by a human unless it actually appears on screen.

@Greg O’Lone I submitted an iOS app today with 2019r1. Got Missing Purpose Strings for the following items:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription

I’m definitely not using any location stuff in this app. Should I Feedback this?

I received an email about this last time I submitted an app update (two weeks ago).

The app was still approved, but I don’t know when they will enforce these strings to be defined in the plist.

[quote=432913:@Gavin Smith]@Greg O’Lone I submitted an iOS app today with 2019r1. Got Missing Purpose Strings for the following items:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription

I’m definitely not using any location stuff in this app. Should I Feedback this?[/quote]
So the issue is that the xojo iOS framework does reference NSLocation even if you don’t, so you still need the plist entries.

But no, you don’t need to file a report. We’ve already fixed this in a future version of Xojo.