Ответ 1
Попробуйте XWebView, у которого очень маленький встроенный http-сервер. Он намного меньше, чем GCDWebServer. A loadFileURL: allowReadAccessToURL метод добавляется через расширение, поэтому вы не знаете о сервере.
Я тестирую 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 и отлично работает!
Кроме того, я пробовал это:
Как я мог узнать, это работает, потому что css и javascript используются в html.
Попробуйте XWebView, у которого очень маленький встроенный http-сервер. Он намного меньше, чем GCDWebServer. A loadFileURL: allowReadAccessToURL метод добавляется через расширение, поэтому вы не знаете о сервере.
Это работало как прелесть...
@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];