项目中WKWebview 暂时未解决问题

问题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

@property (nonatomic, weak) id scriptDelegate;

- (instancetype)initWithDelegate:(id)scriptDelegate;

@end
@implementation WeakScriptMessageDelegate

- (instancetype)initWithDelegate:(id)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 解决!
***

你可能感兴趣的:(项目中WKWebview 暂时未解决问题)