2012-10-26 55 views
2

我有一个应用程序崩溃记录器,它通过从ABAddressBook获取用户电子邮件地址来自动填充。我试图在10.8显示询问用户许可的对话框中获得有意向的信息。继http://www.red-sweater.com/blog/2672/can-i-get-your-address的建议,我已经添加了以下到应用程序的Info.plist:让NSContactsUsageDescription在10.8.2中工作

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

不幸的是,这是行不通的。该对话框仍然要求,但它不显示我的描述文字。我试过了:

  • 把它放在crash记者框架的Info.plist中,而不是应用程序的。
  • 使用我的开发人员ID证书签署应用程序。

但是,唉,没有运气。任何人得到这个工作,可以给我一个小费,我做错了什么?

回答

2

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

因此,只要打开活动监视器并杀死tccd进程,并且您的新消息应该在下次显示对话框时显示。

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

  • 删除容器我的应用程序住在(〜/资源库/集装箱/ com.company-name.app名)
  • 清洁构建(在Xcode中:产品 - >清洁)
  • 重新启动我的机器(似乎有点货物邪教,但我认为这是固定的问题)
  • 构建和运行我的应用程序

下一次我的应用程序试图访问地址簿API我被提供了对话框包括我的信息。

我认为苹果公司必须在某个地方缓存该消息(如果您在显示消息之前先运行代码,那么要么是所需的消息,要么是一个空字符串),并且清除它的唯一方法是重新启动。我多次尝试了前两个步骤,消息没有任何变化,即使在我收到消息后仍尝试更改消息。