我尝试使用XCode 8上传现有应用的更新。上传后我收到了这封电子邮件:
"此应用尝试在不使用的情况下访问隐私敏感数据 描述。该应用的Info.plist必须包含一个 NSCalendarsUsageDescription键,其字符串值解释为 用户应用程序如何使用此数据。"
我了解iOS 10的新隐私政策以及如何添加所需的说明。我的问题是:我没有在我的应用中使用日历。
有没有办法找出为什么Apple认为我使用日历?也许它被Google的AdMobSDK使用了?
答案 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)
Stephen和Zachary 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";
}