错误日志:
Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
白屏场景:
第一:使用WKWebView调用H5微信支付;
第二:这样要呼起微信,在微信支付界面,点击取消支付;
第三:这个时候回到WKWebView的h5界面,刷新结果页面,此页面有重新支付按钮,
第四:多次重复前面步骤,出现了白屏,日志出现了上述错误,通过对比发现WKCompositingView不见了;前后台切换后,界面又能正常显示出来,很是奇怪,如下图:左边是白屏,右边是正常。
注意:多次呼起第三方微信App出现的现象,在App多次打开多个H5页面暂未发现白屏现象;
解决方案
在viewDidAppear回调进行遍历WKWebView的subviews,查找WKCompositingView是否存在来判断是否白屏;出现白屏可以关闭页面或者重新构造WKWebView页面,经过测试reload,loadRequest没有效果;
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
BOOL isblank = [self isBlankView:self.webView];
if (isblank)
{
[self performSelector:@selector(dismissViewController) withObject:nil afterDelay:0.1];
}
}
- (void)dismissViewController
{
[self.navigationController popViewControllerAnimated:YES];
}
/*
* 判断是否白屏(WKCompositingView不存在)
* YES:blank
*/
- (BOOL)isBlankView:(UIView*)view
{
//NSLog(@"root:%@", NSStringFromClass(view.class));
Class wkCompositingView = NSClassFromString(@"WKCompositingView");
if ([view isKindOfClass:[wkCompositingView class]])
{
return NO;
}
for (UIView *subView in view.subviews)
{
//NSLog(@"child:%@", NSStringFromClass(subView.class));
if (![self isBlankView:subView])
{
return NO;
}
}
return YES;
}
网友评论