我正在运行我以前工作正常的项目,但在更新我的xcode后,我的应用程序崩溃并发出此错误:
此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。该应用程序的Info.plist必须包含一个NSCameraUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据
答案 0 :(得分:24)
iOS 10中的隐私设置
iOS 10中的一个重大变化是您必须提前声明对私人数据的访问权限或您的应用程序将崩溃。
与iOS 10链接后,您必须声明对任何用户私有数据类型的访问权限。您可以通过向应用的Info.plist添加使用密钥以及目的字符串来完成此操作。被视为私有数据的框架列表很长
通讯录,日历,提醒,照片,蓝牙共享,麦克风,相机,位置,健康,HomeKit,媒体库,动作,CallKit,语音识别,SiriKit,电视提供商。
您需要将 NSCameraUsageDescription 放入plist中。
像
<key> NSCameraUsageDescription </key>
<string>$(PRODUCT_NAME) uses Cameras</string>
例如
检查所有使用说明here。
答案 1 :(得分:3)
答案 2 :(得分:1)
我什至不会提示我。我插入了 SKAdNetworkItems 键和 NSUserTrackingUsageDescription 键。我还有多个用于本地化的 info.plist,所有这些都是我用密钥更新的。
我跑了 --prettyPrint/-P
功能,它正在崩溃。崩溃日志说:“这个应用程序崩溃了,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须包含一个 NSUserTrackingUsageDescription 键和一个字符串值,向用户解释应用程序如何使用这些数据。”< /p>
但我从未收到要求跟踪许可的提示
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
答案 3 :(得分:0)
使用iOS 10 SDK构建应用程序时所需的新隐私设置。如果您访问任何隐私敏感数据,必须在Info.plist文件中提供“用途字符串”。
“目的字符串”只是一条消息,解释了为什么应用程序需要访问将在请求权限时显示给用户的特定服务(就像我们从iOS 8开始为位置服务所做的那样)。不提供此“用途字符串”可能会导致您的应用程序崩溃。
答案 4 :(得分:0)
@Anbu的答案有多余的空格,这会引发异常。 Info.plist条目应如下所示
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) uses camera</string>