ios - WatchConnectivity 如何在多个 WKInterfaceController 之间共享 session ?

标签 ios swift watchos-2 watchconnectivity

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

最佳答案

The other answer没有解释应用程序范围的 session 是否有效。

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

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

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

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

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

您经常会在较窄的问题中找到这些类型的答案,这些问题询问如何在 watch 应用及其复杂功能 Controller 之间共享数据。

关于ios - WatchConnectivity 如何在多个 WKInterfaceController 之间共享 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391480/

相关文章:

ios - WatchOS 2 Flurry 集成

iphone - 如何触发uiview动画再次炒锅

ios - 此 Parse 云代码中声明的数组是否有任何问题?

ios - 在模拟器上旋转 iPhone 时出现 UICollectionViewCell 大小调整问题

swift - 不同格式的swift时间转换

xcode - 将字典传递给 watch

ios - 模态视图 Controller 在 iOS 5.1 中旋转不正确,而不是在 5.0 中

iphone - Testflight 无法识别新设备

swift - 使用 Alamofire 在 Swift 4 ios 中将 Json 对象作为参数值发布

ios - Cocoa Touch Framework 不再与 WatchKit 扩展兼容?我需要 watch 框架?