2014-12-19 3 views
8

wkWebView에서 360 개의 파노라마 콘텐츠를 보여주는 iOS 앱을 개발 중입니다. 페이지가로드를 수행하지만 메모리 경고를 수신 할 때 아이 패드 2메모리 경고 후 WKWebView가 비어 있습니다.

에 빈보기를 보여줍니다 관련 코드 :

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://360yerevan.com/mobilembed/91001/"] ]; 


NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; 

WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; 
WKUserContentController *wkUController = [[WKUserContentController alloc] init]; 
[wkUController addUserScript:wkUScript]; 

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; 
wkWebConfig.userContentController = wkUController; 
wkWebConfig.processPool = [[WKProcessPool alloc] init]; 

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkWebConfig]; 

[self.view addSubview:webView]; 
[webView loadRequest:req]; 

이 아이폰 5/5S에 잘 작동합니다.

의견이 있으십니까?

+0

이 문제도 조사 중입니다. 우리의 경우에는 샌드 박스 된 WkWebView.WebContent 프로세스가 응용 프로그램의 빈 화면을 벗어나 충돌하는 것 같습니다. 어디에서 메모리 경고를 보았습니까? 이러한 로그를 공유 할 수 있습니까? 여기에서 문제를 논의 중입니다. https://github.com/Telerik-Verified-Plugins/WKWebView/issues/41 – IjzerenHein

+1

webView에 대한 강력한 참조를 유지하려고 시도 할 수 있습니다. – Yinfeng

+0

감사합니다 @ Yinfeng 당신의 대답은 매우 도움이됩니다. –

답변

3

iOS 9 이상에서는 WebContent 프로세스가 충돌 할 때 WKNavigationDelegate 메소드 webViewWebContentProcessDidTerminate을 사용하여 catch 할 수 있습니다. 충돌에 대응하는 방법은 사용자가 결정할 수 있지만 페이지를 다시로드하는 것만으로 충분하다면 [webView reload]은 아래 그림과 같이 트릭을 수행합니다.

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { 
    // Reload current page, since we have crashed the WebContent process 
    // (most likely due to memory pressure) 
    [webView reload]; 
} 

iOS8 이하에서는 myWKWebViewInstance.title이 nil인지 확인할 수 있습니다.

관련 문제