WatchKit
中的一个问题是从主应用程序到WatchKit
扩展的通信。一些通过发送达尔文通知或与MMWormhole
做的方法。如何通过存储“回复”块来在iOS应用程序和WatchKit扩展之间进行通信?
是否有可能通过将扩展程序发送给handleWatchKitExtensionRequest
的回复块存储在属性上来执行此操作?例如:
@property (atomic,copy) void (^watchKitReply)(NSDictionary *);
然后,当应用程序想要将某些内容发送到扩展程序时,它会使用此易于使用的块。
如果扩展想要与主应用进行通信,它将发送一个新的应答块,该应答块将存储在该属性上。旧的将被使用并丢弃。
如果没有,为什么这是不可能的?
我会对这方面的更多细节非常感兴趣。在我的测试中,有一个挂起的回复块阻止了进一步的通信。 – SarahR 2015-04-07 04:27:55
我仍在测试,但似乎您需要使用它们生成的相同顺序使用回复块。如果你使用的是更新的版本,它会一直等待直到旧版本发布。 – 2015-04-07 10:01:59
这非常有趣。我从来没有注意到,这是发生在我建立我的系统的方式。我没有通过答复传递信息,而是通过MMWormhole。这使我能够监视数据更改并在单个工作流程中解析这些更改。如果我要在回复块中返回请求数据,那么我将不得不解析那里的数据,以及我正在监视MMWormhole通知的位置。它使得在单一地点处理所有事情变得更容易。缺点是我没有注意到订单的重要性。 – cnoon 2015-04-07 14:43:45