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


79

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

要处理您的交货,必须更正以下问题:

这个应用程式尝试存取没有使用说明的隐私权敏感资料。应用程序的Info.plist必须包含NSCameraUsageDescription键,该键具有字符串值,该字符串值向用户说明应用程序如何使用此数据。

完成所需的更正后,您可以重新交付更正后的二进制文件。

问候,

App Store团队

我正在使用google GoogleSignIn。我没有使用Firebase,但是在将GoogleSignIn与可可豆荚一起安装时,我在日志中看到它自动安装了Firebase。

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

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


看起来Google正在开发解决方案:groups.google.com/forum/#!category
Stefan

Answers:


94

这是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>

2
这似乎丢失了我所抱怨的“ NSCameraUsageDescription”
Pranoy C

在其SDK的7.11.0版中,不再需要此功能,只需对其进行更新即可。

你怎么做到这一点?Info.plist似乎是二进制文件。我能读懂键名,但它们周围都是一堆废话。
Brian Knoblauch

我将此东西添加到plist文件中,但仍然面临相同的问题。。。在构建过程后仍然收到相同的邮件。。
Naman Vaishnav

28

在iOS 10中,如果您在应用中使用相机或照片库,则需要添加下图提到的密钥在此处输入图片说明


13

在iOS 10中,Apple要求在Info.plist中定义需要弹出窗口的所有功能的使用说明。参见http://useyourloaf.com/blog/privacy-settings-in-ios-10/

在Beta版程序中,如果未设置用法说明,则应用程序将在显示提示时崩溃。

看起来iTunes Connect验证工具已更改为在应用程序中查找对与权限相关对象关联的类的引用。如果没有Info.plist条目,则它们拒绝二进制文件。

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

但是,AdMob似乎引用了日历,因此我提交的使用广告且未使用日历本身的应用无法提交。谢谢谷歌!


1
你是对的。Google的AdMob和GoogleSignIn框架会自动安装firebase,它会使用此类权限,即使该应用程序从未使用相机也是如此。定义NSCameraUsageDescription后,它让我毫无问题地提交,希望该应用程序不会提示用户,因此他们也不会看到文本。但是谷歌真的应该解决这个问题,这听起来像是通过摄像机进行间谍活动的某种超级阴暗的东西。
Pranoy C

9

您必须获得Info.Plist中Camera的许可。转到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://stackoverflow.com/a/39476283/1634905 ,其中列出了Google的官方解决方法。注意解决方法缺少一个额外的密钥,这也是必需的:NSCameraUsageDescription

我使用的解决方法:Google的AdMob和GoogleSignIn框架会自动安装firebase,即使该应用程序从不使用,它们也会使用此类权限。在中定义NSCameraUsageDescriptioninfo.plist,它让我毫无问题地提交,希望该应用程序不会提示用户,因此他们也不会看到文本。


2

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

在iOS 10中,某些使用权限说明已成为必填项。


3
你是对的。Google的AdMob和GoogleSignIn框架会自动安装firebase,它会使用此类权限,即使该应用程序从未使用过。定义NSCameraUsageDescription后,它让我毫无问题地提交,希望该应用程序不会提示用户,因此他们也不会看到文本。但是谷歌真的应该解决这个问题,这听起来像是通过摄像机进行间谍活动的某种超级阴暗的东西。
Pranoy C


0

如果您是ESRI的ArcGIS.framework,请确保添加此密钥。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.