我试图从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
属性,因为我总是使用WCSession
获得的WCSession.defaultSession
用于iOS和观看应用程序。有什么我误解连接的吗?!
答案 0 :(得分:9)
receivedApplicationContext
正是您要找的。 applicationContext
的内容是您发送但未收到的内容。
答案 1 :(得分:1)
至少在WatchOS 6上,receivedApplicationContext
为空,直到激活了会话为止,这意味着如果要启动该应用程序,则需要等到func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)
被调用之后再验证状态在获取最新上下文之前处于活动状态。
希望这能帮助一个在这里着陆并且遇到与我一样的问题的人?