一些详细介绍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
答案 0 :(得分:5)
由于updateApplicationContext
仅存储最新的应用程序上下文,您可以随时更新它。手表只能获得最新数据。没有具有旧上下文的队列。
在监视方面,激活会话和设置WCSessionDelegate的最安全位置采用ExtensionDelegate
init
方法:
class ExtensionDelegate: NSObject, WKExtensionDelegate {
override init() {
super.init()
WatchSessionManager.sharedManager.startSession()
}
...
}
您的 Glance 未更新,因为在显示Glance时,未调用applicationDidFinishLaunching
(因为仅在启动Glance时未启动监视应用程序)