iOS 13 introduced a radical new change to location authorization. No longer is the Kura app able to immediately request “Always” authorization.
Below is the new initial location authorization dialog presented by iOS 13— notice there’s no more “Allow Always” button:
When a user grants the most positive option on the dialog above, “Allow While Using App”, Kura will be granted what’s called “Provisional Always Authorization” . This means that Kura actually believes it’s been granted Always authorization.
A user who has clicked “Allow While Using App” on the dialog above, puts their phone into their pocket and starts driving to work. Normally, Kura would automatically initiate tracking after the device moves about 200 meters.
However, with iOS 13, the user must now explicitly authorize an upgrade to “Always” before location-tracking will occur, via a second dialog presented by iOS, which the user won’t see until the next time they unlock their device.
For the imaginary user driving to work, They won’t see the following dialog until they next unlock their phone, presumably after they arrived at their destination. Their entire drive to work will have been lost:
Assuming the user authorizes the transition to “Full Always” by clicking “Change to Always Allow”, the Kura location tracking will now operate in the traditional manner, automatically initiating tracking in the background when the device moves about 200 meters, just like iOS 12.
This, of course, means you could miss initial tracking events until the “provisional always” authorization has been upgraded to “full always” authorization
Furthermore, iOS 13 will now periodically warn the user of those apps found tracking their location in the background, along with a map summary and strongly prompting them to “Change to Only While Using”. You will want to ensure the user always selects "Always Allow"
However, if you can manage to coax the user to manually select “Always” authorization via navigating to Settings->Privacy->Location Services->Your App, then everything operates in the traditional manner.
With version Q, Android now follows the pattern established by Apple back in iOS 11, requiring the location dialog to offer both “Allow all the time” and “Allow only while using the app”:
In addition, the Android Motion API now requires run time permission from the user for “Physical activity”.