2017-03-09 95 views
2

由于缺少info.plist密钥,我的应用程序被拒绝。由于缺少info.plist密钥而被拒绝的应用程序

Missing Info.plist key - 此应用尝试访问隐私敏感的 数据,但没有使用说明。应用程序的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中,我没有包含它们,因为InstaMag未在MainApp中使用。 当我现在尝试将MainApp上传到AppStore时,我得到了这种拒绝。 我也尝试完全移除Instabug-pod(即使它仅存在于BetaApp中),并且它仍然发生在MainApp中。

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

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

假设,如果我实现了钥匙,他们将永远不会真正被触发,用户绝不会被提示允许访问照片库(因为我没有代码,尝试访问用户的照片库),但我想知道为什么发生这种情况,我不愿意增加它之前,我知道..

+0

作为我可以看到一个pod规范** HockeySDK **使用** AssetsLibrary **和** Photos **框架的默认 – Sergey

+0

@Sergey我注意到,以及在https://cocoapods.org/pods/HockeySDK,但因为它在** 4.1.1 **处声明 - 在那里,我必须添加info.plist键'如果您使用的是旧版本的SDK'。正如我使用** 4.1.2 **,我期望我清楚这一点.. – Sti

+0

如果你不使用所有的功能,你可以改变你的pod文件到这个** pod“HockeySDK”,: subspecs => ['CrashOnlyLib'] **本规范不使用这个框架。 – Sergey

回答

4

我建议你遵循this answer

发现说明我明白这可能听起来很愚蠢,因为没有理由添加NSPhotoLibraryUsageDescription密钥,然而苹果方面的二进制验证是这个过程你没有控制权,所以只需添加这个键就简单了。

至于背景的原因,笔者认为,苹果验证器在二进制文件中寻找UIImagePickerController的用法,不仅仅是AssetsLibrary或者Photos框架的链接。所以如果你想让你的应用程序提交&批准,你可以对此进行消毒,或者只需添加必需的密钥。

如果你觉得,你不使用它,看看ReactiveCocoa/UI/UIImagePickerController+RACSignalSupport.m,所以,除非你是不是准备有一个自定义的ReactiveCocoa或避免它的使用,你必须处理NSPhotoLibraryUsageDescription

+2

谢谢你,你是非常正确的!我几天前才发现这件事,只是忘了在这里添加它作为答案。我删除了'UIImagePickerController + RACSignalSupport'文件(+ includes),并将新的二进制文件重新上传到iTunes,并且没有被拒绝。现在我知道拒绝背后的原因是我对提供'NSPhotoLibraryUsageDescription'非常满意,因为我知道它绝不会被提示(而不是手动删除和编辑cocoapod中的多个文件,而不仅仅是为了我的缘故)。好找! – Sti

相关问题