WKWebView主线程获取UserAgent-Swift

前言:

2020年12月底苹果将要全面废除UIWebView的使用,因此今年陆陆续续的将很多的旧的业务中使用的UIWebView进行替换修改,其中遇到了这样我们一个问题:我们项目里需要在所有的网络请求的Header里把浏览器的UA带上去,之前用到的是UIWebView,在一个全局变量懒加载中获取,现在要修改成WKWebView. 替换后发现WKWebView报错,查明原因是因为WKWebView的evaluateJavaScript不是在主线程执行,但是我们的业务需求是必须在主线程的节奏上获取ua.下面的是记录:

1.UIWebView获取UserAgent

通过StringByEvalutingJavaScript执行js代码来获取UA

2.WKWebView获取UserAgent

通过evaluateJavaScript来获取,但是这个方法是在异步线程执行的,如果不做任何处理的话,因为当前的webview很快会释放,因此就会报错:

Error Domain=WKErrorDomain Code=3 "The WKWebView was invalidated"

所以就要在结果返回前阻塞当前线程.  利用run(mode:RunLoop.Mode, before limitDate:Date)方法

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容