应用因缺少info.plist键而被拒绝

Sti*_*Sti 2 itunesconnect ios cocoapods

由于缺少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
Run Code Online (Sandbox Code Playgroud)

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

我以前从未在MainApp中遇到过这种拒绝(这不是一个新应用,只是一个更新)。我认为自上一个版本以来,我已经更新了GoogleMaps,也许还有其他一些,但是我不知道如何找出Apple认为我必须实施的原因NSPhotoLibraryUsageDescription

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

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

Pet*_*nev 5

我建议您按照此答案中的说明进行操作

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

作为背景的原因,我相信,苹果的验证会在二,不仅使用的UIImagePickerController AssetsLibraryPhotos框架链接。因此,如果您想让您的应用程序提交并获得批准,则可以对此进行清理或仅添加必需的密钥。

如果您认为自己不使用它,请看一下ReactiveCocoa/UI/UIImagePickerController+RACSignalSupport.m,因此,除非您不准备使用自定义的ReactiveCocoa或避免使用它,否则必须处理NSPhotoLibraryUsageDescription

  • 谢谢,您说得很对!我实际上是几天前才发现的,只是忘了在此处添加它作为答案。我删除了“ UIImagePickerController + RACSignalSupport”文件(包括“ +”),并将新的二进制文件重新上传到iTunes,没有拒绝。现在,我已经确定了拒绝的原因是我很高兴提供NSPhotoLibraryUsageDescription,因为我确定永远不会提示它(而不是从cocoapod中手动删除和编辑多个文件,而不仅仅是为了我的缘故)。好发现! (2认同)