我刚刚完成了一个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应用程序。
它需要的权限包括:
我知道如何修复这些问题以使提交工作正常进行,但我不明白为什么苹果认为我们的应用程序需要这些权限。
为什么App Store Connect认为应用程序需要这些权限?
有没有办法查看它认为应用程序需要哪些权限,以及为什么?
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应用程序。
它需要的权限包括:
NSContactsUsageDescription
、NSCalendarsUsageDescription
、NSAppleMusicUsageDescription
、NSMotionUsageDescription
和NSSpeechRecognitionUsageDescription
。但我们的应用程序不使用联系人、日历、苹果音乐、运动检测或语音识别。我知道如何修复这些问题以使提交工作正常进行,但我不明白为什么苹果认为我们的应用程序需要这些权限。
为什么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>
info.plist
文件内容吗?看起来缺少了一些必需的string
标签用于相应的key
标签。 - void