2021/3/16追記
Cordova 10からCustom Schemeプラグインは削除されました。
https://docs.monaca.io/ja/release_notes/20201119_cordova10/
Monacaより「Custom Schemeプラグイン」がリリースされていました。
https://ja.monaca.io/headline/#entry_5e835238e78885e357efb480
これは何?
以下記事の通り、WKWebViewでは、file://スキームのローカルリソース(wwwディレクトリ配下のファイル)にXHRでアクセスすることができません。それを解決するためのプラグインの様です。
https://qiita.com/kishisuke/items/d201790aeae2129ff2e3#file%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%E3%81%B8%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B920200323%E8%BF%BD%E8%A8%98
「このプラグインを利用することで、WKWebView上においても、ローカルに配置されているリソースへのAjaxアクセスが可能となります。」とあります。実際にインストールしてみると、確かにローカルリソース(wwwディレクトリ配下のファイル)にXHRでアクセスできました。
動きを見てみる
デバッグしてみたところ、cordova-plugin-wkwebview-file-xhrの様にXHRをフックしているわけではなく、wwwディレクトリ配下のファイル全体をカスタムスキームを通じてアクセスする手法を取っているようです。
例えば、index.htmlは以下の様なURLになっています。
monaca-app://monaca.io/www/index.html
カスタムスキームではXHRのアクセス制限がないためローカルリソースにアクセスできる様になるわけです。cordova-plugin-wkwebview-file-xhrと異なり、プラグインの初期化を待たずにローカルリソースにアクセスできるため、よりベターな手法です。
なお、カスタムスキームを使ってローカルリソースにアクセスしているということは、WKURLSchemeHandlerを使っているはずです。このAPIはiOS11以降で追加されたため、このプラグインはiOS11以降でしか使用できないものと思われます。(実際に、iOS10ではアプリを起動することができませんでした)
なお、残念ながらこのプラグインはpublicなnpmレジストリで公開されていません。(2020/4/1時点)
Monaca LocalKitやMonaca CLIで開発を行っている場合は、ローカル環境でnpm install
を実行する際に一度package.jsonのdependenciesからmonaca-plugin-customschemeを削除する必要があります。
2020/4/6追記
publicなnpmレジストリで公開されていました!これで、ローカル環境でnpm install
を実行してもエラーになりません。(ただし、中身はpublishされていないようなので、ローカルのCordova環境ではビルドできません。Monacaでビルドしましょう!)
https://www.npmjs.com/package/monaca-plugin-customscheme
余談
ちなみに、Ionicが提供するWKWebViewのEngineもカスタムスキームを使ってローカルリソースにアクセスできます。
MonacaのCustom Schemeプラグインはcordova-plugin-wkwebview-engineと併用できる点が良いですね。次のメジャーバージョンでCordova本体にWKWebViewが統合されるので、