由于缺少NSCalendarsUsageDescription,iTunes Connect上传被无效的二进制文件拒绝

时间:2016-09-11 19:47:57

标签: ios ios10

我尝试使用XCode 8上传现有应用的更新。上传后我收到了这封电子邮件:

  

"此应用尝试在不使用的情况下访问隐私敏感数据   描述。该应用的Info.plist必须包含一个   NSCalendarsUsageDescription键,其字符串值解释为   用户应用程序如何使用此数据。"

我了解iOS 10的新隐私政策以及如何添加所需的说明。我的问题是:我没有在我的应用中使用日历。

有没有办法找出为什么Apple认为我使用日历?也许它被Google的AdMobSDK使用了?

4 个答案:

答案 0 :(得分:15)

如果您使用EventKit框架,这可能会触发您从Apple收到的自动拒绝。一种解决方案是删除该框架。

许多广告SDK,例如Tapjoy(版本11.8.1之前)和AdMob,都将EventKit作为必需的框架。

如果您的应用程序中有EventKit框架,因为它对您的广告SDK是必要的,我已经看到通过对.plist文件进行以下修改来避免这种拒绝:

<key>NSCalendarsUsageDescription</key>
<string>Some ad content may access calendar</string>

答案 1 :(得分:14)

我已向Google发送了一封电子邮件,抱怨此问题,并希望在未来的AdMob SDK版本中得到解决。在此之前,您可以通过向info.plist添加NSCalendarsUsageDescription来解决此问题。我还必须对NSBluetoothPeripheralUsageDescription执行相同的操作。

编辑:非常重要的是还要添加NSPhotoLibraryUsageDescription,请参阅:https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/UmeVUDrcDaw

2016年9月18日更新:Google发布了版本7.11.0,无需使用任何这些版本。

答案 2 :(得分:1)

StephenZachary Drake's答案是正确的:)

就我而言,每次都会生成我的xcode项目,所以这里是一种使用PlistBuddy从命令行设置这些值的方法(我还需要NSCameraUsageDescription):

/usr/libexec/PlistBuddy -c "Add :NSCameraUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSCameraUsageDescription 'not used'" ./Info.plist

/usr/libexec/PlistBuddy -c "Add :NSCalendarsUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSCalendarsUsageDescription 'Some ad content may access calendar'" ./Info.plist

/usr/libexec/PlistBuddy -c "Add :NSPhotoLibraryUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSPhotoLibraryUsageDescription 'Some ad content may access photo library'" ./Info.plist

答案 3 :(得分:0)

使用Xcode V9和构建目标IOS 10.0,我必须将其添加到local.plist而不是主应用程序plist中:

 {
     "NSCalendarsUsageDescription" = "This App needs to use your calendar";
 }