iOS 11 brings some changes to existing APIs. If your app only uses NAO SDK while the app is in the foreground, you do not have to change anything; however, if your app uses NAO SDK when it is in background, you need to make some changes.
apps can request access to user’s location in two ways, depending on how they plan to access and use it:
To access NAO SDK Location this way, you need to provide an NSLocationWhenInUseUsageDescription
key in your plist file, describing why you need location access.
To access NAO SDK Location this way, you need to ask the user for access to their location all the time. So you need to provide an NSLocationAlwaysUsageDescription
key in your plist file, describing why you need constant location access.
If you only use “While Using” location access, nothing changes for you. If you use the “Always” access and not provide the “While Using” access, you will need to do it.
So when you build your app using the iOS 11 SDK, you are now required to provide an NSLocationWhenInUseUsageDescription
key in all cases.
For “Always” access, you need to provide an additional key, which is called NSLocationAlwaysAndWhenInUseUsageDescription
.
If you only provide NSLocationAlwaysAndWhenInUseUsageDescription
but not NSLocationWhenInUseUsageDescription
, asking for “Always” access will not work.
The key NSLocationAlwaysUsageDescription
is still needed for backwards compatibility, in case you need to make the app available to iOS 10 users. For iOS 11 devices, this key is not needed.
Example of privacy-sensitive data rejection email for an app accessing the constant user’s location:
This app has attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain both NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription keys with string values explaining to the user how the app uses this data