【问题标题】:ApplicationContext property always return an Empty dictionaryApplicationContext 属性总是返回一个空字典
【发布时间】:2015-11-06 11:36:26
【问题描述】:

我正在尝试从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.defaultSession 获得的相同WCSession 用于iOS 和Watch 应用程序。我对连接有什么误解吗?!

【问题讨论】:

    标签: watchkit watchconnectivity


    【解决方案1】:

    receivedApplicationContext 是您正在寻找的。 applicationContext的内容是你发出来的,没有收到。

    【讨论】:

      【解决方案2】:

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

      希望这可以帮助那些来到这里并面临同样问题的人?

      【讨论】:

        猜你喜欢
        • 2018-11-21
        • 2012-07-21
        • 2018-11-18
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        相关资源
        最近更新 更多