【发布时间】:2017-03-09 13:47:33
【问题描述】:
由于缺少 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,如您所见。
假设我有两个目标; MainApp 和 BetaApp。他们每个人都有自己的info.plist。在 BetaApp 的 info.plist 中,我包含了所需的密钥。在 MainApp 中我没有包含它们,因为在 MainApp 中没有使用 Instabug。
当我现在尝试将 MainApp 上传到 AppStore 时,我收到了此拒绝。
我也尝试过完全移除 Instabug-pod(即使它只是存在于 BetaApp 中),它仍然会发生在 MainApp 中。
我以前从未在 MainApp 中遇到过这种拒绝(这不是一个新应用,只是一个更新)。
我认为自上次发布以来我已经更新了 GoogleMaps,也许还有其他一些,但我不知道如何找出为什么 Apple 认为我必须实施 NSPhotoLibraryUsageDescription。
有没有办法找出我的应用的哪一部分触发了这个要求?
我假设如果我实现这些键,它们将永远不会被真正触发,并且永远不会提示用户允许访问照片库(因为我没有尝试访问的代码用户的照片库),但我想知道为什么会发生这种情况,我不愿意在我知道之前添加它..
【问题讨论】:
-
我可以看到一个 pod 规范 HockeySDK 默认使用 AssetsLibrary 和 Photos 框架
-
@Sergey 我在cocoapods.org/pods/HockeySDK 也注意到了这一点,但正如 4.1.1 所述,我必须添加 info.plist 键
If you are using an older version of the SDK。当我使用 4.1.2 时,我希望我清楚这一点.. -
如果您不使用所有功能,您可以将您的 pod 文件更改为此 pod "HockeySDK", :subspecs => ['CrashOnlyLib']使用这个框架。
-
我唯一能想到的是苹果搜索应用程序的二进制文件(它是字符串,以获取选择器等)以查找 black-listed 类/消息 --也许这个列表不是最新的(所以他们没有意识到新的曲棍球不再使用该功能)
-
@AndreasOetjen 我认为是 HockeySDK 开发人员的错误,默认规范不包含 Photo 框架,但该规范包含 AssetsLibrary 框架。 github.com/bitstadium/HockeySDK-iOS/issues/402
标签: ios cocoapods app-store-connect