iOS 10应用程序因尝试访问隐私敏感数据而崩溃

7ajki6be  于 2022-12-27  发布在  iOS
关注(0)|答案(5)|浏览(182)

我正在运行我的项目,这是以前工作正常,但更新我的xcode后,我的应用程序崩溃,并给出这个错误:
此应用已崩溃,因为它尝试访问不带使用说明的隐私敏感数据。应用的Info.plist必须包含带有字符串值的NSCameraUsageDescription项,以向用户解释应用如何使用此数据

mbyulnm0

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

6uxekuva

6uxekuva2#

我通过在info.plist中添加以下条目,在模拟器上解决了这个问题

我还没有在使用相机的真实的设备上尝试过以上操作,我认为您也必须输入以下值,

我正在使用iOS 10.2

n6lpvg4x

n6lpvg4x3#

@Anbu的答案有一个额外的空格,这会引发异常。Info.plist条目应该如下所示

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) uses camera</string>
eimct9ow

eimct9ow4#

我的甚至不会提示我。我插入了SKAdNetworkItems键和NSUserTrackingUsageDescription键。我还有多个用于本地化的info.plist,所有这些都是我用这些键更新的。
我运行了ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in函数,它崩溃了。崩溃日志显示:“此应用已崩溃,因为它尝试访问不带使用说明的隐私敏感数据。应用的Info.plist必须包含NSUserTrackingUsageDescription项,该项具有向用户解释应用如何使用此数据的字符串值。”
但我从来没有收到过请求跟踪权限的提示

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)
    }
}
6vl6ewon

6vl6ewon5#

如果您使用iOS 10 SDK构建应用,则需要新的隐私设置。如果您要访问任何隐私敏感数据,则必须在Info.plist文件中提供“目的字符串”。
“目的字符串”只是一条消息,用于解释应用为何需要访问在请求权限时显示给用户的特定服务(就像我们在iOS 8之后对定位服务所做的那样)。不提供此“目的字符串”可能会导致应用崩溃。

相关问题