如何在AppDelegate中使用“[WCSession defaultSession] sendMessage”时在watchOS 2的特定接口控制器中接收消息

时间:2016-06-09 13:08:21

标签: ios objective-c watchkit watch-os-2 wcsession

我正在使用watchOS 2Xcode 7.3。我在手表应用程序中有3个接口控制器(IC)。我正在使用"[WCSession defaultSession] sendMessage"方法在3个不同的场景中从AppDelegate向这3个IC发送消息。所有3个IC都提供接收方法。但该消息主要在第3个IC中收到。如何在特定IC中接收消息。

3 个答案:

答案 0 :(得分:2)

我建议你做一些重新设计,现在你的接口控制器正在做"网络"和模型工作。

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

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

答案 1 :(得分:1)

您可以检查您发送的词典的键。您可以使用三个不同的密钥,然后检查它是否是正确的接口控制器的正确密钥。

答案 2 :(得分:0)

在观看应用扩展程序的ExtensionDelegate.m中提供 didReceiveMessage 方法。在 sendMessage 方法中传递消息所针对的接口控制器的名称。在if-else条件下,使用通知中心调用目标接口控制器中的方法。