パルカワ2

PerlとRubyとイチャラブ

最近のnative_webview

FlutterでWebViewをがんばる その2 - パルカワ2

github.com

前にWebViewの話を書いて、native_webviewというライブラリを自作した話を書いた。
すでにプロダクションで利用していて色々やったけど、最近だとBasic認証がかかっててもアクセスできるようにしたり、callHandlerを読み込み中でも実行できるようにしたりした。

inappwebviewや前のnative_webviewはすべての読み込みが完了するまで、callHandlerが実行できない。
すべての読み込みというのは、画像なども含むので、大きい画像やレスポンスを返さない通信が残っていると長時間JSを実行できない問題があった。
なので、callHandlerをはやいタイミングでも実行できるように変更した。

あとFlutter 1.20でAndroidでもhybrid compositionを使えるようになったので、それに対応してAndroid+WebViewでのキーボードまわりの問題を全解決や!と思ってたけど、今のFlutter 1.20でflutter driveを動かすとすべてのテストがこけてしまうのでマージはやめておいた。公式のwebview_flutterでも1.22リリースまで待つらしいので、native_webviewも待つことになると思う。

[webview_flutter] Add new entrypoint that uses hybrid composition on Android by bparrishMines · Pull Request #2883 · flutter/plugins · GitHub
Use PlatformViewLink by hisaichi5518 · Pull Request #79 · hisaichi5518/native_webview · GitHub


hybrid compositionを使うとAndroid 8とかでfpsがガクッと下がる問題がある。ただ自分が使う用途ではWebViewを小さくして表示してスクロールすることはないのであんまり関係なさそうだなと感じている。ちなみにAndroid 10では解決できるAPIがありそれを利用しているので問題は起きないとのこと。たしかにAndroid 8では再現したがAndroid 10では再現しなかった。

Bad hybrid composition performance on Android · Issue #62303 · flutter/flutter · GitHub

あとはe2eがintegration_testに名前が変わっていたので追従した。

今後は、Android WebViewでPDFが表示できないのでダウンロードするとか何らかの方法で対応する予定