Swift同步方式自定义WKWebView的UserAgent解决UserAgent第二次才生效的问题
程序员文章站
2021-12-28 21:38:21
...
之前写过一篇 iOS开发Swift修改WKWebView默认的UserAgent,但好像是有点BUG的,因为上次的方式的使用异步的方式去获取和设置UserAgent,那么问题就出现了,当第一次打开网页的时候,并没有生效,必须要第二次打开网页的时候,我们自定义的UserAgent才会生效。后来研究了很久,通过同步的方式去设置解决了这个问题,来记录一下。
其实设置方法比异步的要简单很多。上代码:
override func viewDidLoad() { super.viewDidLoad() guard let url = URL(string: open_url) else{ return } //若url无效会导致wkwebview崩溃 if UIApplication.shared.canOpenURL(url) == false { return } self.automaticallyAdjustsScrollViewInsets = false self.view.backgroundColor = UIColor.white // Do any additional setup after loading the view. webView = WKWebView(frame: CGRect(x: 0, y:0, width: self.view.frame.size.width, height: self.view.frame.height-kNavbarH)) webView.navigationDelegate = self webView.uiDelegate = self let request = URLRequest(url: url) webView.isHidden=true if var userAgent = webView.value(forKey: "userAgent") as? String { if userAgent.hasSuffix("AutohigoDMS") == false { userAgent = "AutohigoDMS" // 设置global User-Agent self.webView.customUserAgent = userAgent } } self.view.addSubview(webView) webView.load(request) /** 增加的属性: 1.webView.estimatedProgress加载进度 2.backForwardList 表示historyList 3.WKWebViewConfiguration *configuration; 初始化webview的配置 */ webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil) progressView = UIProgressView(frame: CGRect(x: 0, y: (self.navigationController?.navigationBar.height)!-2, width: UIScreen.main.bounds.size.width, height: 3)) progressView.trackTintColor = UIColor.white progressView.progressTintColor = RGBColor(141, g: 189, b: 76) self.navigationController?.navigationBar.addSubview(progressView) //返回事件 let item = UIBarButtonItem.init(image: UIImage.init(named: "navbar_back"), style: .plain, target: self, action: #selector(backItemPressed)) self.navigationItem.leftBarButtonItem = item }
上面是整个自定义View的viewDidLoad方法,其实最核心的代码如下:
if var userAgent = webView.value(forKey: "userAgent") as? String { if userAgent.hasSuffix("AutohigoDMS") == false { userAgent = "AutohigoDMS" // 设置global User-Agent self.webView.customUserAgent = userAgent } }
通过以上的设置我们就可以的自定义WKWebView的UserAgent了
若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。
想获取DD博客最新代码,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。
或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)。
如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。
为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)。
感谢你的访问,祝你生活愉快、工作顺心、欢迎常来逛逛。