【问题标题】:Application crashing on iOS 11 due to privacy-sensitive data由于隐私敏感数据,应用程序在 iOS 11 上崩溃
【发布时间】:2018-04-18 09:56:15
【问题描述】:

我的应用程序在 iOS 10 中运行顺畅,但当我将应用程序更新到 iOS 11 时,应用程序开始崩溃。我收到以下错误:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

【问题讨论】:

  • 所以将密钥添加到info.plist 并且崩溃应该会消失。
  • 你的应用在什么活动上崩溃了?您是否尝试访问图库照片或相机?
  • "隐私 - 联系人使用说明" 将此添加到您的 info.plist 文件中作为 NSContactsUsageDescription。它会解决你的问题。
  • 您的问题的答案已经在崩溃描述中...

标签: ios objective-c xcode ios11


【解决方案1】:
<key>NSContactsUsageDescription</key>
<string>Required to show list of contacts</string>

只需将其写入您的 info.plist 文件即可。

【讨论】:

    【解决方案2】:

    您必须声明对任何用户私有数据类型的访问权限。为此,您可以在应用的 Info.plist 中添加一个使用密钥以及一个目的字符串。

    <key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) photo use</string>
    
    <key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) camera use</string>
    
    <key>NSMicrophoneUsageDescription</key>
    <string>$(PRODUCT_NAME) microphone use</string>
    
    <key>NSLocationUsageDescription</key>
    <string>$(PRODUCT_NAME) location use</string>
    
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) location use</string>
    
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) always uses location </string>
    
    <key>NSCalendarsUsageDescription</key>
    <string>$(PRODUCT_NAME) calendar events</string>
    
    <key>NSRemindersUsageDescription</key>
    <string>$(PRODUCT_NAME) reminder use</string>
    
    <key>NSContactsUsageDescription</key>
    <string>$(PRODUCT_NAME) contact use</string>
    
    <key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use</string>
    
    <key>NSHealthUpdateUsageDescription</key>
    <string>$(PRODUCT_NAME) heath update use</string>
    
    <key>NSHealthShareUsageDescription</key>
    <string>$(PRODUCT_NAME) heath share use</string>
    
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>$(PRODUCT_NAME) Bluetooth Peripheral use</string>
    
    <key>NSAppleMusicUsageDescription</key>
    <string>$(PRODUCT_NAME) media library use</string>
    
    <key>NSSiriUsageDescription</key>
    <string>$(PRODUCT_NAME) siri use</string>
    
    <key>NSHomeKitUsageDescription</key>
    <string>$(PRODUCT_NAME) home kit use</string>
    
    <key>NSSpeechRecognitionUsageDescription</key>
    <string>$(PRODUCT_NAME) speech use</string>
    
    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>$(PRODUCT_NAME) tvProvider use</string>
    

    您可以阅读所有隐私说明here

    【讨论】:

      【解决方案3】:

      正如您的错误提示,只需添加

      "Privacy - Contacts Usage Description" 
      

      进入您的 info.plist。它将是字符串类型,因此添加您想要显示给用户的任何弹出消息,要求访问他/她的联系人列表。例如。你可以写“应用程序想要访问你的联系人列表。”

      Key will be "Privacy - Contacts Usage Description"
      and 
      Value will be "Application wants to access your contacts list."
      

      【讨论】:

        【解决方案4】:

        这是因为您试图在未经许可的情况下访问敏感数据。为避免这种情况,您需要在所有目标的 info.plist 文件中添加一个条目。并说明访问敏感数据的正当理由。

        谢谢

        【讨论】:

          猜你喜欢
          • 2017-02-11
          • 1970-01-01
          • 1970-01-01
          • 2017-05-13
          • 1970-01-01
          • 2019-06-25
          • 1970-01-01
          • 2013-12-03
          • 1970-01-01
          相关资源
          最近更新 更多