Product

Preparing for new location permissions in iOS 13 and Android 10

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.

13 10

iOS 13

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:

13 B 1

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.

13 B 2

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:

  • If you are manually prompting for Always after When In Use, prompt for Always up front instead.
  • Update your NSAlwaysAndWhenInUseUsageDescription, shown in the reminder, to be as compelling as possible.
  • Consider using RadarTrackingOptions with a priority of .efficiency, which will reduce the count of locations accessed in the background.

Android 10

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.

Q B 1

Learn more about location permissions changes in Android 10 here.

To summarize:

  • Once you target SDK version 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.