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

81
我最近在使用iOS 10 GM版本时遇到了一个问题,收到一封邮件如下:
为处理你的交付,必须纠正以下问题:
此应用程序试图访问敏感数据而没有使用说明。应用程序的Info.plist必须包含NSCameraUsageDescription键,其中包含字符串值,解释应用程序如何使用此数据。
一旦进行了必要的更正,然后就可以重新发送更正的二进制文件。
谢谢,
App Store团队
我正在使用GoogleSignIn,没有使用Firebase,但是当使用cocoa pods安装GoogleSignIn时,日志中显示它自动安装了Firebase。
除了定义这些键之外,我们是否有其他解决方法,因为我的应用程序与相机/照片等无关,因此我不希望用户认为我们在使用它们。
我注意到其他人也遇到了这个问题:https://forums.developer.apple.com/thread/62229

看起来谷歌正在解决方案:https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/y-IxErXawxg - Stefan
1
固定在7.11.0版本 https://firebase.google.com/docs/admob/release-notes - ayalcinkaya
9个回答

96

这里有谷歌提供的一个完整解决方案链接:https://groups.google.com/d/msg/google-admob-ads-sdk/UmeVUDrcDaw/HIXR0kjUAgAJ

更多信息请查看该链接,简要版就是您需要将三个项目添加到您的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>

2
这似乎缺少“NSCameraUsageDescription”,我的应用程序也在抱怨。 - sudoExclaimationExclaimation
使用他们的SDK 7.11.0版本,这不再是必需的,只需要更新即可正常工作。 - user4341849
你怎么做到的?Info.plist看起来是一个二进制文件。我可以读取键名,但它们被一堆无意义的字符包围着。 - Brian Knoblauch
我已经将这个东西添加到了plist文件中,但仍然面临相同的问题……在构建过程之后仍然收到相同的邮件。 - Naman Vaishnav

28
在iOS 10中,如果您的应用程序使用相机或照片库,则需要添加下面图片中提到的键。 enter image description here

13
在iOS 10中,如果需要弹出窗口的任何功能都必须在Info.plist中定义使用说明。请参见http://useyourloaf.com/blog/privacy-settings-in-ios-10/
在测试程序期间,如果没有设置使用说明,则应用程序在显示提示时会崩溃。
看起来iTunes Connect验证工具已更改为查找与权限相关对象相关联的类的引用。如果没有Info.plist条目,则会拒绝该二进制文件。
我在自己的一个应用程序中看到了这种情况,其中我在库中有一个旧的辅助方法来检测相机是否存在。即使应用程序从未调用该方法,它也被链接到我的二进制文件中,因为我在同一文件中使用了另一种方法。该应用程序没有使用相机,因此没有定义Info.plist条目。因此,它被拒绝了。我只需删除我的辅助方法并将检查移动到实际使用该方法的其他应用程序中即可解决问题。
然而���AdMob似乎涉及日历,因此我有一个使用广告但本身不使用日历的应用程序无法提交。谢谢谷歌!

1
你是正确的。Google的AdMob和GoogleSignIn框架会自动安装Firebase,即使应用程序从未使用相机权限。在我定义了NSCameraUsageDescription之后,它让我顺利提交,希望应用程序不会提示用户,因此他们也看不到文本。但是Google真的应该解决这个问题,这听起来像是通过相机进行监视的超级可疑的事情。 - sudoExclaimationExclaimation

11

你需要在Info.plist中授予相机权限。前往Info.plist并添加以下代码。

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

参见此引用: 输入图像描述


5

这里是所有的隐私键,我们需要手动将它们添加到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

CallKit 不需要授权或使用说明。 - user102008

3

编辑:请参考上面的答案https://dev59.com/GFkS5IYBdhLWcg3w25sM#39476283,其中列出了Google官方的解决方法。请注意,解决方法还缺少一个必需的关键字:NSCameraUsageDescription

我使用的解决方法:AdMob和GoogleSignIn的Google框架会自动安装Firebase,即使应用程序从未使用过这些权限。在info.plist中定义NSCameraUsageDescription后,让我可以无问题地提交,希望应用程序永远不会提示用户,因此他们也不会看到文本。


2

谷歌框架是否可能使用一些需要用户权限(例如用户位置)的额外系统框架,而您忘记在.plist文件中添加相关描述!请仔细检查。

iOS 10中,某些使用权限描述已成为强制性要求。


3
您说得对。Google的AdMob和GoogleSignIn框架会自动安装Firebase,而Firebase使用了这些权限,即使应用程序从未使用过这些权限。当我定义了NSCameraUsageDescription后,就可以提交应用程序而没有问题了,希望该应用程序永远不需要提示用户,因此他们也不会看到该文本。但是Google应该修复这个问题,这听起来像是某种通过相机进行监视的超级可疑的事情。 - sudoExclaimationExclaimation

2

0

如果你正在使用ESRI的ArcGIS.framework,请确保添加此密钥。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接