App Store错误连接:“ ITMS-90683:Info.plist中缺少目的字符串”和“ ITMS-90078:缺少推送通知权利” [Flutter]

时间:2020-05-16 15:23:59

标签: ios xcode flutter app-store-connect info.plist

我正在尝试在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,NSSpeechRecognitionUsageDescriptionNSLocationAlways的描述。但是,在使用Flutter框架构建的应用程序中,我们没有专门使用这些权限。

我的问题如下:

  1. 当我不使用其中任何一个时,如何解决ITMS-90683错误 在我们的应用程序中明确拥有权限,以便可以将构建版本 上传成功以供审核?
  2. 自此以来,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>

我们非常感谢您的帮助。预先谢谢你!

我的项目的“签名和功能”屏幕截图: enter image description here

从Xcode成功上传构建版本的屏幕截图: enter image description here

正在处理新的构建版本的App Store Connect的屏幕截图: enter image description here

启用了Apple Push Services证书的Apple Developer Portal屏幕截图,该版本的早期版本使用该应用程序: enter image description here

有关错误的来自App Store Connect的电子邮件:

亲爱的开发人员,

我们确定了您的应用最近交付的一个或多个问题, [APP NAME] 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 Push Notification服务,但该应用程序 签名的权利不包括“ aps-environment” 权利。如果您的应用程序使用Apple Push Notification服务, 确保在的“推送通知”中启用了您的应用ID Provisioning Portal,然后使用 包含“ aps环境”的分发供应配置文件 权利。 Xcode不会自动复制aps环境 在构建时来自配置文件的权利。此行为是 故意的。要使用此权利,请启用“推送通知” 在项目编辑器的“功能”窗格中,或手动添加 您的权利文件的权利。有关更多信息,请参见 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团队

1 个答案:

答案 0 :(得分:2)

当我未在我们的应用中明确使用这些权限中的任何权限时,如何解决ITMS-90683错误,以便可以成功上传构建版本以供审核?

如果您实际上正在使用这些功能,则应用程序审核的这一部分无关紧要。他们检查的只是该应用程序是否具有执行此操作的代码(您显然这样做了)并附带必需的目的字符串。要解决此问题,您基本上有两个选择:

  • 弄清楚应用程序中哪些代码/库/所包含的所有内容可以带走并摆脱这种负担,或者
  • 随身携带行李并提供所需的目的字符串。

自从以来,Apple Push Services的证书已经添加到Apple Developer门户中,我该如何修复ITMS-90078并将该应用提交审核?

问题不在于证书,而是与您未显示的应用程序的权利有关。让您在应用程序中启用推送通知权利。