Cordovaがドキュメントの問題からリソースをロードする(WKwebview)

Aug 21 2020

アプリのすべてのコンテンツを/ Documents /フォルダーにダウンロードする非常にシンプルなCordovaアプリケーションがあります。ここでは、html、画像、css、javascriptを保存します。古いものが非推奨になったため、最近WKWebviewに移動しました。HTMLはドキュメントから読み取られ、ローカルインデックスファイルに追加されます。これはすべて正常に機能します。この後、srcを「file://.../data/Containers/Application/Documents/test.js」(ファイルはそこにあります)に設定して、スクリプトブロックを追加しようとします。残念ながら、これはサポートされていません。次のメッセージが表示されます。リソースの読み込みに失敗しました:操作を完了できませんでした。操作は許可されていません最新のCordovaおよび最新のIOSプラットフォームを使用しています。

誰かがこれを解決する方法についてアイデアを持っていますか?シミュレーターではすべて正常に動作しますが、iPadデバイスでは正常に動作しません。

よろしくお願いします。

ロビン

回答

2 BrunoLaurinec Sep 10 2020 at 02:06

解決策もあります。解決策がないように見えた絶望的な日々の後で見つけたコードに大幅な変更を加える必要はありません。

必要な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;
1 Jeethendra Aug 21 2020 at 18:20

ああ。アプリケーションで2日前にファイルプロトコル「file://」とtarget = '_ blank'のWebリンクを修正しました。WKWebViewに問題があります。しかし、この問題を解決できるプラグインがいくつかあります。

cordova-plugin-wkwebview-file-xhrおよびcordova-plugin-wkwebviewxhrfixプラグインをインストールしてみてください。これにより、ファイルプロトコルの問題が解決されます。