Cordovaがドキュメントの問題からリソースをロードする(WKwebview)
アプリのすべてのコンテンツを/ Documents /フォルダーにダウンロードする非常にシンプルなCordovaアプリケーションがあります。ここでは、html、画像、css、javascriptを保存します。古いものが非推奨になったため、最近WKWebviewに移動しました。HTMLはドキュメントから読み取られ、ローカルインデックスファイルに追加されます。これはすべて正常に機能します。この後、srcを「file://.../data/Containers/Application/Documents/test.js」(ファイルはそこにあります)に設定して、スクリプトブロックを追加しようとします。残念ながら、これはサポートされていません。次のメッセージが表示されます。リソースの読み込みに失敗しました:操作を完了できませんでした。操作は許可されていません最新のCordovaおよび最新のIOSプラットフォームを使用しています。
誰かがこれを解決する方法についてアイデアを持っていますか?シミュレーターではすべて正常に動作しますが、iPadデバイスでは正常に動作しません。
よろしくお願いします。
ロビン
回答
解決策もあります。解決策がないように見えた絶望的な日々の後で見つけたコードに大幅な変更を加える必要はありません。
必要な2つのステップがあります:
まず、config.xmlを次のように更新します
<platform name="ios">
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
</platform>
次に、文書化されていない方法を使用してfile://リンクを変換します
window.WkWebView.convertFilePath(filePath)
このメソッドは、ファイルにアクセスできるようにし、WkWebViewの制限をバイパスする仮想ローカルホストリンクへの変換を実行します。少し長いサンプルは次のようになります
let localFile = cordova.file.dataDirectory + 'logo.png';
let convertedPath = window.WkWebView.convertFilePath(localFile);
document.getElementById("myImg").src = convertedPath;
ああ。アプリケーションで2日前にファイルプロトコル「file://」とtarget = '_ blank'のWebリンクを修正しました。WKWebViewに問題があります。しかし、この問題を解決できるプラグインがいくつかあります。
cordova-plugin-wkwebview-file-xhrおよびcordova-plugin-wkwebviewxhrfixプラグインをインストールしてみてください。これにより、ファイルプロトコルの問題が解決されます。