3

我正在尝试从 a 获取最新数据,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因为我总是使用iOS 和 Watch 应用程序WCSession获得的相同信息。WCSession.defaultSession我对连接有什么误解吗?!

4

2 回答 2

9

receivedApplicationContext就是你要找的。applicationContext的内容是你发送出去的东西,没有收到。

于 2015-11-08T08:24:15.727 回答
3

至少在 WatchOS 6 上,receivedApplicationContext在会话被激活之前是空的,这意味着如果你启动应用程序,你需要等到func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)被调用,然后验证状态是否处于活动状态,然后才能获得最新的上下文。

希望这对登陆这里并面临与我相同的问题的人有所帮助

于 2019-12-16T16:14:11.067 回答