从 Apple Watch 访问钥匙串数据
Access keychain data from Apple Watch
作为问题的标题,我只想从 Apple Watch 访问保存在 iPhone 钥匙串中的数据。
我可以这样做吗?以及如何?
Watchkit 应用程序是 运行 在配对 phone 上的一个扩展,因此您可以共享钥匙串数据,就像您可以与任何其他扩展共享钥匙串一样 - 通过激活 "Keychain sharing" 在您的应用程序功能中。
见Share between an iOS extension and it's containing app with the keychain?
方法是使用 App Groups 和 NSUserDefaults。单击您的主要目标项目,找到 Capabilities,然后找到 App Groups
使用您的项目名称 group.myproject 创建一个群组,这样您就可以在 Watch 和 iPhone 之间共享数据。在您的代码中,您可以使用它来检索值:
NSUserDefaults *standardUserDefaults = [[NSUserDefaults alloc] initWithSuiteName: <YOUR_APP_GROUP>];
NSString *value = [standardUserDefaults objectForKey:YOUR_KEY];
自 watchOS 2.0 以来,手表和配对设备之间不再可能共享钥匙串项目。手表和配对设备现在被认为是独立的。可以使用 WatchConnectivity 作为一种解决方法。
作为问题的标题,我只想从 Apple Watch 访问保存在 iPhone 钥匙串中的数据。 我可以这样做吗?以及如何?
Watchkit 应用程序是 运行 在配对 phone 上的一个扩展,因此您可以共享钥匙串数据,就像您可以与任何其他扩展共享钥匙串一样 - 通过激活 "Keychain sharing" 在您的应用程序功能中。
见Share between an iOS extension and it's containing app with the keychain?
方法是使用 App Groups 和 NSUserDefaults。单击您的主要目标项目,找到 Capabilities,然后找到 App Groups
使用您的项目名称 group.myproject 创建一个群组,这样您就可以在 Watch 和 iPhone 之间共享数据。在您的代码中,您可以使用它来检索值:
NSUserDefaults *standardUserDefaults = [[NSUserDefaults alloc] initWithSuiteName: <YOUR_APP_GROUP>];
NSString *value = [standardUserDefaults objectForKey:YOUR_KEY];
自 watchOS 2.0 以来,手表和配对设备之间不再可能共享钥匙串项目。手表和配对设备现在被认为是独立的。可以使用 WatchConnectivity 作为一种解决方法。