【发布时间】:2026-02-10 16:00:01
【问题描述】:
我正在尝试在 App Store Connect 上上传我们应用的新版本。在我们的旧版本中,我们已经在使用推送通知,因此,Apple Push Services 的证书已经激活并添加到 Apple Developer Portal 中(如下面的屏幕截图所示)。当我们将以前版本的应用程序上传到 App Store Connect 时,没有任何问题。但是,现在当我尝试使用 Xcode 将我们的新版本应用程序上传到 App Store Connect 时,Xcode 端没有显示错误并且上传成功(如下图所示)。
当我返回 App Store Connect 检查我上传的构建版本以便提交审核时,它表示正在处理构建(如下面的屏幕截图所示)。一段时间后,我收到一封来自 App Store Connect 的电子邮件,提到我们的构建版本存在以下问题(详细的电子邮件在此问题的末尾提供):
ITMS-90683:Info.plist 中缺少目的字符串
ITMS-90078:缺少推送通知权利
对于我们应用程序的最新构建版本,它提到 Info.plist 的 ITMS-90683 错误(如下所示)缺少 NSContactsUsageDescription、NSCalendarsUsageDescription、NSAppleMusicUsageDescription、NSMotionUsageDescription、NSSpeechRecognitionUsageDescription、NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription的描述。但是,在我们使用 Flutter 框架构建的应用中,我们并没有专门使用这些权限。
我的问题如下:
- 当我不使用其中任何一个时,如何修复 ITMS-90683 错误 在我们的应用程序中显式授予权限,以便构建版本可以是 上传审核成功了吗?
- 既然 Apple Push Services 的证书已添加到 Apple Developer 门户,我该如何修复 ITMS-90078 并提交应用以供审核?
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>AppName</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Need to upload image</string>
<key>NSMicrophoneUsageDescription</key>
<string>Need to upload image</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Need to upload image</string>
<key>UILaunchStoryboardName</key>
<string>Launch Screen2</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/>
</dict>
</plist>
非常感谢任何帮助。提前谢谢!
正在处理新构建版本的 App Store Connect 的屏幕截图:
启用了 Apple 推送服务证书的 Apple Developer Portal 的屏幕截图,该应用程序的先前版本使用该证书:
来自 App Store Connect 的关于错误的电子邮件:
尊敬的开发者,
我们发现您的应用最近交付的一个或多个问题, [应用程序名称] 2.0.1 (4)。请更正以下问题,然后上传 再次。
ITMS-90683:Info.plist 中缺少用途字符串 - 您的应用程序代码 引用一个或多个访问敏感用户数据的 API。该应用程序的 Info.plist 文件应该包含一个 NSContactsUsageDescription 键和一个 面向用户的目的字符串清楚完整地解释了为什么您的 应用程序需要数据。从 2019 年春季开始,所有提交到 访问用户数据的 App Store 必须包含目的 细绳。如果您使用的是外部库或 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 年春季开始,所有应用程序都提交到 访问用户数据的 App Store 必须包含目的 细绳。如果您使用的是外部库或 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 年春季开始,所有应用程序都提交到 访问用户数据的 App Store 必须包含目的 细绳。如果您使用的是外部库或 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 年春季开始,所有提交到 访问用户数据的 App Store 必须包含目的 细绳。如果您使用的是外部库或 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 年春季开始,所有应用程序 提交到需要访问用户数据的 App Store 包括一个目的字符串。如果您使用的是外部库或 SDK, 他们可能会引用需要目的字符串的 API。当你的应用 可能不会使用这些 API,但仍需要目的字符串。你可以 联系库或 SDK 的开发人员并请求他们发布 不包含 API 的代码版本。了解更多 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
虽然您不需要解决以下问题,但我们希望 让您了解它们:
ITMS-90078:缺少推送通知权利 - 您的应用出现 向 Apple 推送通知服务注册,但应用程序 签名的权利不包括“aps-environment” 权利。如果您的应用使用 Apple Push Notification 服务, 确保您的 App ID 在 配置门户,并在使用 包含“aps-environment”的分发配置文件 权利。 Xcode 不会自动复制 aps-environment 在构建时配置配置文件的权利。这种行为是 故意的。要使用此权利,请启用推送通知 在项目编辑器的功能窗格中,或手动添加 您的权利文件的权利。有关详细信息,请参阅 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.
ITMS-90683:Info.plist 中缺少用途字符串 - 您的应用程序代码 引用一个或多个访问敏感用户数据的 API。该应用程序的 Info.plist 文件应该包含一个 NSLocationAlwaysUsageDescription 键 带有面向用户的目的字符串,清晰完整地解释 为什么您的应用需要数据。从 2019 年春季开始,所有应用均已提交 访问用户数据的 App Store 需要包含 目的字符串。如果您使用的是外部库或 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 文件应该包含一个 NSLocationWhenInUseUsageDescription 带有面向用户的目的字符串的键,清楚地解释和 完全为什么您的应用需要数据。从 2019 年春季开始,所有应用程序 提交到需要访问用户数据的 App Store 包括一个目的字符串。如果您使用的是外部库或 SDK, 他们可能会引用需要目的字符串的 API。当你的应用 可能不会使用这些 API,但仍需要目的字符串。你可以 联系库或 SDK 的开发人员并请求他们发布 不包含 API 的代码版本。了解更多 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
最好的问候,
App Store 团队
【问题讨论】:
标签: ios xcode flutter app-store-connect info.plist