LoadFileUrl и LoadHtmlString не загружают локальные ресурсы документа - PullRequest
0 голосов
/ 08 февраля 2019

В основном, используя HybridWebView, который использует WKWebview, я загружаю загружаемый HTML-файл с кучей CSS-файлов, которые хранятся в каталоге документов приложения.Пример

var / mobile / Containers / Data / Application / C9D9BB56-79B6-4990-A599-18C6AD928A22 / Documents

Я могу просто отлично загрузить HTML, используя LoadFileUrl или LoadHTMLString, проблема в том, чтоcss и js, на которые ссылаются, не загружаются в webview

Это мой файл url

file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/Unit.html

Базовый URL

file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/

И это пример путик ресурсу, который не загружается, извлекается из сетевого инспектора в Safari.

file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/js/bootstrap.min.js

Не уверен, что я здесь не так делаю.Я даже установил

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>    
    </dict>

в info.plist

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете получить doc dir через NSFileManager.DefaultManager.GetUrl.

Пример загрузки «WebSite» из каталога документов приложения

var docsDir = NSFileManager.DefaultManager.GetUrl(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User, null, true, out var error);
var data = NSUrl.FromFilename(Path.Combine(docsDir.Path, "WebSite", "index.html"));
var content = NSUrl.FromFilename(Path.Combine(docsDir.Path, "WebSite"));
webView.LoadFileUrl(data, content);

Пример загрузки «WebSite» из связанных ресурсов:

var bundlePath = NSBundle.MainBundle.BundlePath;
var data = NSUrl.FromFilename(Path.Combine(bundlePath, "WebSite", "index.html"));
var content = NSUrl.FromFilename(Path.Combine(bundlePath, "WebSite"));
webView.LoadFileUrl(data, content);

Использование загруженного примера веб-сайта Azure

Примечание. Загружается в подкаталог WebSite в NSSearchPathDirectory.DocumentDirectory

├── css
│   └── site.css
├── fonts
│   └── segoeuil.ttf
├── img
│   ├── cloneWhite.svg
│   ├── deployWhite.svg
│   ├── lightbulbWhite.svg
│   ├── stackWhite.svg
│   ├── successCloudNew.svg
│   └── tweetThis.svg
└── index.html

Локальный вывод:

enter image description here

...