如何在 WatchKit 扩展和 iPhone 应用程序之间共享钥匙串数据

How to share keychain data between a WatchKit extension and an iPhone app

我无法使用共享钥匙串在 WatchKit 和 iPhone 应用程序之间共享数据。当我尝试在钥匙串包装器中将 kSecAttrAccessible 用作 kSecAttrAccessibleAlways 时,SecItemUpdate 失败。请帮助我在钥匙串包装器中正确使用 kSecAttrAccessible

您应该使用正确的无障碍模式:

默认钥匙串模式 kSecAttrAccessibleWhenUnlockedkSecAttrAccessibleWhenUnlockedThisDeviceOnly 不会让您的应用程序扩展在 iPhone 被锁定时访问数据。

因此,在这种情况下使用kSecAttrAccessibleAfterFirstUnlockkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly是合适的。这允许 WatchKit 扩展访问钥匙串,即使 iOS 应用程序在后台也是如此。

必须重新保存旧项目(kSecAttrAccessibleWhenUnlocked)(读取、删除、使用新的辅助模式保存)。

可获得更多信息(包括代码)here, here, and here