ApplicationContext 属性 总是 return 空字典
ApplicationContext property always return an Empty dictionary
我正在尝试从 WCSession
获取最新数据,我不明白为什么即使我刚接到 didReceiveApplicationContext
电话。
更多详细信息可直接进入代码:
//Watch Code
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session?.delegate = self
session?.activateSession()
verifyUser()
}
}
// 1. This function is called, with the applicationContext data
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
print("CONTEXT \(applicationContext)")
}
// 2. I manually trigger this call from the watch with a button.
// even if I call this function after the previous function (1) it always print an Empty ([:]) applicationContext.
@IBAction func printContext(){
print(session?.applicationContext)
}
我希望 applicationContext
属性 始终使用使用 updateApplicationContext
的最新信息集进行更新,因为我总是使用通过 [=18] 获得的相同 WCSession
=] 对于 iOS 和 Watch 应用。我对连通性有什么误解吗?!
receivedApplicationContext
就是您要找的。 applicationContext
的内容是你发出的东西,不是收到的。
至少在 WatchOS 6 上,receivedApplicationContext
在会话被激活之前是空的,这意味着如果您要启动应用程序,您需要等到 func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)
被调用然后验证在您获取最新上下文之前状态处于活动状态。
希望这对登陆这里并遇到我遇到的同样问题的人有所帮助
我正在尝试从 WCSession
获取最新数据,我不明白为什么即使我刚接到 didReceiveApplicationContext
电话。
更多详细信息可直接进入代码:
//Watch Code
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session?.delegate = self
session?.activateSession()
verifyUser()
}
}
// 1. This function is called, with the applicationContext data
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
print("CONTEXT \(applicationContext)")
}
// 2. I manually trigger this call from the watch with a button.
// even if I call this function after the previous function (1) it always print an Empty ([:]) applicationContext.
@IBAction func printContext(){
print(session?.applicationContext)
}
我希望 applicationContext
属性 始终使用使用 updateApplicationContext
的最新信息集进行更新,因为我总是使用通过 [=18] 获得的相同 WCSession
=] 对于 iOS 和 Watch 应用。我对连通性有什么误解吗?!
receivedApplicationContext
就是您要找的。 applicationContext
的内容是你发出的东西,不是收到的。
至少在 WatchOS 6 上,receivedApplicationContext
在会话被激活之前是空的,这意味着如果您要启动应用程序,您需要等到 func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)
被调用然后验证在您获取最新上下文之前状态处于活动状态。
希望这对登陆这里并遇到我遇到的同样问题的人有所帮助