iOS 14 / Android 11 Support

Transistor Software
3 min readAug 31, 2020

--

The Background Geolocation SDK for React Native v3.9.0, Cordova v3.9.0 and Flutter v1.10.0 now includes support for iOS 14 and Android 11.

iOS 14

iOS 14 introduces yet another change to the location authorization dialog with a new “Precise” switch. This switch will default to “On”. If the user disables Precise location, location accuracy will be reduced to ~5000 meters and locations could be up to 20 minutes old.

If the user disables this switch, you will learn this in the onProviderChange event via new event-attribute ProviderChangeEvent.accuracyAuthorization

ProviderChangeEvent.accuracyAuthorization

However, iOS 14 now provides a new method to temporarily request full accuracy from the user until the next launch of the application: BackgroundGeolocation.requestTemporaryFullAccuracy (see API docs Cordova, React Native, Flutter)

BackGeolocation.requestTemporaryFullAccuracy

iOS will present the following dialog to the user:

BackgroundGeolocation.requestTemporaryFullAccuracy

The highlighted String in the dialog above, called the “Purpose String”, is supplied to the first parameter of requestTemporaryFullAccuracy("MyPurposeString”)

The “Purpose String” is configured using a new .plist entry (see API docs Cordova, React Native, Flutter).

Privacy — Location Temporary Usage Description Dictionary

Putting it all together, the following animation demonstrates disabling Precise Location followed by a request for temporary full accuracy authorization:

requestTemporaryFullAccuracy

Note: for Android, bothrequestTemporaryFullAccuracy and ProviderChangeEvent.accuracyAuthorization will always return ACCURACY_AUTHORIZATION_FULL. In the future, however, we believe Android too will eventually follow iOS’ lead on this new privacy mechanism.

Android 11

With Android 11, location-authorization follows a similar strategy that iOS 13 introduced, where the Always option is no longer presented on the permission dialog. Instead, users will have to explicitly click “Allow in Settings” which simply redirects the user to your application’s Location permission screen. It will be completely up to the user to select “Allow all the time”. Unlike iOS, there is no secondary dialog prompting the user to “Change to Always Allow”.

--

--

Transistor Software
Transistor Software

Written by Transistor Software

Creator of Background Geolocation SDK. Professional plugin developers — geolocation specialists. https://www.transistorsoft.com

Responses (1)