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そのダイアログにメッセージを表示する責任者のように見えるプロセスを強制終了します。

したがって、Activity Monitor を開いてtccdプロセスを強制終了するだけで、次回ダイアログが表示されたときに新しいメッセージが表示されるはずです。

[古い回答] 私も同じ問題に遭遇しましたが、その理由がよくわかりませんでした (私はドキュメントに書かれていることを正確に実行していました)。私は最終的にそれが動作するようになりました:

  • アプリが存在していたコンテナを削除する (~/Library/Containers/com.company-name.app-name)
  • ビルドのクリーニング (Xcode の場合: Product -> Clean)
  • マシンを再起動します(少しカーゴカルトのようですが、これで問題が解決したと思います)
  • アプリのビルドと実行

次に私のアプリが Address Book API にアクセスしようとすると、私のメッセージを含むダイアログが表示されました。

Apple はそのメッセージをどこかにキャッシュしているに違いないと思います (必要なメッセージ、またはメッセージを表示する前にコードを実行した場合は空の文字列)、それをクリアする唯一の方法は再起動することです。最初の 2 つの手順を何度も試しましたが、メッセージが機能してから変更しようとした後でも、メッセージは変わりませんでした。

于 2012-11-07T02:41:57.487 に答える