2

我有一个带有崩溃报告器的应用程序,它通过从 ABAddressBook 获取它来自动填充用户电子邮件地址。我试图在 10.8 显示的询问用户许可的对话框中获得信息丰富的意图消息。按照http://www.red-sweater.com/blog/2672/can-i-get-your-address上的建议,我在应用程序的 Info.plist 中添加了以下内容:

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

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

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

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

4

2 回答 2

2

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

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

[旧答案] 我遇到了同样的问题,但不确定为什么(我完全按照文档所说的去做)。我终于让它工作了:

  • 删除我的应用程序所在的容器(~/Library/Containers/com.company-name.app-name)
  • 清理构建(在 Xcode 中:产品 -> 清理)
  • 重新启动我的机器(似乎有点货物崇拜,但我认为这是解决问题的原因)
  • 构建和运行我的应用程序

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

我认为Apple必须在某处缓存该消息(您想要的消息,或者如果您在显示消息之前运行代码,则为空字符串),清除它的唯一方法是重新启动。我多次尝试了前两个步骤,但消息没有任何变化,即使在我让消息正常工作然后尝试更改它之后也是如此。

于 2012-11-07T02:41:57.487 回答
-1

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

tccutil reset AddressBook

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

于 2018-10-12T04:37:10.363 回答