提交应用程序时,iOS 10 GM发布错误“由于GoogleSignIn,AdMob,应用程序尝试访问隐私敏感数据而没有使用说明”

我刚开始面对iOS 10 GM版本的这个问题。 我收到一封电子邮件说:

要处理您的交付,必须纠正以下问题:

此应用程序尝试访问隐私敏感的数据,没有使用说明。 应用程序的Info.plist必须包含一个带有string值的NSCameraUsageDescription项,向用户解释应用程序如何使用此数据。

一旦所需的更正已经完成,您可以重新发送更正后的二进制文件。

问候,

App Store团队

我正在使用谷歌的GoogleSignIn。 我没有使用Firebase,但是使用cocoa pod安装GoogleSignIn时,我在日志中看到它自动安装了Firebase。

除了必须定义这些键之外,还有什么我们可以做的,因为我的应用程序与相机/照片等无关,因此我不希望用户认为我们正在使用它们。

我注意到其他人也面临这个问题: https : //forums.developer.apple.com/thread/62229

以下是Google完整解决方法的链接: https : //groups.google.com/d/msg/google-admob-ads-sdk/UmeVUDrcDaw/HIXR0kjUAgAJ

更多的信息在这个链接,但TL; DR版本是你必须添加三件物品给你的plist:

<key>NSCalendarsUsageDescription</key> <string>Advertisement would like to create a calendar event.</string> <key>NSPhotoLibraryUsageDescription</key> <string>Advertisement would like to store a photo.</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>Advertisement would like to use bluetooth.</string> 

在iOS 10中,如果您在应用程序中使用相机或照片库,则需要添加下面提到的关键字 在这里输入图像描述

在iOS 10中,苹果已经要求在Info.plist中为需要popup窗口的任何function定义使用说明。 请参阅http://useyourloaf.com/blog/privacy-settings-in-ios-10/

在testing版程序中,应用程序在显示提示时(如果没有设置使用说明)会崩溃。

它看起来像iTunes连接validation工具已被更改为查找应用程序中的参考与权限相关的对象相关联的类。 如果没有Info.plist条目,则拒绝该二进制文件。

我在自己的一个应用程序中看到了这一点,在库中有一个老帮手方法,用来检测相机是否存在。 即使应用程序从未调用过该方法,但它被链接到我的二进制文件,因为我在同一个文件中使用了另一种方法。 该应用程序没有使用相机,所以没有定义Info.plist条目。 它被拒绝了。 我只是删除了我的帮手方法,并将支票移动到其他使用它的应用程序。

但是,AdMob似乎对日历有引用,所以我没有使用广告,也没有使用日历本身的应用程序无法提交。 感谢Google!

请参阅Info.plist中所有权限的全部权限参考教程

您必须获得Info.Plist中相机的许可。 转到Info.plist并添加下面的代码。

 Key : Privacy - Camera Usage Description Value : $(PRODUCT_NAME) camera use 

看到这个参考: 在这里输入图像描述

编辑:请参阅上面的答案https://stackoverflow.com/a/39476283/1634905其中列出了官方解决方法谷歌。; 请注意,解决方法是缺less一个额外的键也将需要: NSCameraUsageDescription

我使用的解决方法解决scheme:Google的AdMob和GoogleSignIn框架会自动安装使用这种权限的firebase,即使应用程序从不这样做。 在info.plist定义了NSCameraUsageDescription之后,我们提交时没有问题,希望应用程序不会提示用户,这样他们也不会看到文本。

这里是所有的隐私密钥,我们需要手动将它们添加到Info.plist简短的说明。

 • Bluetooth Sharing – NSBluetoothPeripheralUsageDescription • Calendar – NSCalendarsUsageDescription • CallKit – NSVoIPUsageDescription • Camera – NSCameraUsageDescription • Contacts – NSContactsUsageDescription • Health – NSHealthShareUsageDescription & NSHealthUpdateUsageDescription • HomeKit – NSHomeKitUsageDescription • Location – NSLocationUsageDescription, NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription • Media Library – NSAppleMusicUsageDescription • Microphone – NSMicrophoneUsageDescription • Motion – NSMotionUsageDescription • Photos – NSPhotoLibraryUsageDescription • Reminders – NSRemindersUsageDescription • Speech Recognition – NSSpeechRecognitionUsageDescription • SiriKit – NSSiriUsageDescription • TV Provider – NSVideoSubscriberAccountUsageDescription 

Google框架是否可能使用某些需要用户权限(即用户位置)的额外系统框架,并忘记在.plist文件中添加相关描述! 仔细检查一下。

一些使用权限描述在iOS 10中成为强制性的。

在7.11.0修复https://firebase.google.com/docs/admob/release-notes

确保您更新SDK

如果你是ESRI的ArcGIS.framework,确保你添加了这个键。