WKWebViewでlocalなHTMLを読み込む

2015/04/18

#import <WebKit/WebKit.h>

WKWebView* otherWebView ;
NSFileManager *fm = [NSFileManager defaultManager];
NSString *path ;
NSString* tmpPath ;
NSData* data ;

CheckedChangedotherWebView = [[ WKWebView alloc ]initWithFrame:frame] ;

CheckedChangedpath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
CheckedChangedtmpPath = [NSTemporaryDirectory() stringByAppendingString:@"test.html"];
CheckedChangeddata = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:path]] ;
CheckedChanged
CheckedChanged[fm createFileAtPath:tmpPath contents:data attributes:nil];
CheckedChanged
CheckedChangedNSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:tmpPath]];
CheckedChanged
CheckedChanged[ otherWebView loadRequest:request ];


iOS8で追加されたWKWebViewの利用に関してです。

このWKWebViewを使ってアプリ内のHTMLを表示しようとすると、

Could not create a sandbox extension for '/'

なるログが表示され、HTMLが表示されません。

調べてみると、WKWebViewでリソースにアクセスすることはOSのセキュリティ上不可であるとのことなのです。(勘違いしていたらすいません)

WKWebViewがアクセスできるのは、アプリのtmpディレクトリのみで、ローカルのHTMLを読み込むときは、
一旦リソースのHTMLをtmpディレクトリにコピーしてから、このコピーしたファイルを拾いに行かなければならないのです。

今回のソースは、上記の一連の流れを実行し、最終的にWKWebViewでローカルなHTMLを表示することのできるコードとなっています。

同じくWKWebViewで悩んでいた方、もしくは、tmpディレクトリの利用を考えていた方への参考になれば幸いです。

なお、上記の問題
なんとiOS9で解消されるとのこと。あれだけ悩んだのに・・・