rexxar-ios
rexxar-ios copied to clipboard
Rexxar Container 和 Rexxar Web 之间的交互
Rexxar Web 具体前端实现是在 DOM 中加入一个 iframe 来加载此 URL,以来完成对 Rexxar Container 的通知。这种原理和WebViewJavascriptBridge是一样的。 我在想能否让前端发送ajax,由NSURLProtocol做拦截。 尝试的过程中发现拦截到了request,但无法分辨该request由谁发起,所以不知道由哪个controller做相应动作。
- 在 Rexxar 中 Widget 的实现确实是通过 iframe,本质上和JavascriptBridge一样。
- Rexxar 还有另外一种数据服务,ContainerAPI,是通过NSURLProtocol拦截请求来实现的,用来提供一些基础的数据支持,譬如Geo信息。
谢谢解答。 能否有办法让Widget 的实现也通过NSURLProtocol拦截请求来实现呢。
在我们的实践中,request 由谁发起并不太重要。只要请求的 url 符合规则,Rexxar Container 就会做出反应。Rexxar Container 并不参与任何实际的业务。所以,它似乎并不应该关心 request 具体由哪个 controller 发出。
在 RXRWidget
协议中,方法 - (void)performWithController:(RXRViewController *)controller
需要将 controller 以参数传入。这是 Rexxar Container 知道需要对哪个 controller 做反应的地方。但是 Rexxar Container 也只需要知道这个 controller 是一个 RXRViewController 而已。其余 controller 的具体信息就不关心了。
借由这个问题,想要请教一下 @ianwith ,为何Rexxar中实现了两套机制,将widget和ContainerAPI区分开来?理论上,ContainerAPI的基础数据支持功能,同样可以借由widget的机制,将数据回传给js端。想要了解你们这样设计的理由是什么?谢谢!
@lincode 求教!