iOS geliştirmede çok yeniyim, bu bir yeni kullanıcı soruysa beni affet. Uygulamamın, kullanıcının e-posta adresini ve şifresini alan basit bir kimlik doğrulama mekanizmasına sahibim. Ayrıca 'Beni hatırla' yazan bir anahtarım var. Kullanıcı bu geçişi değiştirirse, e-postalarını/şifrelerini korumak isterim, böylece bu alanlar gelecekte otomatik olarak doldurulabilir.iOS'ta Anahtar Zincirine E-posta/Şifre Kaydetme
Bunu bir plist dosyasına kaydetme ile çalışmak için aldım ancak şifrenin şifrelenmediğinden beri en iyi fikir olmadığını biliyorum. Anahtarlığa kaydetmek için bazı örnek kodlar buldum, ama dürüst olmak gerekirse, biraz kayboldum. Aşağıdaki işlev için, nasıl arayacağımı ve e-posta adresini de kaydetmek için nasıl değiştirileceğimi bilmiyorum.
öyle olacağını çağırmak tahmin ediyorum: saveString(@"passwordgoeshere");
herhangi bir yardım için teşekkür ederiz !!!
+ (void)saveString:(NSString *)inputString forKey:(NSString *)account {
NSAssert(account != nil, @"Invalid account");
NSAssert(inputString != nil, @"Invalid string");
NSMutableDictionary *query = [NSMutableDictionary dictionary];
[query setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[query setObject:account forKey:(id)kSecAttrAccount];
[query setObject:(id)kSecAttrAccessibleWhenUnlocked forKey:(id)kSecAttrAccessible];
OSStatus error = SecItemCopyMatching((CFDictionaryRef)query, NULL);
if (error == errSecSuccess) {
// do update
NSDictionary *attributesToUpdate = [NSDictionary dictionaryWithObject:[inputString dataUsingEncoding:NSUTF8StringEncoding]
forKey:(id)kSecValueData];
error = SecItemUpdate((CFDictionaryRef)query, (CFDictionaryRef)attributesToUpdate);
NSAssert1(error == errSecSuccess, @"SecItemUpdate failed: %d", error);
} else if (error == errSecItemNotFound) {
// do add
[query setObject:[inputString dataUsingEncoding:NSUTF8StringEncoding] forKey:(id)kSecValueData];
error = SecItemAdd((CFDictionaryRef)query, NULL);
NSAssert1(error == errSecSuccess, @"SecItemAdd failed: %d", error);
} else {
NSAssert1(NO, @"SecItemCopyMatching failed: %d", error);
}
}
KeychainUserPass.m (Bu cevaba bağlı ve her iki dosya da kullanıcıyı belirtilen, ancak daha ileri atıf isterseniz lütfen bana bildirin). Biçimlendirmeyi biraz değiştirdim ve yöntem isimlerini biraz daha genel hale getirdim. https://github.com/jeremangnr/JNKeychain – jere