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

问题描述 投票:15回答:4

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

“此应用程序尝试在没有使用说明的情况下访问隐私敏感数据。应用程序的Info.plist必须包含一个NSCalendarsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。”

我知道iOS 10的新隐私政策以及如何添加所需的描述。我的问题是:我没有在我的应用程序中使用日历。

有没有办法找出为什么Apple认为我使用日历?也许它是由谷歌的AdMobSDK使用的?

ios ios10
4个回答
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,无需使用其中任何一项。


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
投票

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

0
投票

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

 {
     "NSCalendarsUsageDescription" = "This App needs to use your calendar";
 }
© www.soinside.com 2019 - 2024. All rights reserved.