Location Services are important for many mobile applications (apps), allowing apps to create personalized, location-aware, customer communication and enabling enhanced customer experiences in-store or in-venue. Changes in Bluetooth permissions can have implications for the end-user experience and for app developers.
Not long ago, Apple announced a variety of changes that will affect Location Services and more specifically Bluetooth permissions in the iOS 13 update slated for release at the end of September. One of the most critical changes will be the addition of a Bluetooth permission requirement. To help address any questions customers/developers may have about the changes, Gimbal has put together this FAQ guide with insights on what customers can expect once the iOS 13 is released.
More specifically, we wanted to call out some of the changes coming to iOS 13 impacting Bluetooth functionality that customers should be aware of and what action we recommend customers take prior to iOS 13’s release.
In the iOS 13 FAQ, we mentioned that iOS 13 will now require explicit Bluetooth permission from each user in order to collect Bluetooth beacon information (and all other Bluetooth activities).
What wasn't clear at the time the FAQ was originally written was the specific behavior for apps that 1) were already installed and have already been released to the App Store, or 2) are compiled against the iOS 12 SDK going forward. We now have a clearer picture of iOS behavior for the above cases.
What is going to change in iOS 13 related to Bluetooth Permissions?
Apps will now prompt for Bluetooth permission from the user the first time any Bluetooth functionality, including simply checking to see if Bluetooth is on, is accessed. And in the case where the app was built prior to iOS 13, so before the Bluetooth permission request prompt existed, a generic and overly broad description will automatically be displayed:
For customers not using beacon technology:
Gimbal recommends customers disable location detection with Bluetooth beacons using a setting in Gimbal Manager's Advanced Configuration tab for each app:
Setting Beacon Monitoring to OFF for your app (specifically for your iOS app, in this case) will prevent the Gimbal SDK from using Gimbal beacons to detect place arrival and departure.
However, even with this setting turned off, older versions of the Gimbal SDK will still collect information on what percentage of your app users have Bluetooth on. This helps customers make decisions about whether to deploy and use beacons to capture precise place visits:
For this reason, simply turning off beacon monitoring in Gimbal Manager is NOT ENOUGH to prevent the Bluetooth permission prompt from being shown in iOS 13 with Gimbal SDK versions V2.81 or lower. In fact, with these Gimbal SDK versions, a Bluetooth permission dialog will be shown as soon as the SDK is initialized for the first time.
In order to prevent this permission dialogue from being presented, Gimbal released an updated SDK (v2.82) in late August 2019. Specifically, on iOS 13, it will:
- Not trigger the Bluetooth permission dialog if Beacon Monitoring is turned off in Gimbal Manager
- Not enable beacons if the "NSBluetoothAlwaysUsageDescription" isn't present in the app's info.plist file
- Not trigger the Bluetooth permission dialog until place monitoring is turned on in the app (assuming that the prior two items are set appropriately). Currently, the permission dialog will appear even before place monitoring is turned on.
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."
With the new Bluetooth permission dialog, we recommend that you:
1) Turn beacon monitoring off for your app in Gimbal Manager if you don't use beacons
2) Upgrade to the new Gimbal SDK (V2.82) and release an app update to the App Store
It's important to maintain the trust of your users and only show them permission dialogs that apply to them and what they would benefit from.
For customers using beacon technology:
For customers who do use beacons, the same guidelines apply to the Bluetooth permission as apply to the location permission. Specify and test the specific language used in the 'Bluetooth prompt' ("NSBluetoothAlwaysUsageDescription"). Explain clearly what the value is for the user is when they grant your app access to Bluetooth information.
We still recommend adding an "NSBluetoothAlwaysUsageDescription" entry to the apps info.plist with the same description that you are using for the "NSLocationAlwaysAndWhenInUseUsageDescription" entry for the "NSLocationAlwaysUsageDescription" entry in case you decide to add beacons later. If you don't add this entry now, you won't have the option of using beacons later.
For questions, please reach out to firstname.lastname@example.org