我正在使用 sskeychain (https://github.com/soffes/sskeychain https://github.com/soffes/sskeychain)将我的帐户和密码存储在 IOS 钥匙串中。我认为,如果我存储帐户,它应该可以在我的其他设备上使用。但它没有出现在那里。
我用以下代码读取了我的帐户:
NSArray *arr=[SSKeychain accountsForService:@"Login"];
for (NSString *s in arr) {
NSLog(@"Account: %@",s);
}
并得到这个(仅显示一项,其他类似):
Account: {
acct = "[email protected] /cdn-cgi/l/email-protection";
agrp = "3B4384Z34A.de.gondomir.LocalButler";
cdat = "2014-05-09 22:55:08 +0000";
mdat = "2014-05-09 22:55:08 +0000";
pdmn = ak;
svce = Login;
sync = 0;
tomb = 0;
}
但这不会出现在其他设备上。两款设备均搭载 iOS 7.1.1。
我用这一行存储密码:
[SSKeychain setPassword:self.passwortField.text forService:@"Login" account:self.userField.text];
我已经在 Xcode 中打开了钥匙串共享,并在那里列出了一个钥匙串组“de.gondomir.LocalButler”。
我错过了什么吗?该服务必须命名一些特别的东西吗?
Thanks!
如果这仍然与您相关,我设法找到了解决方案。 (适用于 >=iOS7)
不要使用 SSKeychain 的静态方法来写入您的凭据。而是使用SSKeychainQuery
并将同步模式设置为SSKeychainQuerySynchronizationModeYes
像这样
NSError *error;
[SSKeychain setAccessibilityType:self.keychainAccessibilityType];
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
query.service = service;
query.account = account;
query.password = password;
query.synchronizationMode = SSKeychainQuerySynchronizationModeYes;
[query save:&error];
if (error) {
NSLog(@"Error writing credentials %@", [error description]);
}
静态便捷方法SSKeychain
使用默认同步模式SSKeychainQuerySynchronizationModeAny
导致凭据不与 iCloud 钥匙串同步。
此外,请确保您的设备已启用通过 iCloud 的钥匙串(设置>iCloud>钥匙串)。您可能还想启用Keychain Sharing
在你的目标能力中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)