11

使用 WKWebView 替换 UIWebView

 3 years ago
source link: http://codingnext.com/wkwebview.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近把一个 iOS 项目中的 UIWebView 替换为 WKWebView。这对于我们这种使用了很多 H5 页面的 App 来说的确是一个大更新。 开始前我以为最麻烦的在于有些 UIWebView 中提供了 Javascript 桥接调用原生代码的功能要重新适配。后来发现,因为这部分功能是通过 WebViewJavascriptBridege 实现的,所以反而没有占用很多时间。

我遇到的最大的一个坑是原来的 UIWebView 中的图片是通过原生代码下载后通过一个桥接函数 setImage 重新设置到 img 的 src 属性的(为了统一控制缓存)。但是 WKWebView 中的 img 标签无法将一个本地图片地址设置到 src。最后的解决办法居然是在 App 内启动了一个 Web 服务器。

在项目代码中被改动最大的是原来 UIWebViewDelegate 要全部改成 WKNavigationDelegate。好在原来的方法都能找到对应的版本,理清楚对应关系后就简单了很多。

当我觉得代码都已经替换好了之后,我打包上传到 App Store Connect。 但是我还是立刻收到了邮件提醒我还在使用 UIWebView。后来我才想起来原来很多第三方库中可能没有更新的。 由于我们这个项目没有使用任何包管理工具,所有的第三方库都是直接把静态库文件或者 framework 拖进项目中的。我只能对每个几十个库的二进制文件进行检查。涉及到使用 UIWebView 的,就重新去下载新版本的库文件。还有很多第三方库虽然已经不再使用了,但是代码中还是留着调用。 我不得不把他们一个个去掉。 这一块实在是太花时间了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK