flutter-permission-plugins icon indicating copy to clipboard operation
flutter-permission-plugins copied to clipboard

iOS permission key search is incomplete

Open bhusang opened this issue 4 years ago • 1 comments

🐛 Bug Report

Using XCode 12.1 & iOS 14.1, there is an additional location permission key which is ignored by this plugin. The key in question is 'NSLocationAlwaysAndWhenInUseUsageDescription' which is an amalgamation of the handled keys 'NSLocationWhenInUseUsageDescription' and 'NSLocationAlwaysUsageDescription'. The current code does not have a check for this "new" key. Although I am a novice wrt to Flutter plugins, I will try to create a pull request.

Expected behavior

To not throw an exception when the key 'NSLocationAlwaysAndWhenInUseUsageDescription' is used in the Info.plist.

Reproduction steps

Define 'NSLocationAlwaysAndWhenInUseUsageDescription' in Info.plist. Debugging the app demonstrates that an exception is thrown -

Exception has occurred.
PlatformException (PlatformException(ERROR_MISSING_PROPERTYKEY, To use location in iOS8 you need to define either NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription in the app bundle's Info.plist file, null, null))

Configuration

Version: 1.x

Platform:

  • [X] :iphone: iOS
  • [ ] :robot: Android

bhusang avatar Oct 22 '20 01:10 bhusang

did this every get fixed? our app was flagged by apple i believe it was because of the recent inclusion of this library

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

martipello avatar Mar 22 '21 15:03 martipello