App Store Connect拒绝发布一个应用并显示“Info.plist中缺少Purpose String”,但该应用程序不需要这些权限。

6
我刚刚完成了一个iOS App Store捆绑上传,但因以下原因被拒绝:
ITMS-90683:Info.plist文件缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。 应用程序的Info.plist文件应包含一个NSContactsUsageDescription键,其中包含一个用户可见的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。 从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。 如果您使用外部库或SDK,则可能引用需要目的字符串的API。 即使您的应用程序不使用这些API,仍需要目的字符串。 您可以联系库或SDK的开发人员,并请求发布不包含API的版本。 了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
ITMS-90683:Info.plist文件缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。 应用程序的Info.plist文件应包含一个NSCalendarsUsageDescription键,其中包含一个用户可见的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。 从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。 如果您使用外部库或SDK,则可能引用需要目的字符串的API。 即使您的应用程序不使用这些API,仍需要目的字符串。 您可以联系库或SDK的开发人员,并请求发布不包含API的版本。 了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
ITMS-90683:Info.plist文件缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。 应用程序的Info.plist文件应包含一个NSAppleMusicUsageDescription键,其中包含一个用户可见的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。 从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。 如果您使用外部库或SDK,则可能引用需要目的字符串的API。 即使您的应用程序不使用这些API,仍需要目的字符串。 您可以联系库或SDK的开发人员,并请求发布不包含API的版本。 了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
ITMS-90683:Info.plist文件缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。 应用程序的Info.plist文件应包含一个NSMotionUsageDescription键,其中包含一个用户可见的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。 从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。 如果您使用外部库或SDK,则可能引用需要目的字符串的API。 即使您的应用程序不使用这些API,仍需要目的字符串。 您可以联系库或SDK的开发人员,并请求发布不包含API的版本。 了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
ITMS-90683:Info.plist文件缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。 应用程序的Info.plist文件应包含一个NSSpeechRecognitionUsageDescription键,其中包含一个用户可见的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。 从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。 如果
这是一个Flutter应用程序。
它需要的权限包括:NSContactsUsageDescriptionNSCalendarsUsageDescriptionNSAppleMusicUsageDescriptionNSMotionUsageDescriptionNSSpeechRecognitionUsageDescription。但我们的应用程序不使用联系人、日历、苹果音乐、运动检测或语音识别。
我知道如何修复这些问题以使提交工作正常进行,但我不明白为什么苹果认为我们的应用程序需要这些权限。
为什么App Store Connect认为应用程序需要这些权限?
有没有办法查看它认为应用程序需要哪些权限,以及为什么?

Info.plist

<?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>

注意:我们的应用程序使用以下软件包: crypto: 2.1.4 http: ^0.12.0+4 sqflite: ^1.3.0 path_provider: ^1.6.7 json_schema: ^2.2.1 flutter_map: ^0.8.2 user_location: ^0.1.2 permission_handler: ^5.0.0+hotfix.4 xml: 3.6.1 poly: ^1.0.7+2 audioplayers: ^0.15.0 flutter_slidable: ^0.5.4 carousel_slider: ^2.1.0 cupertino_icons: ^0.1.2 - kris
1
您能添加您的 info.plist 文件内容吗?看起来缺少了一些必需的 string 标签用于相应的 key 标签。 - void
@Timilehin Jegede,你说得对。你可以为此添加价值。info.plist文件位于IOS模块(ios/Runner/info.plist)中,或者你可以打开Xcode并搜索Info.plist,添加一些“隐私 - ...”你缺少的内容。 - Son Pham
@TimilehinJegede 您是正确的,这是修复提交所需的内容,但这不是我要问的 --- 我想知道为什么 App Store Connect 认为我的应用需要这些权限。 - kris
@TimilehinJegede 我现在已经将我的 info.plist 添加到问题中了。我没有看到任何需要这些权限的内容。 - kris
1个回答

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

enter image description here

更新(2021年4月)


已知一个问题,按照他们的设置步骤无法与最新版本的permission_handler和Flutter 2一起使用。您必须手动将所有权限添加到您的info.plist文件中。


在我的情况下,我将所有权限值都设置为0(例如“PERMISSION_EVENTS=0”),所有其他错误都已解决。但是日历事件仍然显示为错误。因此,即使我没有在应用程序中使用日历,我也必须在我的info.plist文件中指定NSCalendarsUsageDescription以消除此错误。希望这可以帮助某些人。很奇怪permission_handler插件会有这样的问题。希望他们在即将推出的任何版本中修复它。 - Arun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接