Pavel
Pavel

Reputation: 5876

Identify which plugin has permission request

After I upload build to TestFlight, I'm getting email:

App Store Connect: Your app … has one or more issues

ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “Runner.app” bundle should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If your app supports multiple locales, you’re now required to provide a purpose string value in the Info.plist file in addition to a valid localized string across each of your app’s localization folders. 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. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.

I can fix this by adding NSLocationWhenInUseUsageDescription with some random value. But I want to know which of my plugins references location API. Maybe I don't need this plugin, or I will find out location request scenario and write better explanation

Upvotes: 1

Views: 834

Answers (1)

Pavel
Pavel

Reputation: 5876

If location API is referenced in some flutter plugin, the plugin may be found like this:

grep -E "(Core|NS|Swift|CL)Location" -rl ~/.pub-cache

However, location API can also be referenced in some native iOS (non-flutter) framework, which, in turn, is a dependency of a flutter plugin. This case is harder to find. You may find list of plugins (Android Studio -> tool window Project -> External Libraries -> Flutter Plugins), find plugin dependencies in <plugin>/ios/<plugin>.podspec and then check source code of the dependencies.

Or try to grep binaries in pods cache:

grep -E "(Core|NS|Swift|CL)Location" -rl ~/Library/Caches/CocoaPods 

Among plugins in the question, two of them reference location API: flutter_keyboard_visibility and onesignal_flutter

Upvotes: 1

Related Questions