使用 KeyChainItemWrapper 添加钥匙串项目时使用的正确标识符是什么?

What is the proper identifier to use when adding a keychain item using KeyChainItemWrapper?

我不太明白标识符是什么,也不太明白它是如何使用的。

随意吗?是我的应用名称倒过来了吗? 下面我使用“测试”但它应该是:“com.mydomain.myApp.test”吗? 或者我的应用程序包标识符:“com.Soundpaper.soundpaper.fakeID123”? 或者什么?

谢谢。

@property (nonatomic, strong) KeychainItemWrapper *myChain;
    
     . . .

if (myChain == nil)
{
    // first question: what identifier should I use?        
    myChain = [[KeychainItemWrapper alloc] initWithIdentifier:@"test" accessGroup:nil];
}

KeychainItemWrapper 是一个包装器 class,用于对“典型”开发人员隐藏所有 CFRef 转换内容。 因此,Security 框架中 Keychain 服务的所有“规则”都成立。

因此,每当您访问钥匙串项目时,框架都会自动将您应用的 bundle id“添加”到该项目,以确保您只能读取自己的项目,参见例如SecItemAdd discussion.

因此,identifier 完全是任意的,可能只会在您自己的应用程序内引发冲突,而不会与其他人发生冲突。

备注:如果您指定accessGroup,您可以在应用程序之间共享密钥,参见Sharing Access to Keychain Items Among a Collection of Apps