如何通过存储 "reply" 块在 iOS 应用程序和 WatchKit 扩展之间进行通信?
How to communicate between an iOS app and the WatchKit extension by storing the "reply" block?
WatchKit
中的一个问题是从主应用程序到 WatchKit
扩展程序的通信。通过发送 Darwin 通知或 MMWormhole
.
的一些方法
是否可以通过在 属性 上存储由分机发送至 handleWatchKitExtensionRequest
的回复块来实现?类似于:
@property (atomic,copy) void (^watchKitReply)(NSDictionary *);
然后,当应用想要向扩展程序发送内容时,它会使用这个随时可用的块。
如果扩展想要与主应用程序通信,它将发送一个新的回复块,该块将存储在 属性 上。旧的将被使用和丢弃。
如果不是,为什么这不可能?
你绝对可以做到这一点。我会小心,但不要每次都踩到你的 watchKitReply
属性 并创建一种不同的方式来允许多个 reply
对象。
我们在 Watch Extension/iOS 应用程序集成中所做的是创建一组 WatchKitRequest
请求。然后将每个回复块转发到执行请求实现的每个 WatchKitRequest
子类,然后 reply
块在完成时执行。本质上,我们完全按照您的建议进行操作,即存储 reply
块,直到您真正需要调用它为止。我们只是存储 reply
块,与您建议的有所不同。
这种方法对我们非常有效。希望这有助于让您朝着正确的方向前进。
WatchKit
中的一个问题是从主应用程序到 WatchKit
扩展程序的通信。通过发送 Darwin 通知或 MMWormhole
.
是否可以通过在 属性 上存储由分机发送至 handleWatchKitExtensionRequest
的回复块来实现?类似于:
@property (atomic,copy) void (^watchKitReply)(NSDictionary *);
然后,当应用想要向扩展程序发送内容时,它会使用这个随时可用的块。
如果扩展想要与主应用程序通信,它将发送一个新的回复块,该块将存储在 属性 上。旧的将被使用和丢弃。
如果不是,为什么这不可能?
你绝对可以做到这一点。我会小心,但不要每次都踩到你的 watchKitReply
属性 并创建一种不同的方式来允许多个 reply
对象。
我们在 Watch Extension/iOS 应用程序集成中所做的是创建一组 WatchKitRequest
请求。然后将每个回复块转发到执行请求实现的每个 WatchKitRequest
子类,然后 reply
块在完成时执行。本质上,我们完全按照您的建议进行操作,即存储 reply
块,直到您真正需要调用它为止。我们只是存储 reply
块,与您建议的有所不同。
这种方法对我们非常有效。希望这有助于让您朝着正确的方向前进。