项目中WKWebview 暂时未解决问题
2018-06-07 本文已影响65人
neobuger
问题1
WKWebView 加载白屏问题 Could not signal service com.apple.WebKit.WebContent
解决方案:
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView API_AVAILABLE(macosx(10.11), ios(9.0));
在此方法中 让webview reload
[self.webview reload];
但是实际此方法没有进!
问题2
WKWebView 添加js交互方法后的 内存泄漏
项目中问题是:网页播放器在播放视频,退出后仍然在后台播放
解决方案:
-
方案1
新建WKWebViewConfiguration,通过WKWebViewConfiguration,来配置与js交互的方法
@interface WeakScriptMessageDelegate : NSObject<WKScriptMessageHandler>
@property (nonatomic, weak) id<WKScriptMessageHandler> scriptDelegate;
- (instancetype)initWithDelegate:(id<WKScriptMessageHandler>)scriptDelegate;
@end
@implementation WeakScriptMessageDelegate
- (instancetype)initWithDelegate:(id<WKScriptMessageHandler>)scriptDelegate {
self = [super init];
if (self) {
_scriptDelegate = scriptDelegate;
}
return self;
}
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
[self.scriptDelegate userContentController:userContentController didReceiveScriptMessage:message];
}
@end
在我的项目实际没有效果
-
方案2
在ViewController的viewWillisappear方法中移除removeScriptMessageHander
由于webview是添加在控制器中,所以可以给webview添加如下方法
- (void)removeScriptMessageHander {
WKUserContentController *userCC = self.webView.configuration.userContentController;
[userCC removeScriptMessageHandlerForName:@"xxxx"];
}
在ViewController的viewWillisappear中调用
但是 还是没有效果。
-
方案3
在ViewController的viewWillisappear方法中移除webview
ok 解决!
***