让NSContactsUsageDescription在10.8.2中工作

时间:2012-10-26 19:15:47

标签: macos osx-mountain-lion abaddressbook

我有一个崩溃记者的应用程序,通过从ABAddressBook获取它来自动填充用户电子邮件地址。我正试图在10.8显示的对话框中获取有关意图的信息性消息,要求用户许可。根据{{​​3}}的建议,我已将以下内容添加到应用的Info.plist中:

<key>NSContactsUsageDescription</key>
<string>blah blah blah</string>

不幸的是,这不起作用。对话框仍然会询问,但它不会显示我的描述文本。我试过了:

  • 将此信息放入崩溃记者框架的Info.plist而不是应用程序。
  • 使用我的开发者ID证书签署应用程序。

但是,唉,没有运气。任何人都得到这个工作,可以给我一个关于我做错的提示?

2 个答案:

答案 0 :(得分:2)

[更新]我发现真正的重新启动有帮助的原因。它杀死了tccd进程,它看起来像是负责在该对话框上显示消息的罪魁祸首。

因此,只需打开活动监视器并终止tccd进程,您的新消息就会在下次对话框显示时显示。

[旧答案] 我遇到了同样的问题并且不确定为什么(我正在完成文档所说的那样做)。我终于得到了它的工作:

  • 删除我的应用所在的容器(〜/ Library / Containers / com.company-name.app-name)
  • 清洁构建(在Xcode:Product - &gt; Clean)
  • 重启我的机器(看起来有点货难,但我认为这是解决问题的原因)
  • 构建并运行我的应用

下次我的应用尝试访问地址簿API时,我看到了包含我的消息的对话框。

我认为Apple必须在某处缓存该消息(要么是您想要的消息,要么是在您显示消息之前运行代码时为空字符串),并且清除它的唯一方法是重新启动。我多次尝试了前两个步骤而没有更改消息,即使我收到消息后再尝试更改它。

答案 1 :(得分:-1)

解决方案是在终端中运行以下命令:

tccutil reset AddressBook

来源:https://developer.apple.com/library/archive/qa/qa1906/_index.html