I need to embed html5 games in my app. (Embed into binary, in a such way that i don't need internet connection). I open index.html with loadHTMLString(htmlContentString, baseURL: "myschemename:///index.html") I implement WKURLSchemeHandler and face strange problem: XMLHttpRequest and fetch request gets status code "0" and response.ok "false", despite the fact that I returned the data from WKURLSchemeHandler
WKURLSchemeHandler code:
class MyURLSchemeHandler: NSObject, WKURLSchemeHandler {
func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
let fileData = ...// code that find file on disk and read it
urlSchemeTask.didReceive(URLResponse(
url: urlSchemeTask.request.url!,
mimeType: fileURL.mimeType(),
expectedContentLength: fileData.count,
textEncodingName: "utf-8")
)
urlSchemeTask.didReceive(fileData)
urlSchemeTask.didFinish()
}
}
Html code that is
<!DOCTYPE html>
<html>
<script>
fetch("myschemename:///data.json")
.then((response) => {
if (response.ok) {
console.log("ok");
} else {
console.log("error");
}
});
</script>
<body>
</body>
</html>