移动开拓中的Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台……
基于 WebView 的通讯首要有两个途径,一个是通过体系或私有要领,获取 WebView 傍边的 JSContext,行使体系封装的基于 JSCore 的函数通讯;另一类是通过建设自界说 Scheme 的 iframe Dom,客户端在回调中举办拦截实现。 UIWebView & WKWebView 体系级 在 UIWebView 期间没有提供体系级的函数举办 Web 与 Native 的交互,绝大部门 App 都是通过 WebViewJavascriptBridge(下节先容)来举办通讯,而因为 JavascriptCore 的存在,对付 UIWebView 来说只要有用的获取到内部的 JSContext,也可以到达目标。今朝已知的有用获取 Context 的私有要领如下:
在 WKWebView 中提供了体系级的 Web 和 Native 通信机制,通过 Message Handler 的封装使开拓服从有了很大的晋升。同时体系封装了 JavaScript 工具和 Objective-C 工具的转换逻辑,也进一步低落了行使的门槛。
拦截自界说 Scheme 哀求 - WebViewJavascriptBridge 因为私有要领的不变性与考核风险,开拓者不肯意行使上文提到的 UIWebView 获取 JSContext 的方法举办通讯,以是凡是都回收基于 iframe 和自界说 Scheme 的 JavascriptBridge 举办通讯。固然在之后的 WKWebView 提供了体系函数,可是大部门 App 都必要兼容 UIWebView 与 WKWebView,以是今朝的行使范畴如故异常普及。 相同的开源框架有许多,可是无外乎都是 Web 侧按照牢靠的名目建设包括通讯信息的 Request,之后建设隐式 iframe 节点哀求;Native 侧在响应的 WebView 回调中理会 Request 的 Scheme,之后凭证名目理会数据并处理赏罚。 而对付数据转达和回调处理赏罚的题目,在兼容两种 WebView、一连更新的 WebViewJavascriptBridge 中,iframe Request 没有直接转达数据,而是 Web 和 Native 侧维护配合的参数或回调 Queue,Native 通过 Request 中 Scheme 的理会触发对 Queue 里数据的读取。 2. 离开 WebView 的通讯 JavaScriptCore JavascriptCore JavascriptCore 一向作为 WebKit 中内置的 JS 引擎行使,在 iOS7 之后,Apple 对原有的 C/C++ 代码举办了 OC 封装,成为体系级的框架供开拓者行使。作为一个引擎来讲,JavascriptCore 的词法、语法说明,以及多条理的 JIT 编译技能都是值得深入发掘和进修的偏向,因为篇幅的限定临时不做深入的接头。 JavascriptCore.framework 固然 JavascriptCore.framework 只袒露了较少的头文件和体系函数,但却提供了在 App 中离开 WebView 执行 JavaScript 的情形和手段。
行使 JavascriptCore 举办通讯 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |