由于缺少info.plist密钥

时间:2017-03-09 13:47:34

标签: ios cocoapods itunesconnect

我的应用因缺少info.plist密钥而被拒绝。

  

缺少Info.plist键 - 此应用尝试访问隐私敏感   没有使用说明的数据。应用程序的Info.plist必须包含   NSPhotoLibraryUsageDescription键,其字符串值解释为   用户应用程序如何使用此数据。

我知道如何“修复”它。它就像听起来一样简单,只需将NSPhotoLibraryUsageDescription添加到我的info.plist中,并附上它的用途说明。

问题是我没有使用任何应该触发此要求的内容。 我不想在不知道的含义的情况下添加此说明。

我能想到的唯一可能导致此问题的是我通过CocoaPods使用的外部框架之一与它有关。

这是我的podfile:

def myPods
    pod 'HockeySDK',          '4.1.2'
    pod 'ReactiveCocoa',      '2.4.7'
    pod 'TTTAttributedLabel', '2.0.0'
    pod 'GoogleMaps',         '2.1.0'
    pod 'GoogleAnalytics',    '3.17.0'
end

target 'MainApp' do
    myPods
end

target 'BetaApp' do
    myPods
    pod 'Instabug', '7.0.5'
end

我知道Instabug需要此密钥(以及麦克风使用的密钥)这一事实,但我并不总是包括Instabug,如您所见。 假设我有两个目标; MainAppBetaApp。他们每个人都有自己的info.plist。在BetaApp的info.plist中,我已经包含了所需的密钥。在MainApp中,我没有包含它们,因为MainApp中没有使用Instabug。 当我现在尝试将MainApp上传到AppStore时,我得到了拒绝。 我也尝试完全删除Instabug-pod(即使它只存在于BetaApp中),它仍然发生在MainApp中。

我之前从未在MainApp中遇到过这种拒绝(它不是一个新的应用程序,只是一个更新)。 我认为我自上次发布以来已经更新了GoogleMaps,也许还有一些其他人,但我不知道如何找出为什么Apple认为我必须实现NSPhotoLibraryUsageDescription

有没有办法找出我的应用的哪个部分触发了此要求?

假设如果我实施密钥,它们将永远不会被触发,并且永远不会提示用户允许访问照片库(因为我没有尝试访问的代码)用户的照片库),但我想知道为什么会这样,我不愿意在我知道之前添加它..

1 个答案:

答案 0 :(得分:5)

我建议您按照this answer

中的说明操作

我理解,无论如何添加NSPhotoLibraryUsageDescription密钥可能听起来很愚蠢,但Apple方面的二进制验证是您无法控制的过程,因此添加此密钥更简单。

至于背景原因,我相信,Apple验证器会在二进制文件中查找UIImagePickerController用法,而不仅仅是AssetsLibraryPhotos框架链接。因此,如果您想要提交您的应用并提供批准后,您可以对此进行消毒,或者只是添加所需的密钥。

如果您认为,您不使用它,请查看ReactiveCocoa/UI/UIImagePickerController+RACSignalSupport.m,因此,除非您尚未准备好使用自定义ReactiveCocoa或避免使用它,否则您将不得不处理{{ 1}}