哪里最好使用Watch Connectivity调用updateApplicationContext?

时间:2015-10-21 19:15:03

标签: ios swift watchkit apple-watch watchconnectivity

一些详细介绍Watch Connectivity(http://www.kristinathai.com/watchos-2-tutorial-using-application-context-to-transfer-data-watch-connectivity-2/http://natashatherobot.com/watchconnectivity-application-context/)的好博客文章使用简单的应用示例,当您点击iPhone上的用户界面时,这些示例会将数据发送到手表。

我的应用程序只是列出了我的iPhone应用程序中的数据,所以我不需要立即发送数据,我只是想在应用程序加载或进入后台时发送它...为此我已经创建了{ {1}}和updateApplicationContext中的{1}} ...然而,我的监视界面控制器中的dataSource委托非常发现触发...特别是只能在模拟器上加载,而不会在设备上加载。是否有更好的时间和地点推送信息?

didFinishLaunching

下面是我的didEnterBackground我曾在func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { WatchSessionManager.sharedManager.startSession() do { try WatchSessionManager.sharedManager.updateApplicationContext(["peopleDict" : peopleDict]) } catch { print(error) } return true } func applicationDidEnterBackground(application: UIApplication) { do { try WatchSessionManager.sharedManager.updateApplicationContext(["peopleDict" : peopleDict]) } catch { print(error) } } 的{​​{1}}

中致电WatchSessionManager
activiateSession

1 个答案:

答案 0 :(得分:5)

由于updateApplicationContext仅存储最新的应用程序上下文,您可以随时更新它。手表只能获得最新数据。没有具有旧上下文的队列。

在监视方面,激活会话和设置WCSessionDelegate的最安全位置采用ExtensionDelegate init方法:

class ExtensionDelegate: NSObject, WKExtensionDelegate {

    override init() {
        super.init()
        WatchSessionManager.sharedManager.startSession()
    }
    ...
}

您的 Glance 未更新,因为在显示Glance时,未调用applicationDidFinishLaunching(因为仅在启动Glance时未启动监视应用程序)