记一个iOS WKWebView无法调试的坑
问题复现
这一部分在过去的几年一直是没啥问题的,然而上个月(2023年3月),我在某天突然发现safari里面看不到可供调试的远程页面了,一直显示如下提示:无可检查的应用程序。
这就很坑了,因为没法调试意味着看不到js里面的报错信息,只能靠猜,运行的东西也无法用consle.log来显示,只能alert出来。
问题解决
又过了大概一周,实在是受不了无法调试这种状况,于是再次尝试翻出去搜索,结果居然发现有人碰到了同样的问题,最后翻到了解释,
原文大概是:Across all platforms supportingWKWebVieworJSContext, a new property is available calledisInspectable(inspectablein Objective-C). It defaults tofalse, and you can set it totrueto opt-in to content being inspectable.
也就是某版本更新以后,新增了个isInspectable的属性,而且默认是关闭的。而我电脑上之所以老版本可以调试,新版本迁移后不可以是因为老版本的target platform设置是15,而我的新项目里面设置的是default,于是自动带出16.4的新特性了。
解决的办法有两种,比较简单粗暴的的可以直接在xcode中project设置里面把Deployment Target中的版本设置为16.4以前的版本。
如果想设置为更高版本的话,则需要在代码中添加配置项来开启调试,如下:
let webConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.isInspectable = true
WKWebViewConfiguration *webConfiguration = [WKWebViewConfiguration new];
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:webConfiguration];
webView.inspectable = YES;
很烦,为什么还要解决这些玩意!