What are the proposed changes to location permissions in iOS 13?
Back in June, Apple announced several major changes for location permissions in iOS 13. Here is what we know so far about the actual impacts.
On initial app install, iOS 13 will now present the user with an ‘Allow Once’ permission option. A user will first be prompted to select ‘While Using,’ ‘Allow Once’ or ‘Don’t Allow’ permission options. It is not possible for the user to grant ‘Always Allow’ location permission on the initial prompt. Selecting ‘Allow Once’ will give location permissions for a single session only.
‘While Using App’ → ‘Always Allow’
If the user selects ‘While Using’, the app will only have access to locations while the app is running in the foreground.
However, iOS 13 will automatically prompt the user to upgrade the location permission from ‘While Using’ to ‘Always Allow’ without any modifications to the app. This prompt happens somewhere between a few hours and a day. In initial testing, power cycling a device minutes after install triggers the prompt (see above) shortly after the device restarts. Without a power cycle, the user is prompted in less than a day.
We have seen this permission upgrade prompt when unlocking the phone even when the app isn’t running and have seen several re-displays of this prompt over a period of days.
The New ‘Do you want to continue allowing...’ Prompt
For apps with ‘Always Allow’ permissions, Apple indicated that iOS 13 will periodically show a ‘Continue’ prompt like the above.
iOS 13 Developer Beta 7 behavior: In testing, we have observed that the above ‘Continue..’ prompt appears to trigger after 3 consecutive days of background location use.
How will existing apps behave when a phone upgrades to iOS 13?
We expect location permissions will be carried over for existing installed apps. These new permissions flows should only apply to downloaded apps post iOS 13 update.
What are you doing at Gimbal to prepare for iOS 13?
Gimbal has been thoroughly testing iOS 13 as new betas are released on a wide range of devices to understand the actual behavior on-device. Changes proposed by Apple in the keynote don’t always manifest or survive the beta, as we saw with the proposed ‘blue bar’ in iOS 11. As the iOS 13 beta progresses, we will continue to test and keep you up-to-date on actual app and OS behavior.
We will also test additional scenarios where an app is compiled for an older version of iOS and then gets installed on iOS 13 without first running on an earlier version.
We’ve seen the ‘Location Reminder’ screenshots and they look scary, will these changes have a negative impact on our app functionality?
We believe that apps with a strong use case for location, developed by trusted developers and brands, will continue to see strong location adoption by end-users. We also welcome transparency and giving users the best information about app data sharing. To drive strong adoption of location services, clearly communicating the value of location-based services in a way that resonates with users in-app will become even more important with the advent of iOS 13. Please reach out to your Gimbal representative if you’d like to collaborate on custom recommendations for your app’s specific opt-in process.
iOS 13 Location Permission Flow (Beta 7)
How will these changes play out in code?
If your existing permission flow starts with asking the user for ‘When Using’ permission to gain trust and then later asks the user to upgrade the permissions, iOS 13 will now automatically do that step for you without having to programmatically manage the process. During the transition period where some users have iOS 13 and others have earlier versions, it may be best to have your app check the OS version and behave appropriately.
Example iOS version check
#if ( ! defined(__IPHONE_OS_VERSION_MAX_ALLOWED) ||
__IPHONE_OS_VERSION_MAX_ALLOWED < 130000)
// initially ask for 'When in use" permission
What about the Bluetooth permissions changes in iOS 13?
iOS 13 will now require explicit Bluetooth permission in order to collect Bluetooth beacon information (and all other Bluetooth activities). To help address any questions customers/developers may have about the changes coming to Bluetooth in this new version of iOS, Gimbal has put together this article with insights on what customers can expect and how to prepare before iOS 13 is released.
When submitting to the App Store, Apple is requiring the ‘Info.plist’ file to contain a ‘NSBluetoothAlwaysUsageDescription’ key with a user-facing purpose string explaining why your app needs the data even if Bluetooth is not being accessed by the SDK. This is required whether or not you are using beacon technology. Here is a good generic dialog that describes how Bluetooth can be used in our SDK: "This will allow App Name to find and connect to Bluetooth accessories. This app may also use Bluetooth to know when you're nearby."