Since this post was published, we introduced a new location data privacy checklist with the latest and greatest best practices and Radar capabilities. Check it out!
iOS 13 and Android 10 introduce changes to location permissions, raising the bar for developers requesting access to background location. iOS 13 launches to the public on September 19, and Android 10 launched to the public on September 3.
Previously, we wrote a post explaining the changes in detail. In this post, we explain how to prepare for the changes.
Users who granted location permissions before iOS 13 will keep those permissions after upgrading.
On iOS 13, if you prompt for Always
permissions first, the user will see a When In Use
permission prompt instead. If the user grants When In Use
, iOS will show a second prompt to upgrade to Always
permissions later, either outside the app or on a subsequent app open, at a time determined by the OS:
While the documentation suggests that you can still manually prompt for Always
after When In Use
, this no longer appears to work as of the GM seed. If you are manually prompting for Always
after When In Use
, prompt for Always
up front instead.
If the user grants Always
authorization, iOS will show a reminder after a few days, giving the user an opportunity to change settings. iOS 13 adds a map and a location count to this reminder to improve transparency.
Two tips: First, update your NSAlwaysAndWhenInUseUsageDescription
, shown in the reminder, to be as compelling as possible. Explain the value to the user, and suggest that the user select Always Allow
. Remember that the best location prompts are valuable and transparent.
Second, consider using RadarTrackingOptions
with a priority of .efficiency
, which will reduce the count of locations accessed in the background.
let trackingOptions = RadarTrackingOptions()
trackingOptions.priority = .efficiency // default is .responsiveness
Radar.startTracking(trackingOptions)
Learn more about RadarTrackingOptions
here.
To summarize:
Always
after When In Use
, prompt for Always up front instead.NSAlwaysAndWhenInUseUsageDescription
, shown in the reminder, to be as compelling as possible.RadarTrackingOptions
with a priority of .efficiency
, which will reduce the count of locations accessed in the background.Users who granted ACCESS_FINE_LOCATION
permissions before Android 10 will be grandfathered into ACCESS_BACKGROUND_LOCATION
permissions after upgrading.
If your app runs on Android 10 but targets SDK version 28
or lower, Android will automatically request ACCESS_BACKGROUND_LOCATION
when you request ACCESS_FINE_LOCATION
.
However, once you target SDK version 29
or higher, you will need to add ACCESS_BACKGROUND_LOCATION
to your manifest and request it explicitly.
Learn more about location permissions changes in Android 10 here.
To summarize:
29
or higher, add ACCESS_BACKGROUND_LOCATION
to your manifest and request it explicitly.Apple and Google have clearly raised the bar for developers requesting location permissions. If you want to access location data, you must deliver value to the end user, you must be transparent, and you must get clear opt-in.
These changes are an opportunity to build trust with your users. Embrace them!
Our team works hard to stay on top of changes like these. Want to stay in the loop about additional changes? Follow us on Twitter @radarlabs or subscribe to our newsletter below.
See what Radar’s location and geofencingsolutions can do for your business.