WatchConnectivity 如何在多个 WKInterfaceController 之间共享会话?

WatchConnectivity how to share session among multiple WKInterfaceControllers?

我有一种情况需要在多个 WKInterfaceController 之间共享 WCSession。单例方法将不起作用,一旦将委托设置为 class,其他 class 中的所有委托都将失效。场景:接口A收发数据,根据数据内容,呈现接口B,点击接口B,会请求和接收额外的数据。您将如何在 A 和 B 之间共享 WCSession?

使用 NSNotification 并监听所有视图控制器中的变化。

没有解释应用程序范围的会话是否有效。

可以使用应用程序范围内的WCSession 单例,它可用于所有界面控制器。您只需在应用程序生命周期的早期实例化一个会话管理器,让它成为自己的委托。

与其尝试让每个接口控制器处理会话委托(这不会很好地工作),一个会话管理器(单例)可以处理您的接口控制器的所有传输。

如另一个答案中所述,您可以使用通知让感兴趣的界面控制器知道他们的新数据何时到达。

使用模块化方法(例如会话或数据管理器)有助于将此类代码排除在控制器之外,而实际上它不属于该控制器。它还可以更轻松地测试和使用每个模块。

我不会在这里重复代码,因为 Stack Overflow 上已经发布了几个现有的答案,以及 网络上的文章,其中详细介绍了此技术。例如:

您通常会在更窄的问题中找到这些类型的答案,这些问题询问如何在手表应用程序及其复杂功能控制器之间共享数据。