1

私はリンゴの KEychainItemWrapper を使用しています。

これをシミュレーターとデバイスの両方でテストしました。iOS 10.2.1 と xcode 8.2.1 を使用しています。

プロジェクトでキーチェーンの共有が有効になっていて、資格が正しい。本当にキーチェーンの共有をオンにする必要があるかどうかはわかりません。キーチェーン共有をオフにしても違いはありませんでした.キーチェーン共有をオフにしても同じ動作が発生します.

値を保存して取得する方法は次のとおりです。

-(void)saveUSerInfoInKeychain:(NSString *)usrName andPAssworD:(NSString *)password{

    _keychain = [[KeychainItemWrapper alloc]initWithIdentifier:[[NSBundle mainBundle]bundleIdentifier] accessGroup:nil];

    //also tried setting the accessible type
    [_keychain setObject:(__bridge id)kSecAttrAccessibleAlways forKey:(__bridge id)kSecAttrAccessible];

    //also set the accessgroup
    [_keychain setObject:@"key.app.bndle.identifier"
                     forKey:(id)kSecAttrAccessGroup];


    [_keychain setObject:usrName forKey:(id)kSecAttrAccount];
    [_keychain setObject:password forKey:(id)kSecValueData];

}

-(NSString *)getUserEmail{

    if (!_keychain) {
        _keychain = [[KeychainItemWrapper alloc]initWithIdentifier:[[NSBundle mainBundle]bundleIdentifier] accessGroup:nil];
    }
    return [_keychain objectForKey:(id)kSecAttrAccount];
}

-(NSString *)getUserPassword{
    if (!_keychain) {
        _keychain = [[KeychainItemWrapper alloc]initWithIdentifier:[[NSBundle mainBundle]bundleIdentifier] accessGroup:nil];
    }
    return [_keychain objectForKey:(id)kSecValueData];
}

私は何を間違っていますか?同じ識別子でキーチェーンを複数回初期化できますか?

4

1 に答える 1