【问题标题】:App crashes with __CRASHING_DUE_TO_PRIVACY_VIOLATION__ when trying to access contacts尝试访问联系人时,应用程序因 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ 而崩溃
【发布时间】:2017-01-27 01:13:03
【问题描述】:

更新到 iOS 10 后,当尝试通过插件cordova-plugin-contacts v2.2.0 访问联系人时,应用程序退出

__CRASHING_DUE_TO_PRIVACY_VIOLATION__

我不知道我现在可以提供哪些其他额外信息,如果我能更具体一些,请告诉我。谢谢。

也许这有点用处:https://stackoverflow.com/a/39416858/592641,但我找不到如何在 cordova 中指定这些使用说明的指南。

【问题讨论】:

  • 你创建了一个 xcode 项目吗?使用Navigator(xcode 的左侧面板)查找Info.Plist 文件,在您在自己问题的链接中找到的 plist 文件中添加条目。完成后安装新副本。
  • 现在找到了,我需要用于联系人的确切键/字符串组合是什么?链接中的组合是关于相机的。

标签: ios cordova


【解决方案1】:

创建 Xcode 项目并找到 Info.Plist 文件后,您可以尝试添加 NSContactsUsageDescription 键,它应该接受字符串值。

A complete list of Cocoa Keys

希望有帮助!

编辑

文档中的一部分:(可以帮助您了解崩溃的原因)

重要提示:为保护用户隐私,在 iOS 上或之后链接的 iOS 应用 10.0,并且访问用户的联系人,必须静态声明这样做的意图。包括 NSContactsUsageDescription 键 您的应用程序的 Info.plist 文件并为此键提供目的字符串。 如果您的应用尝试在没有 相应的目的字符串,您的应用程序退出。

【讨论】:

  • 这确实有帮助,是的,剩下的就是弄清楚如何从 Cordova 配置中操作该 plist 文件。
  • 在“Info.Plist”中添加条目后,系统应在执行过程中从 plist 本身读取此条目,您不必(卸载)加载此 plist 文件。当从代码向此类基于权限的服务发起请求时,它会在“Info.plist”文件中查找使用说明。
  • 当然可以,但问题是所有这些特定于平台的文件都是从 Cordova 配置生成的。因此,它们不是 VCS 的一部分。因此,我必须在 Cordova 配置中明确指定这些更改,以便在任何地方生成它们。
  • 我认为没有直接的方法,因为当我使用 unity 并将其移植到 xcode 时,在部署之前需要几个手动步骤。我通过 google http://stackoverflow.com/questions/22769111/add-entry-to-ios-plist-file-via-cordova-config-xml 找到了这个,它说编写和安装插件可以完成这项工作。另一个写插件的例子meumobi.github.io/tips%20and%20tricks/2016/05/05/…
  • 是的,这就是我要走的路
【解决方案2】:

我的应用缺少 NSFaceIDUsageDescription

【讨论】:

  • 如果您发现这种情况只发生在 iPhone X 设备上,那么可以肯定它缺少 NSFaceIDUsageDescription 中的 *info.plist
【解决方案3】:

总之,使用说明需要在*info.plist里面注明

这对 Cordova 代码库没有好处,因为 .plist 文件不是存储库的一部分。我发现将它们放入 config.xml 的最简单方法是:

  1. 安装cordova-custom-config
  2. 在 config.xml 中添加以下内容:

.

<platform name="ios">
    <config-file parent="NSContactsUsageDescription" target="*info.plist">
      <string>Easily invite your friends</string>
    </config-file>
</platform>

【讨论】:

    【解决方案4】:

    我的 Info.plist 丢失了 NSPhotoLibraryAddUsageDescription。现在有两个与照片库相关的权限(从 iOS 11 开始):

    • NSPhotoLibraryUsageDescription - 访问照片库
    • NSPhotoLibraryAddUsageDescription - 只写照片库的权限

    我在 iOS 11 之前获得了第一个权限,当时它是使用照片库所需的唯一密钥。显然,在 iOS 11 中,他们添加了第二个,并要求将照片添加到库中。所以如果你支持 iOS 10 但不包含第二个键,你会在 iOS 11 上崩溃。

    All Keys are Here

    【讨论】:

    【解决方案5】:

    对我来说,我试图请求访问麦克风,但我没有定义 Privacy - Microphone Usage Description 字符串。

    进入您的 Info.plist 文件,然后向下滚动到以 Privacy 开头的值。确保为与您的应用相关的所有内容添加键和字符串值。

    【讨论】:

    • 您是否尝试在您的 plist 中添加“NSMicrophoneUsageDescription”作为麦克风使用描述键?您可以在我的答案中添加的链接中找到它。
    • 在升级到更高版本的 iOS 之后,这是我的答案,在此之前不需要这些。感谢您的提醒!
    【解决方案6】:

    我通过 Unity 使用 Kudan AR 时遇到了同样的错误,@NeverHelpless 的答案是正确的,除了修复是 NSCameraUsageDescription(添加到 Info.plist 并带有描述字符串)

    【讨论】:

      【解决方案7】:

      如果您确定问题出在访问联系人 时,请按照上述答案中发布的说明进行操作。

      但如果这些对您没有帮助,您可能需要在此处阅读我的相关答案,了解其他可能的解决方案(如果您在应用中使用 蓝牙): https://stackoverflow.com/a/60073667/457202

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        • 1970-01-01
        • 2015-11-13
        相关资源
        最近更新 更多