title: App Store Connect is rejecting an app release saying "Missing Purpose String in Info.plist" but the app does not need those permissions
body: <p>I have just done an iOS App Store bundle upload and had it rejected for the following reasons :</p>
  <blockquote>
  <p>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 NSContactsUsageDescription 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
  (<a href="https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy" rel="noreferrer">https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy</a>).</p>
  <p>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 NSCalendarsUsageDescription 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
  (<a href="https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy" rel="noreferrer">https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy</a>).</p>
  <p>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 NSAppleMusicUsageDescription 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
  (<a href="https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy" rel="noreferrer">https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy</a>).</p>
  <p>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 NSMotionUsageDescription 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
  (<a href="https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy" rel="noreferrer">https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy</a>).</p>
  <p>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 NSSpeechRecognitionUsageDescription
  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
  (<a href="https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy" rel="noreferrer">https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy</a>).</p>
  </blockquote>
  <p>This is a Flutter app.</p>
  <p>The permissions it wants descriptions for are <code>NSContactsUsageDescription</code>, <code>NSCalendarsUsageDescription</code>, <code>NSAppleMusicUsageDescription</code>, <code>NSMotionUsageDescription</code>, <code>NSSpeechRecognitionUsageDescription</code>.<br />
  But our app doesn't use contacts, the calendar, apple music, motion detection, nor speech recognition.</p>
  <p>I know how to fix these to get the submission to work, but I don't understand why Apple thinks our apps need these permission.</p>
  <h2>Why does App Store Connect think the app needs these permissions?</h2>
  <h3>Is there any way to see what permissions it thinks the app needs, and/or why?</h3>
  <hr />
  <p><strong>Info.plist</strong></p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
  &lt;plist version=&quot;1.0&quot;&gt;
      &lt;dict&gt;
          &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
          &lt;string&gt;$(DEVELOPMENT_LANGUAGE)&lt;/string&gt;
          &lt;key&gt;CFBundleExecutable&lt;/key&gt;
          &lt;string&gt;$(EXECUTABLE_NAME)&lt;/string&gt;
          &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
          &lt;string&gt;$(PRODUCT_BUNDLE_IDENTIFIER)&lt;/string&gt;
          &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
          &lt;string&gt;6.0&lt;/string&gt;
          &lt;key&gt;CFBundleName&lt;/key&gt;
          &lt;string&gt;my_app&lt;/string&gt;
          &lt;key&gt;CFBundlePackageType&lt;/key&gt;
          &lt;string&gt;APPL&lt;/string&gt;
          &lt;key&gt;CFBundleShortVersionString&lt;/key&gt;
          &lt;string&gt;$(FLUTTER_BUILD_NAME)&lt;/string&gt;
          &lt;key&gt;CFBundleSignature&lt;/key&gt;
          &lt;string&gt;????&lt;/string&gt;
          &lt;key&gt;CFBundleVersion&lt;/key&gt;
          &lt;string&gt;$(FLUTTER_BUILD_NUMBER)&lt;/string&gt;
          &lt;key&gt;LSRequiresIPhoneOS&lt;/key&gt;
          &lt;true/&gt;
          &lt;key&gt;UILaunchStoryboardName&lt;/key&gt;
          &lt;string&gt;LaunchScreen&lt;/string&gt;
          &lt;key&gt;UIMainStoryboardFile&lt;/key&gt;
          &lt;string&gt;Main&lt;/string&gt;
          &lt;key&gt;UISupportedInterfaceOrientations&lt;/key&gt;
          &lt;array&gt;
              &lt;string&gt;UIInterfaceOrientationPortrait&lt;/string&gt;
              &lt;string&gt;UIInterfaceOrientationLandscapeLeft&lt;/string&gt;
              &lt;string&gt;UIInterfaceOrientationLandscapeRight&lt;/string&gt;
          &lt;/array&gt;
          &lt;key&gt;UISupportedInterfaceOrientations~ipad&lt;/key&gt;
          &lt;array&gt;
              &lt;string&gt;UIInterfaceOrientationPortrait&lt;/string&gt;
              &lt;string&gt;UIInterfaceOrientationPortraitUpsideDown&lt;/string&gt;
              &lt;string&gt;UIInterfaceOrientationLandscapeLeft&lt;/string&gt;
              &lt;string&gt;UIInterfaceOrientationLandscapeRight&lt;/string&gt;
          &lt;/array&gt;
          &lt;key&gt;UIViewControllerBasedStatusBarAppearance&lt;/key&gt;
          &lt;false/&gt;
          &lt;key&gt;NSLocationAlwaysUsageDescription&lt;/key&gt;
          &lt;string&gt;This app needs access to location when in the background.&lt;/string&gt;
          &lt;key&gt;NSLocationAlwaysAndWhenInUseUsageDescription&lt;/key&gt;
          &lt;string&gt;This app needs access to location when open and in the background.&lt;/string&gt;
      &lt;/dict&gt;
  &lt;/plist&gt;
  </code></pre>