Подтвердить что ты не робот

WKWebView с локальным файлом

Я тестирую WKWebView с локальным файлом, который работает в симуляторе, но он не работает в устройстве

 @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];
}

Я предоставляю URL-адрес от:

    NSURL *presentationFolder = [self.presentationController url];

нормально, потому что я тестировал тот же код с UIWebview и работает!

Я всегда получаю ту же ошибку:

Could not create a sandbox extension for '/'

Это не работа, я думаю, что она будет работать в Objective-C, как в быстрой

iOS Webkit не работает на устройстве, но работает на симуляторе быстро

Любая идея будет оценена, спасибо


Обновление 2-12-2014

Я обнаружил, что это может быть ошибка в iOS 8.1, и она может быть исправлена ​​в версии 8.2

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

Я протестировал перемещение файлов во временную папку, и я не получил никаких ошибок, но webView просто пуст.

Я тестировал один и тот же код (временную папку) с помощью UIWebView и отлично работает!

Кроме того, я пробовал это:

qaru.site/info/58385/...

Как я мог узнать, это работает, потому что css и javascript используются в html.

4b9b3361

Ответ 1

Попробуйте XWebView, у которого очень маленький встроенный http-сервер. Он намного меньше, чем GCDWebServer. A loadFileURL: allowReadAccessToURL метод добавляется через расширение, поэтому вы не знаете о сервере.

Ответ 2

Это работало как прелесть...

@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];