WKWebView loadFileURL создает WebPageProxy :: Игнорирование запроса на загрузку этого основного ресурса, потому что он находится вне песочницы. - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь открыть локальный файл html в WKWebView, но постоянно получаю сообщение об ошибке:

Получил неожиданный URL-адрес от веб-процесса: 'file: /// Users / username /Library/Containers/dev.WebView/Data/file:/Users/username/Documents/WebView/WebView/WebView/WebContent/index.html'

2020-01-30 09: 36: 38.817862 +0100 WebView [1679: 20612] [Process] 0x101043e20 - WebPageProxy :: Игнорирование запроса на загрузку этого основного ресурса, поскольку он находится вне изолированной программной среды

Это код, который я пробовал:

    NSString *path = @"file:///Users/username/Documents/WebView/WebView/WebView/WebContent/index.html";
    NSURL *url = [NSURL fileURLWithPath:path];

    [_webView loadFileURL:url allowingReadAccessToURL:url];

Я также пытался разрешить доступ к каталогу документов с помощью:

    NSString *path = @"file:///Users/username/Documents/WebView/WebView/WebView/WebContent/index.html";
    NSURL *url = [NSURL fileURLWithPath:path];

    NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0];
    [_webView loadFileURL:url allowingReadAccessToURL:documentsURL];

Я также включил исходящие соединения (клиент) в настройках подписи и возможностей проектов, тоже не помогает.

1 Ответ

0 голосов
/ 30 января 2020

Решение - добавить файл html в проект и связать его со сборкой, чтобы он отображался в каталоге Resources. В настройках проекта «Фазы сборки» файл должен отображаться в разделе «Копировать ресурсы комплекта».

Это фрагмент кода, который можно использовать для загрузки файла:

    NSBundle *mainBundle = [NSBundle mainBundle];
    NSString *filePath = [mainBundle pathForResource:@"index" ofType:@"html"];

    NSURL *url = [NSURL fileURLWithPath:filePath];

    [_webView loadFileURL:url allowingReadAccessToURL:[url URLByDeletingLastPathComponent]];

Вы также можете найти полное решение в моем репозитории github: Какао Web View Загрузить локальный файл

...