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. 清除iPhone的钥匙扣
- 4. iOS钥匙扣安全
- 5. IOS中的钥匙扣
- 6. 钥匙扣使用什么钥匙选项?
- 7. 钥匙扣查看器 - DPFMate做什么?
- 8. C#钥匙扣关键事件
- 9. 用钥匙扣节省分数
- 10. 的APN证书定制钥匙扣
- 11. mobilefirst机iOS钥匙扣包装问题
- 12. 的iOS删除钥匙扣价值
- 13. 用手机替换钥匙扣
- 14. 可可接口到MacOS X钥匙扣
- 15. 如何处理冲突的钥匙扣
- 16. 钥匙扣访问配置文件
- 17. 无法使用使用钥匙串访问工具钥匙扣访问工具
- 18. 公共/私有密钥不产生 - 钥匙扣访问
- 19. Icloud日历同步Wordpress PHP
- 20. NSUbiquitousKeyValueStore未与iCloud同步
- 21. 更高效的iCloud同步?
- 22. 核心数据iCloud同步
- 23. 同步文档到iCloud
- 24. 钥匙
- 25. 是由iTunes/iCloud备份的钥匙串密码?
- 26. 问题scifihifi,iPhone项目使用苹果钥匙扣
- 27. 如何使用钥匙扣在离子混合移动应用
- 28. MonoTouch无法获取现有钥匙扣项目的价值
- 29. TouchID认证和钥匙扣的最佳实践
- 30. 生成钥匙扣IBM移动头伏7.1
#jrc你能帮我在keychain中设置kSecAttrSynchronizable属性吗? – iKT 2015-06-24 09:53:54