2017-05-04 14 views
2

私のアプリケーションでは、リソースバンドルの一部としてindex.htmlがあり、それはテンプレートとして機能します。さまざまなリソースへのパスがあります。私はそれをWKWebviewにロードし、アプリケーションがオンラインであればすべて正常に動作し、すべてのリソースはWebからロードされ、ページは完璧です。オフラインの場合はWKWebView:iOSのドキュメントフォルダからコンテンツをロード

、私は書類にこれらのリソースをダウンロードしていますアプリでのフォルダとIndex.htmlと例えば

<image src = "file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Icon.png"> 
    <a href="file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Data.html"> 

にオフラインのパスとオンラインパスを置き換えるしかし、Index.htmlとは、それをロードすることができません。私はwkWebView.load(URLRequest(url: URL(string: "file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Data.html")!))を使用してWebviewにData.htmlを直接ロードしようとしましたが、動作しますが、Index.html経由で読み込もうとすると動作しなくなります。

ほとんどの人がGCDWebServerのようなWebサーバーを持っていると言っていますが、それは唯一の方法ですか?私がそれを使用すると、この問題は解決されますか?

+0

おそらく問題を示す[MCVE]と書くべきです。 – pvg

答えて

-1

私の要件は、実行時にjavaスクリプトを使用して、ドキュメントやキャッシュフォルダからIndex.htmlのリソースをロード/変更することでした。 (私はパスをハードコーディングしていません。私はファイルマネージャーを使用しています)。その間、私はfile://プロトコルを使ってリソースにアクセスできませんでした。今日私は私の問題を実証するためのサンプルアプリケーションを試してみました。今私の主なプロジェクトにアクセスし、何がうまくいかないかを確認する必要があります。

このサンプルプロジェクトでは、キャッシュフォルダからパスを渡して実行時にイメージのsrcを変更しようとしています。

WKWebViewAccessDocuments

1

OSにダウンロードしたファイルの場所を尋ねていますか?ターゲットディレクトリは通知されなくても変更できます。ハードコードされた場所を使用すると、ディレクトリ構造が変更されても成功しません。あなたは、このようなあなたのユーザーの書き込み可能なキャッシュフォルダを指すURLを取得する必要があります:

let userCachesDirectoryURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0] 

あなたがそのURLにあなたのファイル名(全体ではなく、パス)を追加することができることをしたら。私はちょうど私のプログラムの1つにその行の結果を印刷し、いくつかのフォルダが私のアプリで使われているのを見ました。

まだ試してみてください。まだ固まっている場合はお知らせください。私はサンプルコードを書くことができます...(私が自由になるとすぐに)。

+0

私は問題を解決したと思う。 – anoop4real

関連する問題