WebViewJavaScriptBridge源码解析(一)

来源:互联网 发布:java接口开发demo下载 编辑:程序博客网 时间:2024/05/18 14:42

js调用native的原理

  1. js中通过bridgehandler{name,data,func()}传入Native中对应的注册名,需要传给Native的数据,和供Native返回数据时候调用的函数指针。
  2. 然后把
[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {        NSLog(@"testObjcCallback called: %@", data);        responseCallback(@"Response from testObjcCallback");    }];

然后执行handler,js发过来的数据就可以让我们在native使用。方法中的block就会被执行,然后调用responseCallback(),我们之前注册的responseCallback(id data)就会被执行,然后responseCallback()中带的data就会发送到js的方法中。在js的方法中会执行responseCallback()方法,然后文章开头那个func()就会被调用,得到native返回的数据。

总结

说白了就是js传数据和函数指针(类比block)到native,native获取数据,并执行这个函数指针,就能在接收到数据后,再把一些数据传给js。

js和native分别维护着自己的很多消息数组,回调数组,操作数组…很多。

native通过执行js代码来获取消息数组里面这些数据和指针,获取后把数据中的操作名称拿出来看自己的这边维护的操作数组里面有没有注册这个操作,有就执行操作(handler)。

至于回调,那就是纯正的一个native操作(handler)中执行作为它参数带过来的一个带参数的block,这个block通过native调用js代码,来把数据传到js。

0 0