加载html文件后,处理html中的交互1.页面跳转(导航还是应该归native负责)2.调用native3.触发注入的方法和数据(算做调用native的一个特例)问题:1.如何避免别人引用(保护数据的话,数据接口由native端来完成,通过access token来达到)
handlerName:handlerNamedata:datacallback:callback
1.双向都是通过接口send、registerHandler和callHandler来互通的;2.send的消息处理由双向的defaultHandler来处理;(web环境的defaultHandler是由init函数参数传入的,而native环境下的则是由BridgeWebView.setDefaultHandler设定的)3.registerHandler与另外环境的callHandler交互;4.native能收到结果,是通过shouldOverrideUrlLoading中调用回调达成的(native中一次调用js通过通过iframe.src来产生messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;)和messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://return/_fetchQueue/' + messageQueueString;产生2个消息(shouldOverrideUrlLoading接收)来处理
在HTML环境中调用Android/Java中的方法(正常加载了html文件条件下)1.通过在html中注入特殊标识(Shema等)做到的(加载后的交互产生调用)2.(加载过程中的调用)是否存在这种场景【数据加载】问题:1.返回数据的机制
doSend,映射回调并将消息入队列
加载本地WebViewJavascriptBridge.js
加载html文件,并初始化bridge环境1.加载bradge.js2.成功加载后,注入能被native端调用的方法问题:1.如果加载过程中出现差错,如何处理?2.页面是否有访问权限的需求,如何实现?3.如何调试?【WebView.setWebContentsDebuggingEnabled(true)】
CallBackFunction
bridge.js?version(服务器端)
handlerName:nulldata:datacallback:(option)
能被web端调用
WebViewJavascriptBridge.send
调用web端函数
loadUrl
this.loadUrl(javascriptCommand);执行javascript:WebViewJavascriptBridge._handleMessageFromNative('%s');
调用Web端函数
http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
WebViewJavascriptBridge.callHandler
HTML
Android/Java
否
如果过程中,有消息入队列,则处理队列中的消息
成功
BridgeWebView.send
BridgeWebView
WebViewClient.onReceivedError
Message
BridgeWebView.callHandler
是