7
A
回答
3
不,鑰匙串同步不是iCloud的一部分。它是點mac同步的一部分,但不再可用。
可能會有關於這是否是個好主意的反饋(自動將密碼從一臺設備移到另一臺設備),特別是在多人共享一個iCloud帳戶的情況下(可能,但現在不能保證)。
如果您覺得將密碼存儲在設備的鑰匙串中(並且因此要求用戶每個設備至少輸入一次),那麼您將需要提供自己的加密和安全性,並將數據直接存儲在iCloud中,如在密鑰庫中。
16
iCloud Keychain是iOS 7.0.3和OS X Mavericks 10.9中的一項新功能。使用SecItem API添加鑰匙串項目時,請指定kSecAttrSynchronizable
屬性。
2
這些是我爲鑰匙串製作的實用方法。 kSecAttrSynchronizable是使iCloud Sync工作的原因。希望他們幫助。
- 鑰匙串查詢。
- 刪除項目
- 刪除項目
- 保存項目
將項目
+ (NSMutableDictionary *)getKeychainQuery:(NSString *)service { return [NSMutableDictionary dictionaryWithObjectsAndKeys: (__bridge id)kSecClassGenericPassword, (__bridge id)kSecClass, service, (__bridge id)kSecAttrService, service, (__bridge id)kSecAttrAccount, service, (__bridge id)kSecAttrSynchronizable, (__bridge id)kSecAttrAccessibleAfterFirstUnlock, (__bridge id)kSecAttrAccessible, nil]; } + (void)save:(NSString *)service data:(id)data { NSMutableDictionary *keychainQuery = [self getKeychainQuery:service]; SecItemDelete((__bridge CFDictionaryRef)keychainQuery); [keychainQuery setObject:[NSKeyedArchiver archivedDataWithRootObject:data] forKey:(__bridge id)kSecValueData]; SecItemAdd((__bridge CFDictionaryRef)keychainQuery, NULL); } + (void)remove:(NSString *)service { NSMutableDictionary *keychainQuery = [self getKeychainQuery:service]; SecItemDelete((__bridge CFDictionaryRef)keychainQuery); } +(NSString *)keychainItem:(NSString *)service{ id data = [self load:service]; if([data isKindOfClass:[NSString class]]){ return data; } return @""; } + (id)load:(NSString *)service { id ret = nil; NSMutableDictionary *keychainQuery = [self getKeychainQuery:service]; [keychainQuery setObject:(id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData]; [keychainQuery setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit]; CFDataRef keyData = NULL; if (SecItemCopyMatching((__bridge CFDictionaryRef)keychainQuery, (CFTypeRef *)&keyData) == noErr) { @try { ret = [NSKeyedUnarchiver unarchiveObjectWithData:(__bridge NSData *)keyData]; } @catch (NSException *e) { NSLog(@"Unarchive of %@ failed: %@", service, e); } @finally {} } if (keyData) CFRelease(keyData); return ret; }
+0
+1爲完整答案,提供全部代碼需要歸檔數據。 (id)數據對象當然必須符合
0
尋找做同樣的,還沒有嘗試過,但是這看起來有所幫助:https://github.com/iosengineer/BMCredentials
相關問題
- 1. iPhone鑰匙扣
- 2. Jenkins刪除鑰匙扣中的鑰匙
- 3. 鑰匙扣證書
- 4. 「登錄」和「iCloud」鑰匙扣有什麼區別?
- 5. iOS鑰匙扣安全
- 6. 清除iPhone的鑰匙扣
- 7. IOS中的鑰匙扣
- 8. 鼠標鑰匙扣 - 鑰匙聽者沒有觸發
- 9. 鑰匙扣使用什麼鑰匙選項?
- 10. 添加鑰匙扣到搜索列表?
- 11. 使用的Android 4.1鑰匙扣
- 12. 用鑰匙扣節省分數
- 13. mobilefirst機iOS鑰匙扣包裝問題
- 14. 如何處理衝突的鑰匙扣
- 15. 的iOS刪除鑰匙扣價值
- 16. 可可接口到MacOS X鑰匙扣
- 17. 使用OSX鑰匙扣混帳
- 18. 鑰匙扣訪問配置文件
- 19. iOS鑰匙扣使用情況
- 20. 鑰匙扣用於SSH-添加
- 21. C#鑰匙扣關鍵事件
- 22. 用手機替換鑰匙扣
- 23. 鑰匙扣查看器 - DPFMate做什麼?
- 24. 鑰匙扣沒有得到數據
- 25. 的APN證書定製鑰匙扣
- 26. 無法使用使用鑰匙串訪問工具鑰匙扣訪問工具
- 27. 公共/私有密鑰不產生 - 鑰匙扣訪問
- 28. 手動同步iCloud
- 29. 同步CloudKit和iCloud
- 30. 鑰匙
#jrc你能幫我在keychain中設置kSecAttrSynchronizable屬性嗎? – iKT 2015-06-24 09:53:54