我正在运行我的项目,这是以前工作正常,但更新我的xcode后,我的应用程序崩溃,并给出这个错误:此应用已崩溃,因为它尝试访问不带使用说明的隐私敏感数据。应用的Info.plist必须包含带有字符串值的NSCameraUsageDescription项,以向用户解释应用如何使用此数据
mbyulnm01#
iOS 10中的隐私设置
iOS 10的一个显著变化是,任何对私人数据的访问都必须提前声明,否则你的App将崩溃。一旦你连接到iOS 10,你必须声明对任何用户私有数据类型的访问权限。你可以通过向应用的Info.plist添加一个用法键和一个用途字符串来实现这一点。算作私有数据的框架列表很长
通讯录、日历、备忘录、照片、蓝牙共享、麦克风、照相机、位置、健康、HomeKit、媒体库、Motion、CallKit、语音识别、SiriKit、电视提供商。
您需要将NSCameraUsageDescription放入您的plist中。喜欢
<key>NSCameraUsageDescription</key> <string>$(PRODUCT_NAME) uses Cameras</string>
例如
检查所有使用说明here。
6uxekuva2#
我通过在info.plist中添加以下条目,在模拟器上解决了这个问题
info.plist
我还没有在使用相机的真实的设备上尝试过以上操作,我认为您也必须输入以下值,
我正在使用iOS 10.2
n6lpvg4x3#
@Anbu的答案有一个额外的空格,这会引发异常。Info.plist条目应该如下所示
<key>NSCameraUsageDescription</key> <string>$(PRODUCT_NAME) uses camera</string>
eimct9ow4#
我的甚至不会提示我。我插入了SKAdNetworkItems键和NSUserTrackingUsageDescription键。我还有多个用于本地化的info.plist,所有这些都是我用这些键更新的。我运行了ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in函数,它崩溃了。崩溃日志显示:“此应用已崩溃,因为它尝试访问不带使用说明的隐私敏感数据。应用的Info.plist必须包含NSUserTrackingUsageDescription项,该项具有向用户解释应用如何使用此数据的字符串值。”但我从来没有收到过请求跟踪权限的提示
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
extension ViewController: GADFullScreenContentDelegate { func loadVideoAd() { func load(){ let request = GADRequest() GADInterstitialAd.load(withAdUnitID: GoogleAdKeys.Interstitial, request: request, completionHandler: { ad, error in if let error = error { print("Failed to load interstitial ad with error: \(error.localizedDescription)") return } self.interstitial = ad! self.interstitial.fullScreenContentDelegate = self }) } if #available(iOS 14, *) { ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in switch status{ case .notDetermined: break case .restricted: break case .denied: break case .authorized: load() @unknown default: break } }) } else { // Fallback on earlier versions load() } } func playVideoAd() { interstitial.present(fromRootViewController: self) } }
6vl6ewon5#
如果您使用iOS 10 SDK构建应用,则需要新的隐私设置。如果您要访问任何隐私敏感数据,则必须在Info.plist文件中提供“目的字符串”。“目的字符串”只是一条消息,用于解释应用为何需要访问在请求权限时显示给用户的特定服务(就像我们在iOS 8之后对定位服务所做的那样)。不提供此“目的字符串”可能会导致应用崩溃。
5条答案
按热度按时间mbyulnm01#
iOS 10中的隐私设置
iOS 10的一个显著变化是,任何对私人数据的访问都必须提前声明,否则你的App将崩溃。
一旦你连接到iOS 10,你必须声明对任何用户私有数据类型的访问权限。你可以通过向应用的Info.plist添加一个用法键和一个用途字符串来实现这一点。算作私有数据的框架列表很长
通讯录、日历、备忘录、照片、蓝牙共享、麦克风、照相机、位置、健康、HomeKit、媒体库、Motion、CallKit、语音识别、SiriKit、电视提供商。
您需要将NSCameraUsageDescription放入您的plist中。
喜欢
例如
检查所有使用说明here。
6uxekuva2#
我通过在
info.plist
中添加以下条目,在模拟器上解决了这个问题我还没有在使用相机的真实的设备上尝试过以上操作,我认为您也必须输入以下值,
我正在使用iOS 10.2
n6lpvg4x3#
@Anbu的答案有一个额外的空格,这会引发异常。Info.plist条目应该如下所示
eimct9ow4#
我的甚至不会提示我。我插入了SKAdNetworkItems键和NSUserTrackingUsageDescription键。我还有多个用于本地化的info.plist,所有这些都是我用这些键更新的。
我运行了
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
函数,它崩溃了。崩溃日志显示:“此应用已崩溃,因为它尝试访问不带使用说明的隐私敏感数据。应用的Info.plist必须包含NSUserTrackingUsageDescription项,该项具有向用户解释应用如何使用此数据的字符串值。”但我从来没有收到过请求跟踪权限的提示
6vl6ewon5#
如果您使用iOS 10 SDK构建应用,则需要新的隐私设置。如果您要访问任何隐私敏感数据,则必须在Info.plist文件中提供“目的字符串”。
“目的字符串”只是一条消息,用于解释应用为何需要访问在请求权限时显示给用户的特定服务(就像我们在iOS 8之后对定位服务所做的那样)。不提供此“目的字符串”可能会导致应用崩溃。