2014-12-01 12 views
10

sto testando il WKWebView con file locale, che sta lavorando nel simulatore, ma non funziona nel dispositivoWKWebView con file locali

@interface EDPresentationViewController()<WKNavigationDelegate,WKScriptMessageHandler> 


    @property(nonatomic,strong)WKWebView *webView; 

    @property(nonatomic,strong)EDPresentationController *presentationController; 

@end 


@implementation EDPresentationViewController 

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.presentationController = [[EDPresentationController alloc]init]; 

    WKWebViewConfiguration *webConfiguration = [[WKWebViewConfiguration alloc]init]; 
    self.webView = [[WKWebView alloc]initWithFrame:self.view.frame configuration:webConfiguration]; 

    NSURL *presentationFolder = [self.presentationController url]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:presentationFolder]; 

    [self.webView loadRequest:request]; 
} 

mi conceda l'url da:

NSURL *presentationFolder = [self.presentationController url]; 

è ok, perché ho testato lo stesso codice con UIWebview e funziona!

ottengo sempre lo stesso errore:

Could not create a sandbox extension for '/' 

Questo non era un lavoro, credo che avrebbe funzionato in Objective-C come in rapida

iOS Webkit not working on device, but works on simulator at swift

Qualsiasi idea sarà apprezzato , grazie


Aggiornamento 2-12-2014

ho scoperto che questo potrebbe essere un bug in iOS 8.1 e può essere fissato in 8,2

https://devforums.apple.com/thread/247777?start=25&tstart=0

Ho testato spostare i file nella cartella temporanea e non ho avuto alcun errore ma il webView è solo vuoto.

Ho provato lo stesso codice (cartella temporanea) con UIWebView e funziona perfettamente!

Inoltre, ho provato questo:

https://stackoverflow.com/a/26054170/426180

Come ho potuto scoprire, questo funziona perché il CSS e il codice JavaScript viene Embebed nel codice HTML.

+0

Non credo che sia un bug, che stava lavorando sulle versioni beta e ha smesso di funzionare sul finale 8.0 rilascio, Apple lo sa e non lo ha ancora risolto – jcesarmobile

+0

Beh, quello peggio di un bug :), anche se forse funzionava nelle beta perché il codice css e javascript è embebed. Grazie per il tuo commento – xarly

+0

BTW, sembra che la versione 8.2 beta non possa caricare i file locali o – jcesarmobile

risposta

1

Il tutto ha funzionato come un fascino ...

@interface ViewController() <WKScriptMessageHandler, WKNavigationDelegate> 

...

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; 
WKUserContentController *controller = [[WKUserContentController alloc] init]; 

configuration.userContentController = controller; 
[configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"]; 
self.webView = [[WKWebView alloc] initWithFrame:[UIScreen mainScreen].bounds configuration:configuration]; 
self.webView.navigationDelegate = self; 
// Also if you'd have bouncing problem 
self.webView.scrollView.bounces = false; 
self.webView.scrollView.alwaysBounceVertical = false; 
[self.view addSubview:self.webView]; 

NSString* productURL = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"htmlapp/home.html"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:productURL]]; 
[self.webView loadRequest:request];