錯(cuò)誤日志:
Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
白屏場(chǎng)景:
第一:使用WKWebView調(diào)用H5微信支付;
第二:這樣要呼起微信,在微信支付界面,點(diǎn)擊取消支付;
第三:這個(gè)時(shí)候回到WKWebView的h5界面,刷新結(jié)果頁(yè)面,此頁(yè)面有重新支付按鈕,
第四:多次重復(fù)前面步驟,出現(xiàn)了白屏,日志出現(xiàn)了上述錯(cuò)誤,通過對(duì)比發(fā)現(xiàn)WKCompositingView不見了;前后臺(tái)切換后,界面又能正常顯示出來,很是奇怪,如下圖:左邊是白屏,右邊是正常。
注意:多次呼起第三方微信App出現(xiàn)的現(xiàn)象,在App多次打開多個(gè)H5頁(yè)面暫未發(fā)現(xiàn)白屏現(xiàn)象;

解決方案
在viewDidAppear回調(diào)進(jìn)行遍歷WKWebView的subviews,查找WKCompositingView是否存在來判斷是否白屏;出現(xiàn)白屏可以關(guān)閉頁(yè)面或者重新構(gòu)造WKWebView頁(yè)面,經(jīng)過測(cè)試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;
}