ios - SSKeychain:帐户未存储在 iCloud 中?

标签 ios macos icloud sskeychain

我正在使用 sskeychain ( https://github.com/soffes/sskeychain ) 将我的帐户和密码存储在 IOS 钥匙串(keychain)中。我认为,如果我存储帐户,它应该可以在我的其他设备上使用。但它并没有出现在那里。

我用以下代码读取了我的帐户:

NSArray *arr=[SSKeychain accountsForService:@"Login"];
for (NSString *s in arr) {
    NSLog(@"Account: %@",s);
}

并得到这个(仅显示一个条目,其他条目类似):

Account: {
acct = "friXXXXXter@XXXX.com";
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 中打开钥匙串(keychain)共享,并在那里列出了钥匙串(keychain)组“de.gondomir.LocalButler”。

我错过了什么吗?服务名称必须特别吗?

谢谢!

最佳答案

如果这仍然与您相关,我设法找到了解决方案。 (适用于 >=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 钥匙串(keychain)同步。

此外,请确保您的设备已启用通过 iCloud 的钥匙串(keychain)(设置>iCloud>钥匙串(keychain))。您可能还想在目标功能中启用钥匙串(keychain)共享

关于ios - SSKeychain:帐户未存储在 iCloud 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23579343/

相关文章:

ios - 存储目标列表的预期方式

php - 如何为数据库对象分配唯一 ID

c++ - 在 Mac OSX 中替代 --no-undefined

objective-c - 使用 perl 与正在运行的 OS X 应用程序进行通信

ios - 来自 iCloud/CloudKit 的序列号

cocoa - 我没有收到 NSPersistentStoreDidImportUbiquitousContentChangesNotification (带有代码示例)

ios - 如何从 App Delegate 重新加载 UIViewController 数据

ios - 为 iOS7 自定义 UIDatePicker 的文本颜色(就像 Mailbox 一样)

ios - en0 会一直是 iOS 设备上的 Wi-Fi 吗?

macos - 如何在使用 Web View 时启用 Safari 扩展