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?) 被调用然后验证在您获取最新上下文之前状态处于活动状态。

希望这对登陆这里并遇到我遇到的同样问题的人有所帮助