CLLocationManager (iOS/macOS) callback change request

When we ask users for permission to use their location, they'll be able to grant permission to "WhenInUse" in the first step. After that the app may ask for "Always" authorization and the user taps 'Change to always'. That's fine. So far...

But there is something missing:

Issue on the 1st step: An app can't tell the user that the wrong permission button was tapped ('Allow once' is sometimes wrong, see step 2) and to go to the settings to correct that. 'Allow once' is okay to show the user's location on a map. BUT if the app later needs BG permission, step 2 will fail silently. That's confusing to the user, and to the developer! Also, some users get nervous if they encounter such system pop-ups (i.e. see your mothers and fathers) and tend to tap 'Allow once'.

(My app shows a map, where 'Allow once' is okay, but it also is a GPS tracker in the 2nd use-case)

Issues on the 2nd step:

(2.1) Well, the user asks the app to record a GPX track and before he chose 'Allow once' (because he wanted the map to locate himself; the same app session). Guess what?

Nothing at all happens.

To the user the app appears to be buggy. Since it didn't get any explicit callback by the system it never was able to determine whether another permission request could be successful or not.

(2.2) The user selected "WhenInUse" in step (1) and decided to "Keep 'WhenInUse'".

Nothing at all happens. Again.

Problem here: The user tapped a button and the app doesn't get any callback on this. That probably breaks functionality. I have also tried to receive notifications (about key windows: UIWindowDidBecomeKeyNotification and UIApplicationDidBecomeActiveNotification). But the pop up seems not to be anything like a window or ... whatever would cause the app to resign the active state.

So here are my 2 cents. If I'd be the engineer of CLLocationManager, I'd like to change the following (R = Request):

(R1) Add CLAuthorizationStatusTemporary (That is: "Allow once only" and means: "You don't even need to ask for 'Always' authorization")

(R2) Some in-app mechanism, that would allow the user to correct the choice to "Allow 'WhenInUse'" once.

(R3) Always give a feedback on the current authorization status, after the user taps a button.

Can we please have these changes?

CLLocationManager (iOS/macOS) callback change request
 
 
Q