ios - 如何在使用 AppDelegate 的 "[WCSession defaultSession] sendMessage"时在 watchOS 2 的特定接口(interface) Controller 中接收消息

标签 ios objective-c watchkit watchos-2 wcsession

我正在使用 watchOS 2Xcode 7.3。我在 watch 应用程序中有 3 个接口(interface) Controller (IC)。我正在使用 "[WCSession defaultSession] sendMessage" 方法在 3 个不同场景中从 AppDelegate 向这 3 个 IC 发送消息。接收方法在所有 3 个 IC 中提供。但是消息主要是在第三个 IC 中接收到的。我应该怎么做才能收到特定 IC 中的消息。

最佳答案

我建议进行一些重新架构,因为现在您的界面 Controller 正在执行“网络”和模型工作。

我推荐的方法是创建一个作为 WCSession 委托(delegate)的“持久性管理器”。接收到的任何数据都会被持久化,然后使用观察者或通知模式将更改通知给代码的其他部分。然后他们将继续并重新运行任何数据查询并更新他们的 UI(如果与他们呈现的 UI 相关的任何内容已更新(将新条目添加到表行、新项目被收藏等))。

这有很多优点,例如降低接口(interface) Controller 的复杂性,更好地分离关注点;但也许最重要的是,它使您的扩展程序能够在后台运行(没有界面 Controller 可见),但能够接收数据、保存数据,然后在下次应用程序启动时利用它。

关于ios - 如何在使用 AppDelegate 的 "[WCSession defaultSession] sendMessage"时在 watchOS 2 的特定接口(interface) Controller 中接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37726912/

相关文章:

objective-c - 从整数组装日期对象?

iphone - 如何将文本字段中的文本插入到警报 View 中

ios - 将 WCSession 与多个 ViewController 一起使用

ios - 绘制一条 SKShapeNode 线 color-gradient 从一种颜色到另一种颜色

ios - WatchKit 中的网络可达性检查

objective-c - Apple Watch (WatchKit) 推送操作

ios - 屏幕尺寸(例如 4 英寸 iPhone 尺寸)准确吗?

iphone - 调用-createDirectoryAtURL : causes crash

ios - 如何创建 Airbnb iOS App Explore 选项卡?

ios - iOS应用程序无法正确打开rss feed