App Store Connect 拒绝应用程序发布,提示“Info.plist 中缺少目的字符串”,但该应用程序不需要这些权限

kri*_*ris 6 ios flutter app-store-connect

我刚刚完成了 iOS App Store 捆绑上传,但由于以下原因被拒绝:

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSContactsUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多 ( https://developer.apple.)。

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSCalendarsUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多 ( https://developer.apple.)。

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSAppleMusicUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多 ( https://developer.apple.)。

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSMotionUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多 ( https://developer.apple.)。

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSSpeechRecognitionUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。

这是一个 Flutter 应用程序。

它想要描述的权限是NSContactsUsageDescriptionNSCalendarsUsageDescriptionNSAppleMusicUsageDescriptionNSMotionUsageDescriptionNSSpeechRecognitionUsageDescription
但我们的应用程序不使用联系人、日历、苹果音乐、动作检测或语音识别。

我知道如何解决这些问题以使提交工作,但我不明白为什么 Apple 认为我们的应用程序需要这些许可。

为什么 App Store Connect 认为该应用需要这些权限?

有什么方法可以查看它认为应用程序需要哪些权限,和/或为什么?


信息表

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>$(DEVELOPMENT_LANGUAGE)</string>
        <key>CFBundleExecutable</key>
        <string>$(EXECUTABLE_NAME)</string>
        <key>CFBundleIdentifier</key>
        <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
        <string>my_app</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        <string>$(FLUTTER_BUILD_NAME)</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>$(FLUTTER_BUILD_NUMBER)</string>
        <key>LSRequiresIPhoneOS</key>
        <true/>
        <key>UILaunchStoryboardName</key>
        <string>LaunchScreen</string>
        <key>UIMainStoryboardFile</key>
        <string>Main</string>
        <key>UISupportedInterfaceOrientations</key>
        <array>
            <string>UIInterfaceOrientationPortrait</string>
            <string>UIInterfaceOrientationLandscapeLeft</string>
            <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>UISupportedInterfaceOrientations~ipad</key>
        <array>
            <string>UIInterfaceOrientationPortrait</string>
            <string>UIInterfaceOrientationPortraitUpsideDown</string>
            <string>UIInterfaceOrientationLandscapeLeft</string>
            <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>
        <key>NSLocationAlwaysUsageDescription</key>
        <string>This app needs access to location when in the background.</string>
        <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
        <string>This app needs access to location when open and in the background.</string>
    </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

Has*_*ilT 6

问题来自 permission_handler插件。它包含用于处理应用程序所需的所有权限的代码。按照他们在 iOS 部分的设置过程,他们已经解释了如何删除您不在应用程序上使用的权限。

在此处输入图片说明

更新(2021 年 4 月)


有一个已知的问题是,按照他们的设置程序将不适用于permission_handlerFlutter 2 的最新版本。您必须手动将所有权限添加到您的info.plist文件中。