Asking for always directly vs. after "when in use"

Hi, we have an app that handles kind of time reporting when at a certain location, and therefor always need precise. The user can click a button to check in/out, but we also have feature that used background location and geofences so that the user can automatically be checked in/out when arriving and leaving a location. When the button is pressed first time we ask for "in use", when the user turns on the feature we ask for "always".

The ios13 "provisional" state was therefor pretty detrimental to us since the user might go in an turn it on, expecting it to work, and then leaving work 30 mins later not be automatically checked out. We had to add large banners telling them to go in to settings if they wanted it to work right away...

Now from the session, it was mentioned that you changed this in 13.4. However, it was not clear to me exactly when it applied. Our users most often clicks the button first, and then discovers the auto-feature later, but SOME might turn on the feature right away (especially on re-installs). In those cases we will ask for "always" before "in use".

In these cases, will it work like before, i.e. we will end up in the "provisional state" like prior to 13.4, just because the user asked for always before in use?

Replies

I have very similar issues as well. In my case I can just about work around it if I know that I'm in the provisional state by using more heavy weight location monitoring instead of things like significant change monitoring. However this really depends on accurately knowing when I'm in the provisional state vs the real always state (where I can safely use the lightweight location monitoring).

Unfortunately as far as I know there's not way determine if you're in the provisional state. Sure you could try and track various state machine transitions, but this is prone to breaking if your apps state gets out of sync with the state is iOS (as can happen if you restore from a backup). It also breaks if the possible state machine transitions change, as happened in iOOS 13.4.