我尝试从AppleWatch扩展中读取应用程序UserDefaults
,在研发失败两天后,我正在发布此线程。
例如,我正在尝试使用以下代码(即使应用终止)来确定用户是否登录了appleWatch端:
struct ContentView: View {
let auth_token:String = UserDefaults(suiteName: "group.mybundle.app.com")!.string(forKey: "token") ?? ""
@ViewBuilder
var body: some View {
if self.auth_token == "" {
Text("You need to be Logged in").frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
}else{
WebImage(imageURL: URL(string: token)).frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
}
}
}
,并在用户成功登录后从应用程序端进行访问:
UserDefaults(suiteName: "group.mybundle.app.com")!.set(rr, forKey: "token")
UserDefaults(suiteName: "group.mybundle.app.com")!.synchronize()
我仍然无法阅读token
从appleWatch扩展读取父应用程序数据UserDefaults
的最简单方法是什么?
答案 0 :(得分:2)
就像Shunzhe提到的那样,您无法再在iOS和WatchOS之间共享UserDefaults
。
您可以使用sendMessage:replyHandler:errorHandler
的{{1}}方法来唤醒iPhone,运行一些代码并将某些内容发送回手表。
答案 1 :(得分:1)
已弃用或不建议从iOS应用程序到Apple Watch共享应用程序组,如here所述。
从iOS应用程序向WatchOS应用程序传输数据的一种方法是使用WatchConnectivity
框架。 Here是Apple的官方文档。
要记住的事情: 1. in cases when your watch app is running in the background