我正在使用SecKeychainFindGenericPassword()
来获取我之前使用SecKeychainAddGenericPassword()
保存的应用程序密码。正如所料,MacOS为用户提供了一个对话框,要求他们批准钥匙串访问。但是,叠加在挂锁右下方的图标是通用文档图标,而不是我的应用程序图标。
我无法在Keychain Services References中看到有关指定图标的任何内容,因此我假设操作系统只使用您的应用程序图标。我的.icns文件(在info.plist中引用)根据Iconographer填充了所有可能的大小和位图,所以我真的不确定下一步该在哪里。
希望有人可以指出我有明显的问题吗?
答案 0 :(得分:1)
这通常是因为您的应用程序是从其他用户无法读取的目录运行的。验证对话框显然在另一个进程中运行,它需要能够从捆绑包中获取您的图标。
答案 1 :(得分:1)
这是Chris Suter先前提到的访问权限问题。 plist中图标的名称与应用程序包中指向的文件无关。将在提升过程中使用Info.plist(CFBundleIconFile)(如果未指定自定义的电梯) 在Lion或更新的操作系统上试用它,您会发现您在家中复制的任何应用程序都受到保护(完全无法访问),因此电梯无法读取图标。
答案 2 :(得分:0)
在kSecCustomIconItemAttr
弃用之前,Keychain Services Reference (2003)有这样的说法:
kSecCustomIconItemAttr
标识自定义图标属性。 您可以使用此标记来设置或获取值 类型
Boolean
,表示是否 该项目具有特定于应用程序 图标。为此,您还必须设置 由...标识的属性值 将kSecTypeItemAttr
标记为文件类型 哪个有对应的 桌面数据库中的图标,并设置 由...标识的属性值 将kSecCreatorItemAttr
标记为 适当的应用程序创建者类型。 如果是自定义图标对应的 可以找到项目的类型和创建者 在桌面数据库中,它将是 由Keychain Access显示。 否则,使用默认图标。
也许尝试设置kSecCreatorItemAttr
和kSecTypeItemAttr
属性。