Watchkit 中的 GlanceController 和 InterfaceController 如何通信?

How do I communicate between GlanceController and InterfaceController in Watchkit?

根据 Watchkit 的 Apple documentation,使用 willActivate 用最新信息更新 glance 场景。访问 "most up to date" 信息的推荐方式是什么,或者换句话说,我如何在 GlanceControllerInterfaceController 之间进行通信?我目前正在使用 Swift 但 Obj-C 中的答案也很好。 我似乎无法在文档中找到它。

你可以在 glance controller 中工作,就像在 interface controller 中工作一样获取 "most up to date" 信息并将结果保存到 NSUserdefault,然后你从 Interface Controller 中的 NSUserDefault 返回结果。

您需要在界面控制器中实现:- (void)handleUserActivity:(NSDictionary *)userInfo。 在 Glance Controller 中调用 updateUserActivity:userInfo: 使用您要传递给 interfaceController 的 userInfos。

你是说从 Glance Controller 切换到 Interface Controller 吗?

协调切换
如果是这样,你会想要查看 Coordinating Handoff Activity

实施func handleUserActivity(_ userInfo: [NSObject : AnyObject]!) 在您的初始界面控制器上。

然后是 updateUserActivity:userInfo: 方法的 userInfo 字典,并提供从 Glance -> Watch App 转换的上下文。

共享数据
要与您的 Glance 共享最多的 'up-to-date' 数据,您应该设计您的 Watch Extension/iOS 应用程序以定期将数据保存到 Shared App Container 中,您的 iOS app 和 Extension 可以访问。当您的 Glance 打开时,它只会从共享容器中获取数据(预计是最新的)并显示它。