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

我有一种情况,我需要在多个WKInterfaceControllers中共享WCSession。 单例方法不起作用,一旦你设置委托给一个类,其他类中的所有委托都将失效。 场景:接口A基于数据内容发送和接收数据,呈现接口B.点击接口B,将请求并接收附加数据。 你将如何分享A和B之间的WCSession?

另一个答案并不能解释一个应用程序范围的会话是可行的。

可以使用应用程序范围的WCSession单身人士,这将可用于您的所有界面控制器。 您只需在应用程序生命周期的早期实例化会话pipe理器,并将其作为自己的代理。

会话pipe理器(单例)可以处理接口控制器的所有传输,而不是试图让每个接口控制器处理会话委托(这将不能很好地工作)。

正如在另一个答案中提到的那样,您可以使用通知让感兴趣的接口控制器知道他们的新数据何时到达。

使用诸如会话或数据pipe理器之类的模块化方法有助于将这些代码从控制器中排除,而控制器实际上不属于此类代码。 这也使得更容易testing和利用每个模块。

我不会在这里重复这些代码,因为在Stack Overflow上已经有了几个已经存在的答案,还有networking上的文章,这些文章详细介绍了这个技术。 例如:

  • 在多个ViewController中使用WCSession

  • WatchConnectivity:对WCSession说“Hello”

您经常会在较狭窄的问题中find这些types的答案,要求如何在例如手表应用程序及其并发控制器之间共享数据。

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